class Unsub::Service::Sensu

Attributes

http[R]

Public Class Methods

new(url, log) click to toggle source
# File lib/unsub/service/sensu.rb, line 6
def initialize url, log
  uri   = URI.parse url
  @http = Net::HTTP.new uri.host, uri.port
  @log  = log
end

Public Instance Methods

delete_client(host) click to toggle source
# File lib/unsub/service/sensu.rb, line 25
def delete_client host
  success = if name = host[:sensu_name]
    delete_client = Net::HTTP::Delete.new '/clients/%s' % name
    response = http.request delete_client
    response.kind_of? Net::HTTPSuccess
  end

  log.info service: 'sensu', event: 'delete_client', host: host, success: success
  success
end
extend_host(host) click to toggle source
# File lib/unsub/service/sensu.rb, line 13
def extend_host host
  name = if ip = host[:ip]
    client = sensu_clients.select { |c| c[:address] == ip }.shift
    client.nil? ? nil : client[:name]
  end

  old_host = host.dup ; host.merge! sensu_name: name if name
  log.info service: 'sensu', event: 'extend_host', old_host: old_host, host: host
  host
end

Private Instance Methods

sensu_clients(limit=1000, offset=0, results=[]) click to toggle source
# File lib/unsub/service/sensu.rb, line 39
def sensu_clients limit=1000, offset=0, results=[]
  loop do
    endpoint = '/clients?limit=%d&offset=%d' % [ limit, offset ]
    request  = Net::HTTP::Get.new endpoint
    response = http.request request
    clients  = JSON.parse response.body, symbolize_names: true

    return results if clients.empty?
    results += clients
    offset  += limit
  end
end