GENERATED_PREFIX="./generated/"
nagios_filename = {};
-%w(hosts hostgroups services dependencies hostextinfo serviceextinfo servicegroups).each{
+%w(hosts hostgroups services dependencies servicegroups).each{
|x| nagios_filename[x] = GENERATED_PREFIX+"auto-#{x}.cfg"
}
nagios_filename['nrpe'] = GENERATED_PREFIX+"nrpe_#{ ORG }.cfg"
}
end
-
- set_complain_if_set service['_extinfo'], 'service_description' , service['service_description'], 'serviceextinfo', service['service_description']
- set_complain_if_set service['_extinfo'], 'host_name' , hosts.sort.join(',') , 'serviceextinfo', service['service_description']
-
- print_block files['serviceextinfo'], 'serviceextinfo', service['_extinfo'], %w()
end
# hostlists in services can be given as both, single hosts and hostgroups
return hosts
end
-# Move all elements that have a key that starts with "extinfo-"
-# into the _extinfo subhash
-def split_away_extinfo(hash)
- hash['_extinfo'] = {}
- hash.keys.each{ |key|
- if key[0, 8] == 'extinfo-'
- hash['_extinfo'][ key[8, key.length-8] ] = hash[key]
- hash.delete(key);
- end
- }
-end
-
-
#############################################################################################
#############################################################################################
#############################################################################################
config['hostgroups'].each_pair{ |name, hg|
throw "Empty hostgroup or hostgroup #{name} not a hash" unless hg.kind_of?(Hash)
- split_away_extinfo hg
hg['_memberlist'] = []
}
config['servers'].each_pair{ |name, server|
throw "Empty server or server #{name} not a hash" unless server.kind_of?(Hash)
- split_away_extinfo server
-
throw "No hostgroups defined for #{name}" unless server['hostgroups']
server['_hostgroups'] = server['hostgroups'].split(/,/).map{ |x| x.strip };
server['_hostgroups'] << 'all'
set_if_unset server, 'check_command', HOST_ALIVE_CHECK unless server['pingable'] == false
print_block files['hosts'] , 'host' , server , %w(hostgroups pingable no-servicegroups)
-
-
-
- # Handle hostextinfo
- # 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
- }
-
- 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')
- set_if_unset server['_extinfo'], 'statusmap_image' , server['_extinfo']['icon_image'] if server['_extinfo'].has_key?('icon_image')
-
- print_block files['hostextinfo'], 'hostextinfo', server['_extinfo'], %w()
}
config['services'].each{ |service|
throw "Empty service or service not a hash" unless service.kind_of?(Hash)
- split_away_extinfo service
-
# make sure the depends list is an array
service['depends'] = ensure_array( service['depends'] )