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]}"
}
[host, service].each{ |source|
contacts.push source[k] if source.has_key?(k)
}
- service[k] = contacts.join(",") unless contacts.empty?
+ service[k] = contacts.sort.join(",") unless contacts.empty?
}
end
set_complain_if_set s, 'host_name', host, 'Service', s['service_description']
merge_contacts(servers[host], s)
- print_block files['services'], 'service', s, %w(nrpe runfrom remotecheck
- depends
- hosts hostgroups excludehosts excludehostgroups)
+ exclude_keys = %w(nrpe runfrom remotecheck
+ depends
+ hosts hostgroups excludehosts excludehostgroups)
+ if servers[host]['no-servicegroups']
+ exclude_keys << 'servicegroups'
+ end
+ print_block files['services'], 'service', s, exclude_keys
}
if service['depends']
set_complain_if_set service['_extinfo'], 'service_description' , service['service_description'], 'serviceextinfo', service['service_description']
- set_complain_if_set service['_extinfo'], 'host_name' , hosts.join(',') , '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
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)
next if hg['private']
throw "Empty hostgroup #{name}" if hg['_memberlist'].length == 0
- set_complain_if_set hg, 'hostgroup_name', name , 'Hostgroup', name
- set_complain_if_set hg, 'members' , hg['_memberlist'].join(","), 'Hostgroup', name
+ set_complain_if_set hg, 'hostgroup_name', name , 'Hostgroup', name
+ set_complain_if_set hg, 'members' , hg['_memberlist'].sort.join(","), 'Hostgroup', name
print_block files['hostgroups'], 'hostgroup', hg, %w()
}
split_away_extinfo service
+ # make sure the depends list is an array
+ service['depends'] = ensure_array( service['depends'] )
# Both 'name' and 'service_description' are valid for a service's name
# Internally we only use service_description as that's nagios' official term