class Bosh::Monitor::DirectorMonitor

Public Class Methods

new(config) click to toggle source
# File lib/bosh/monitor/director_monitor.rb, line 3
def initialize(config)
  @nats = config.nats
  @logger = config.logger
  @event_processor = config.event_processor
end

Public Instance Methods

subscribe() click to toggle source
# File lib/bosh/monitor/director_monitor.rb, line 9
def subscribe
  EM.schedule do
    @nats.subscribe('hm.director.alert') do |message, _, subject|
      @logger.debug("RECEIVED: #{subject} #{message}")
      alert = Yajl::Parser.parse(message)

      if valid_payload?(alert)
        @event_processor.process(:alert, alert)
      end
    end
  end
end

Private Instance Methods

valid_payload?(payload) click to toggle source
# File lib/bosh/monitor/director_monitor.rb, line 24
def valid_payload?(payload)
  missing_keys = %w(id severity title summary created_at) - payload.keys
  valid = missing_keys.empty?

  unless valid
    first_missing_key = missing_keys.first
    @logger.error("Invalid payload from director: the key '#{first_missing_key}' was missing. #{payload.inspect}")
  end

  valid
end