class Proxy::Monitoring::IcingaDirector::Provider
Public Instance Methods
create_host(host, attributes)
click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/monitoring_icingadirector_main.rb, line 12 def create_host(host, attributes) payload = host_payload(host, attributes) check_templates_exist(payload[:imports]) client.post('host', payload.to_json) end
query_host(host)
click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/monitoring_icingadirector_main.rb, line 7 def query_host(host) response = client.get("host?name=#{host}") parse_response(response) end
remove_host(host)
click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/monitoring_icingadirector_main.rb, line 26 def remove_host(host) client.delete("host?name=#{host}") end
update_host(host, attributes)
click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/monitoring_icingadirector_main.rb, line 18 def update_host(host, attributes) payload = host_payload(host, attributes) check_templates_exist(payload[:imports]) client.put("host?name=#{host}", payload.to_json) rescue RestClient::NotModified true end
Private Instance Methods
check_templates_exist(templates)
click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/monitoring_icingadirector_main.rb, line 32 def check_templates_exist(templates) templates.each do |template| raise "Template #{template} not found." unless template_exists?(template) end end
client()
click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/monitoring_icingadirector_main.rb, line 71 def client DirectorClient.instance end
host_payload(host, attributes)
click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/monitoring_icingadirector_main.rb, line 46 def host_payload(host, attributes) { :object_name => host, :object_type => 'object', :address => attributes.delete('ip'), :address6 => attributes.delete('ip6'), :imports => attributes.delete('templates') || ['foreman_host'], :vars => attributes } end
parse_response(response)
click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/monitoring_icingadirector_main.rb, line 57 def parse_response(response) response = JSON.parse(response) ip = response.delete('address') ip6 = response.delete('address6') templates = response.delete('imports') result = { 'ip' => ip, 'ip6' => ip6, } result.merge!('templates' => templates) if templates != ['foreman_host'] result.merge!(response['vars'] || {}) result end
template_exists?(template)
click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/monitoring_icingadirector_main.rb, line 38 def template_exists?(template) result = client.get("host?name=#{template}") result = JSON.parse(result) result['object_type'] == 'template' rescue Proxy::Monitoring::NotFound false end