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]}"
}
# 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')