class Proxy::Monitoring::IcingaDirector::DirectorClient

Public Class Methods

instance() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 8
def self.instance
  @instance ||= new
end

Public Instance Methods

client(url) click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 12
def client(url)
  RestClient::Resource.new(
    request_url(url),
    request_options
  )
end
delete(url) click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 44
def delete(url)
  logger.debug "IcingaDirector: DELETE request to #{url}"
  client(url).delete.body
rescue StandardError => e
  raise handle_http_exception(e, url)
end
get(url) click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 23
def get(url)
  logger.debug "IcingaDirector: GET request to #{url}"
  client(url).get.body
rescue StandardError => e
  raise handle_http_exception(e, url)
end
post(url, payload) click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 30
def post(url, payload)
  logger.debug "IcingaDirector: POST request to #{url} with payload: #{payload}"
  client(url).post(payload).body
rescue StandardError => e
  raise handle_http_exception(e, url)
end
put(url, payload) click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 37
def put(url, payload)
  logger.debug "IcingaDirector: PUT request to #{url} with payload: #{payload}"
  client(url).put(payload).body
rescue StandardError => e
  raise handle_http_exception(e, url)
end
request_url(url) click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 19
def request_url(url)
  URI.join(baseurl, url).to_s
end

Private Instance Methods

auth_options() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 61
def auth_options
  return {} unless basic_auth?
  {
    user: user,
    password: password,
  }
end
baseurl() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 92
def baseurl
  Proxy::Monitoring::IcingaDirector::Plugin.settings.director_url + '/'
end
basic_auth?() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 69
def basic_auth?
  user && password
end
cacert() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 104
def cacert
  Proxy::Monitoring::IcingaDirector::Plugin.settings.director_cacert
end
handle_http_exception(e, url) click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 79
def handle_http_exception(e, url)
  case e
  when RestClient::ResourceNotFound
    Proxy::Monitoring::NotFound.new("Icinga Director returned not found for #{request_url(url)}.")
  when RestClient::Unauthorized
    Proxy::Monitoring::AuthenticationError.new("Error authenicating to Icinga Director at #{request_url(url)}: #{e.message}")
  when RestClient::NotModified
    raise
  else
    Proxy::Monitoring::Error.new("Error connecting to Icinga Director at #{request_url(url)}: #{e.message}")
  end
end
password() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 100
def password
  Proxy::Monitoring::IcingaDirector::Plugin.settings.director_password
end
request_headers() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 73
def request_headers
  {
    'Accept' => 'application/json'
  }
end
request_options() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 53
def request_options
  {
    headers: request_headers,
    ssl_ca_file: cacert,
    verify_ssl: verify_ssl?
  }.merge(auth_options)
end
user() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 96
def user
  Proxy::Monitoring::IcingaDirector::Plugin.settings.director_user
end
verify_ssl?() click to toggle source
# File lib/smart_proxy_monitoring_icingadirector/director_client.rb, line 108
def verify_ssl?
  Proxy::Monitoring::Icinga2::Plugin.settings.verify_ssl
end