Thanks, now I understand - this wasn't clear from the docs.

Am 28.05.2015 um 20:04 schrieb Michael Friedrich:
> Am 27.05.2015 um 07:27 schrieb Klaus Muth:
>> Hi
>>
>> I'm trying to define and use a global function in icinga2 and failing 
>> miserable:
>>
>> in functions.conf:
>> function test(str) {
>>      str = str.replace("X", "u")
>>      return "bla"+str.replace("bla", "blubb")
>> }
>>
>> this does reload without error.
>>
>> In host object:
>> object Host "gnarf" {
>>      import "generic-host"
>>      # more config [...]
>>      action_url = "bla" + test("XXbrrrm bla")
>> }
>>
>> gives me a
>> critical/config: Error: Invalid field access (for value of type 'Host'): 
>> 'test'
> 
> Icinga 2 is right about that. Using user-defined functions in object 
> attributes are limited to a defined scope. Currently that's just 
> supported for
> 
> * custom attributes
> * set_if in command arguments w/ boolean return values
> * command attribute in *Command objects
> * expressions (assign/ignore where) w/ boolean return values
> 
> Given that you are using string replace two times, it would be more 
> reasonable at the time to define a local variable and use built-in 
> prototype functions for the string type. 
> http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/library-reference#string-type
> 
> imagine /etc/icinga2/conf.d # cat test.conf
> ...
> object Host "foo" {
>    import "generic-host"
>    vars.bla = "abcdefghijklmnopqrstuvwxyz"
>    var t = vars.bla.replace("a", "b")
>    var u = t.replace("b", "c")
> 
>    action_url = "ß" + t
> }
> 
> imagine /etc/icinga2/conf.d # icinga2 object list --name foo
> Object 'foo' of type 'Host':
>    % declared in '/etc/icinga2/conf.d/test.conf', lines 6:1-6:17
>    * __name = "foo"
>    * action_url = "ßbbcdefghijklmnopqrstuvwxyz"
>      % = modified in '/etc/icinga2/conf.d/test.conf', lines 12:3-12:23
>    * address = ""
>    * address6 = ""
>    * check_command = "hostalive"
>      % = modified in '/etc/icinga2/conf.d/templates.conf', lines 19:3-19:29
>    * check_interval = 60
>      % = modified in '/etc/icinga2/conf.d/templates.conf', lines 16:3-16:21
>    * check_period = ""
>    * command_endpoint = ""
>    * display_name = "foo"
>    * enable_active_checks = true
>    * enable_event_handler = true
>    * enable_flapping = false
>    * enable_notifications = true
>    * enable_passive_checks = true
>    * enable_perfdata = true
>    * event_command = ""
>    * flapping_threshold = 30
>    * groups = [ ]
>    * icon_image = ""
>    * icon_image_alt = ""
>    * max_check_attempts = 5
>      % = modified in '/etc/icinga2/conf.d/templates.conf', lines 15:3-15:24
>    * name = "foo"
>    * notes = ""
>    * notes_url = ""
>    * retry_interval = 30
>      % = modified in '/etc/icinga2/conf.d/templates.conf', lines 17:3-17:22
>    * templates = [ "foo", "generic-host" ]
>      % = modified in '/etc/icinga2/conf.d/test.conf', lines 6:1-6:17
>      % = modified in '/etc/icinga2/conf.d/templates.conf', lines 14:1-14:28
>    * type = "Host"
>    * vars
>      * bla = "abcdefghijklmnopqrstuvwxyz"
>        % = modified in '/etc/icinga2/conf.d/test.conf', lines 8:3-8:41
>    * volatile = false
>    * zone = ""
> 
> 
> 
> Given user-defined functions in combination with object attributes I 
> remember discussing that with Gunnar a while ago, but IIRC this is not 
> that simple to support, neither context-wise nor implementation-wise. 
> Although I cannot find any referenced issue in the development tracker, 
> so feel free to propose a feature request, or sponsor a patch even.
> 
> So you'll see, Icinga 2 is more than just playing with stuff. But 
> certainly you'll acknowledge the fact that developers should enjoy their 
> software while granting you free license and usage.
> 
> Regards,
> Michael
> 
> PS: https://twitter.com/dnsmichi/status/603984281514434561
> 
> 
> 


Freundliche Grüße
-- 
Klaus Muth
HAGOS eG                   Industriestr. 62     fon:   (+49) 711 78805-7086
EDV-Programmierung         70565  Stuttgart     fax: (+49) 711 78805-957035
http://www.hagos.de            Germany                 mailto:[email protected]

HAGOS Verbund deutscher Kachelofen- und Luftheizungsbauerbetriebe eG
Sitz:                      Stuttgart
Rechtsform:                Genossenschaft
Registergericht:           Stuttgart GnR 77
Vorstände:                 Guido Eichel, Ralf Tigges
Aufsichtsratsvorsitzender: Thomas Müller
USt.-ID-Nr.:               DE 147799748
_______________________________________________
icinga-users mailing list
[email protected]
https://lists.icinga.org/mailman/listinfo/icinga-users

Reply via email to