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