load_extensions(options={})
click to toggle source
def load_extensions(options={})
@extensions = Extensions.get(options)
log_concerns(@extensions.warnings)
extension_settings = @settings.to_hash.dup
@extensions.all.each do |extension|
extension.logger = @logger
extension.settings = extension_settings
end
end
load_settings(options={})
click to toggle source
def load_settings(options={})
@settings = Settings.get(options)
log_concerns(@settings.warnings)
failures = @settings.validate
unless failures.empty?
@logger.fatal('invalid settings')
log_concerns(failures, :fatal)
@logger.fatal('SENSU NOT RUNNING!')
exit 2
end
end
log_concerns(concerns=[], level=:warn)
click to toggle source
def log_concerns(concerns=[], level=:warn)
concerns.each do |concern|
message = concern.delete(:message)
@logger.send(level, message, redact_sensitive(concern))
end
end
pause()
click to toggle source
def pause
@state = :paused
end
resume()
click to toggle source
def resume
@state = :running
end
setup_logger(options={})
click to toggle source
def setup_logger(options={})
@logger = Logger.get(options)
@logger.setup_signal_traps
end
setup_process(options)
click to toggle source
def setup_process(options)
if options[:daemonize]
daemonize
end
if options[:pid_file]
write_pid(options[:pid_file])
end
end
setup_redis()
click to toggle source
def setup_redis
@logger.debug('connecting to redis', {
:settings => @settings[:redis]
})
@redis = Redis.connect(@settings[:redis])
@redis.on_error do |error|
@logger.fatal('redis connection error', {
:error => error.to_s
})
stop
end
@redis.before_reconnect do
unless testing?
@logger.warn('reconnecting to redis')
pause
end
end
@redis.after_reconnect do
@logger.info('reconnected to redis')
resume
end
end
setup_signal_traps()
click to toggle source
def setup_signal_traps
@signals = Array.new
STOP_SIGNALS.each do |signal|
Signal.trap(signal) do
@signals << signal
end
end
EM::PeriodicTimer.new(1) do
signal = @signals.shift
if STOP_SIGNALS.include?(signal)
@logger.warn('received signal', {
:signal => signal
})
stop
end
end
end
setup_transport()
click to toggle source
def setup_transport
transport_name = @settings[:transport][:name] || 'rabbitmq'
transport_settings = @settings[transport_name]
@logger.debug('connecting to transport', {
:name => transport_name,
:settings => transport_settings
})
Transport.logger = @logger
@transport = Transport.connect(transport_name, transport_settings)
@transport.on_error do |error|
@logger.fatal('transport connection error', {
:error => error.to_s
})
stop
end
@transport.before_reconnect do
unless testing?
@logger.warn('reconnecting to transport')
pause
end
end
@transport.after_reconnect do
@logger.info('reconnected to transport')
resume
end
end
start()
click to toggle source
def start
@state = :running
end
stop()
click to toggle source
def stop
@state = :stopped
@logger.warn('stopping reactor')
EM::stop_event_loop
end