mips-aql-0[45]: new hosts at AQL
[mirror/dsa-nagios.git] / config / build-nagios
index 53b441d..28513c9 100755 (executable)
@@ -131,9 +131,7 @@ $nrpe = Nrpe.new()
 def print_block(fd, kind, hash, exclude_keys)
        fd.puts "define #{kind} {"
        hash.keys.sort.each{ |key|
-               next if key == '_extinfo'
-               next if key == '_hostgroups'
-               next if key == '_memberlist'
+               next if key[0,1] == '_'
                next if exclude_keys.include? key
                fd.puts "       #{key}          #{hash[key]}"
        }
@@ -178,7 +176,6 @@ def addService(hosts, service, files, servers)
 
                exclude_keys = %w(nrpe runfrom remotecheck
                                  depends
-                                 no-servicegroups
                                  hosts hostgroups excludehosts excludehostgroups)
                if servers[host]['no-servicegroups']
                        exclude_keys << 'servicegroups'
@@ -335,22 +332,24 @@ config['servers'].keys.sort.each{ |name|
        set_if_unset        server, 'use'          , HOST_TEMPLATE_NAME
        set_if_unset        server, 'check_command', HOST_ALIVE_CHECK    unless server['pingable'] == false
 
-       print_block files['hosts']      , 'host'       , server            , %w(hostgroups pingable)
+       print_block files['hosts']      , 'host'       , server            , %w(hostgroups pingable no-servicegroups)
 
 
 
        # Handle hostextinfo
-       #config['hostgroups'][  server['_hostgroups'].first  ]['_extinfo'].each_pair{ |k, v|
-       # find the first hostgroup that has extinfo
-       extinfo = server['_hostgroups'].collect{ |hgname | config['hostgroups'][hgname]['_extinfo'] }.delete_if{ |ei| ei.size == 0 }.first
-       if extinfo then
-               extinfo.each_pair do |k, v|
-                       # substitute hostname into the notes_url
-                       v = sprintf(v,name) if k == 'notes_url'
-
-                       set_if_unset server['_extinfo'], k ,v
+       # Compose extinfo from all the hostgroups for each server
+       config['hostgroups'].each_pair{ |hgname, hostgroup|
+               next unless server['_hostgroups'].include?(hgname)
+               hostgroup['_extinfo'].each_pair do |k, v|
+                       if v.empty?
+                               server['_extinfo'].delete(k)
+                       else
+                               # substitute hostname into the notes_url
+                               v = sprintf(v,name) if k == 'notes_url'
+                               server['_extinfo'][k] = v
+                       end
                end
-       end
+       }
 
        set_complain_if_set server['_extinfo'], 'host_name'       , name, 'hostextinfo', name
        set_if_unset        server['_extinfo'], 'vrml_image'      , server['_extinfo']['icon_image'] if server['_extinfo'].has_key?('icon_image')