I put together a workaround that I am not entirely satisfied with. It
leaves a lot to be desired.

I modified my config generation outside icinga to create a file with a
"const" variable "const all_clusters", an array containing all the
cluster names. I have icinga2.conf including this file, so that my
other files can make use of the all_clusters variable.

Then in the file where I define my service objects, I do a for loop like this:

for (i in all_clusters) {
  object Service "check cluster location throttled" use(i) {
    var dummyhost = get_host(i)
    if (i.vars.check_location_throttled == "true") {
        <bunch of stuff to set up a real service check referencing
only the hosts that are in this cluster>
    } else {
        <bunch of stuff to set up a dummy always OK service check>
    } // end if
  } // end object
} //end for

The end result is that for my clusters that I need to create a
"location throtlled" cluster check, it gets created. For my clusters
that don't need it, a dummy service check gets created.

It works, but obviously a bunch of unnecessary service checks are
getting created. This kludgey workaround is necessary because I cannot
call "get_host()" *outside* of a Service object, only inside. If I
could call it outside, then only those Service objects that I want
would get created.

I'm still looking for a better solution, if anyone has any thoughts.
_______________________________________________
icinga-users mailing list
icinga-users@lists.icinga.org
https://lists.icinga.org/mailman/listinfo/icinga-users

Reply via email to