Class: Sensu::API
- Inherits:
-
Sinatra::Base
- Object
- Sinatra::Base
- Sensu::API
- Defined in:
- lib/sensu/api.rb
Class Method Summary collapse
- .bootstrap(options = {}) ⇒ Object
- .run(options = {}) ⇒ Object
- .setup_rabbitmq ⇒ Object
- .setup_redis ⇒ Object
- .start ⇒ Object
- .stop ⇒ Object
- .test(options = {}) ⇒ Object
- .trap_signals ⇒ Object
Class Method Details
.bootstrap(options = {}) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/sensu/api.rb', line 24 def bootstrap(={}) base = Base.new() $logger = base.logger $settings = base.settings base.setup_process if $settings[:api][:user] && $settings[:api][:password] use Rack::Auth::Basic do |user, password| user == $settings[:api][:user] && password == $settings[:api][:password] end end end |
.run(options = {}) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/sensu/api.rb', line 16 def run(={}) EM::run do bootstrap() start trap_signals end end |
.setup_rabbitmq ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/sensu/api.rb', line 55 def setup_rabbitmq $logger.debug('connecting to rabbitmq', { :settings => $settings[:rabbitmq] }) $rabbitmq = RabbitMQ.connect($settings[:rabbitmq]) $rabbitmq.on_error do |error| $logger.fatal('rabbitmq connection error', { :error => error.to_s }) stop end $rabbitmq.before_reconnect do $logger.warn('reconnecting to rabbitmq') end $rabbitmq.after_reconnect do $logger.info('reconnected to rabbitmq') end $amq = $rabbitmq.channel end |
.setup_redis ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/sensu/api.rb', line 36 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 $logger.warn('reconnecting to redis') end $redis.after_reconnect do $logger.info('reconnected to redis') end end |
.start ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/sensu/api.rb', line 75 def start setup_redis setup_rabbitmq Thin::Logging.silent = true bind = $settings[:api][:bind] || '0.0.0.0' Thin::Server.start(bind, $settings[:api][:port], self) end |
.stop ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/sensu/api.rb', line 83 def stop $logger.warn('stopping') $rabbitmq.close $redis.close $logger.warn('stopping reactor') EM::stop_event_loop end |
.test(options = {}) ⇒ Object
109 110 111 112 |
# File 'lib/sensu/api.rb', line 109 def test(={}) bootstrap() start end |
.trap_signals ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/sensu/api.rb', line 91 def trap_signals $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 |