sensu 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,11 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sensu (0.6.7)
4
+ sensu (0.7.0)
5
5
  amqp (= 0.7.4)
6
6
  async_sinatra
7
7
  em-hiredis
8
8
  em-syslog
9
+ hashie
9
10
  json
10
11
  thin
11
12
  uuidtools
@@ -29,6 +30,7 @@ GEM
29
30
  callsite (~> 0.0.5)
30
31
  eventmachine
31
32
  eventmachine (0.12.10)
33
+ hashie (1.1.0)
32
34
  hiredis (0.3.2)
33
35
  json (1.6.1)
34
36
  mime-types (1.16)
data/lib/sensu/api.rb CHANGED
@@ -9,7 +9,7 @@ module Sensu
9
9
  def self.run(options={})
10
10
  EM.run do
11
11
  self.setup(options)
12
- self.run!(:port => @settings['api']['port'])
12
+ self.run!(:port => @settings.api.port)
13
13
 
14
14
  Signal.trap('INT') do
15
15
  EM.stop
@@ -24,8 +24,8 @@ module Sensu
24
24
  def self.setup(options={})
25
25
  config = Sensu::Config.new(options)
26
26
  @settings = config.settings
27
- set :redis, EM::Hiredis.connect('redis://' + @settings['redis']['host'] + ':' + @settings['redis']['port'].to_s)
28
- connection = AMQP.connect(symbolize_keys(@settings['rabbitmq']))
27
+ set :redis, EM::Hiredis.connect('redis://' + @settings.redis.host + ':' + @settings.redis.port.to_s)
28
+ connection = AMQP.connect(@settings.rabbitmq.to_hash.symbolize_keys)
29
29
  set :amq, MQ.new(connection)
30
30
  end
31
31
 
@@ -68,8 +68,8 @@ module Sensu
68
68
  unless events_exist == 0
69
69
  conn.redis.hgetall('events:' + client).callback do |events|
70
70
  Hash[*events].keys.each do |check_name|
71
- check = {'name' => check_name, 'issued' => Time.now.to_i, 'status' => 0, 'output' => 'Client is being removed'}
72
- conn.amq.queue('results').publish({'client' => client, 'check' => check}.to_json)
71
+ check = {:name => check_name, :issued => Time.now.to_i, :status => 0, :output => 'Client is being removed'}
72
+ conn.amq.queue('results').publish({:client => client, :check => check}.to_json)
73
73
  end
74
74
  EM.add_timer(5) do
75
75
  conn.redis.srem('clients', client)
@@ -160,7 +160,12 @@ module Sensu
160
160
  }'
161
161
  conn.redis.set('client:test', client).callback do
162
162
  conn.redis.sadd('clients', 'test').callback do
163
- conn.redis.hset('events:test', 'test', {'status' => 2, 'output' => 'CRITICAL', 'occurrences' => 1}.to_json).callback do
163
+ conn.redis.hset('events:test', 'test', {
164
+ :status => 2,
165
+ :output => 'CRITICAL',
166
+ :flapping => false,
167
+ :occurrences => 1
168
+ }.to_json).callback do
164
169
  conn.redis.set('stash:test/test', '{"key": "value"}').callback do
165
170
  status 201
166
171
  body nil
data/lib/sensu/client.rb CHANGED
@@ -23,69 +23,78 @@ module Sensu
23
23
  def initialize(options={})
24
24
  config = Sensu::Config.new(:config_file => options[:config_file])
25
25
  @settings = config.settings
26
- @checks_in_progress = Array.new
27
26
  end
28
27
 
29
28
  def setup_amqp
30
- connection = AMQP.connect(symbolize_keys(@settings['rabbitmq']))
29
+ connection = AMQP.connect(@settings.rabbitmq.to_hash.symbolize_keys)
31
30
  @amq = MQ.new(connection)
32
- @keepalive_queue = @amq.queue('keepalives')
33
- @result_queue = @amq.queue('results')
34
31
  end
35
32
 
36
33
  def setup_keepalives
37
- @keepalive_queue.publish(@settings['client'].merge({'timestamp' => Time.now.to_i}).to_json)
34
+ keepalive_queue = @amq.queue('keepalives')
35
+ @settings.client.timestamp = Time.now.to_i
36
+ keepalive_queue.publish(@settings.client.to_json)
38
37
  EM.add_periodic_timer(30) do
39
- @keepalive_queue.publish(@settings['client'].merge({'timestamp' => Time.now.to_i}).to_json)
38
+ @settings.client.timestamp = Time.now.to_i
39
+ keepalive_queue.publish(@settings.client.to_json)
40
40
  end
41
41
  end
42
42
 
43
+ def publish_result(check)
44
+ @result_queue ||= @amq.queue('results')
45
+ @result_queue.publish({
46
+ :client => @settings.client.name,
47
+ :check => check.to_hash
48
+ }.to_json)
49
+ end
50
+
43
51
  def execute_check(check)
44
- result = {'client' => @settings['client']['name'], 'check' => check}
45
- if @settings['checks'].has_key?(check['name'])
46
- unless @checks_in_progress.include?(check['name'])
47
- @checks_in_progress.push(check['name'])
52
+ @checks_in_progress ||= Array.new
53
+ if @settings.checks.key?(check.name)
54
+ unless @checks_in_progress.include?(check.name)
55
+ @checks_in_progress.push(check.name)
48
56
  unmatched_tokens = Array.new
49
- command = @settings['checks'][check['name']]['command'].gsub(/:::(.*?):::/) do
57
+ command = @settings.checks[check.name].command.gsub(/:::(.*?):::/) do
50
58
  key = $1.to_s
51
- unmatched_tokens.push(key) unless @settings['client'].has_key?(key)
52
- @settings['client'][key].to_s
59
+ unmatched_tokens.push(key) unless @settings.client.key?(key)
60
+ @settings.client[key].to_s
53
61
  end
54
62
  if unmatched_tokens.empty?
55
63
  execute = proc do
56
64
  IO.popen(command + ' 2>&1') do |io|
57
- result['check']['output'] = io.read
65
+ check.output = io.read
58
66
  end
59
- result['check']['status'] = $?.exitstatus
60
- result
67
+ check.status = $?.exitstatus
61
68
  end
62
69
  publish = proc do |result|
63
- @result_queue.publish(result.to_json)
64
- @checks_in_progress.delete(result['check']['name'])
70
+ publish_result(check)
71
+ @checks_in_progress.delete(check.name)
65
72
  end
66
73
  EM.defer(execute, publish)
67
74
  else
68
- result['check']['status'] = 3
69
- result['check']['output'] = 'Missing client attributes: ' + unmatched_tokens.join(', ')
70
- @result_queue.publish(result.to_json)
71
- @checks_in_progress.delete(check['name'])
75
+ check.status = 3
76
+ check.output = 'Missing client attributes: ' + unmatched_tokens.join(', ')
77
+ check.internal = true
78
+ publish_result(check)
79
+ @checks_in_progress.delete(check.name)
72
80
  end
73
81
  end
74
82
  else
75
- result['check']['status'] = 3
76
- result['check']['output'] = 'Unknown check'
77
- @result_queue.publish(result.to_json)
78
- @checks_in_progress.delete(check['name'])
83
+ check.status = 3
84
+ check.output = 'Unknown check'
85
+ check.internal = true
86
+ publish_result(check)
87
+ @checks_in_progress.delete(check.name)
79
88
  end
80
89
  end
81
90
 
82
91
  def setup_subscriptions
83
92
  @check_queue = @amq.queue(UUIDTools::UUID.random_create.to_s, :exclusive => true)
84
- @settings['client']['subscriptions'].each do |exchange|
93
+ @settings.client.subscriptions.each do |exchange|
85
94
  @check_queue.bind(@amq.fanout(exchange))
86
95
  end
87
96
  @check_queue.subscribe do |check_json|
88
- check = JSON.parse(check_json)
97
+ check = Hashie::Mash.new(JSON.parse(check_json))
89
98
  execute_check(check)
90
99
  end
91
100
  end
data/lib/sensu/config.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rubygems' if RUBY_VERSION < '1.9.0'
2
2
  require 'optparse'
3
3
  require 'json'
4
+ require 'hashie'
4
5
  require 'uuidtools'
5
6
  require 'amqp'
6
7
  require 'em/syslog'
@@ -12,29 +13,29 @@ module Sensu
12
13
 
13
14
  def initialize(options={})
14
15
  config_file = options[:config_file] || '/etc/sensu/config.json'
15
- @settings = JSON.parse(File.open(config_file, 'r').read)
16
+ @settings = Hashie::Mash.new(JSON.parse(File.open(config_file, 'r').read))
16
17
  validate_config
17
18
  end
18
19
 
19
20
  def validate_config
20
- @settings['checks'].each do |name, info|
21
- unless info['interval'].is_a?(Integer) && info['interval'] > 0
21
+ @settings.checks.each do |name, details|
22
+ unless details.interval.is_a?(Integer) && details.interval > 0
22
23
  raise 'configuration invalid, missing interval for check ' + name
23
24
  end
24
- unless info['command'].is_a?(String)
25
+ unless details.command.is_a?(String)
25
26
  raise 'configuration invalid, missing command for check ' + name
26
27
  end
27
- unless info['subscribers'].is_a?(Array) && info['subscribers'].count > 0
28
+ unless details.subscribers.is_a?(Array) && details.subscribers.count > 0
28
29
  raise 'configuration invalid, missing subscribers for check ' + name
29
30
  end
30
31
  end
31
- unless @settings['client']['name'].is_a?(String)
32
+ unless @settings.client.name.is_a?(String)
32
33
  raise 'configuration invalid, client must have a name'
33
34
  end
34
- unless @settings['client']['address'].is_a?(String)
35
+ unless @settings.client.address.is_a?(String)
35
36
  raise 'configuration invalid, client must have an address (ip or hostname)'
36
37
  end
37
- unless @settings['client']['subscriptions'].is_a?(Array) && @settings['client']['subscriptions'].count > 0
38
+ unless @settings.client.subscriptions.is_a?(Array) && @settings.client.subscriptions.count > 0
38
39
  raise 'configuration invalid, client must have subscriptions'
39
40
  end
40
41
  end
@@ -46,9 +47,12 @@ module Sensu
46
47
  puts opts
47
48
  exit
48
49
  end
49
- options[:worker] = false
50
- opts.on('-w', '--worker', 'Only consume jobs, no check publishing (default: false)') do
51
- options[:worker] = true
50
+ current_process = $0.split('/').last
51
+ if current_process == 'sensu-server' || current_process == 'rake_test_loader.rb'
52
+ options[:worker] = false
53
+ opts.on('-w', '--worker', 'Only consume jobs, no check publishing (default: false)') do
54
+ options[:worker] = true
55
+ end
52
56
  end
53
57
  options[:config_file] = nil
54
58
  opts.on('-c', '--config FILE', 'Sensu JSON config FILE (default: /etc/sensu/config.json)') do |file|
data/lib/sensu/helpers.rb CHANGED
@@ -1,18 +1,20 @@
1
- def symbolize_keys(item)
2
- case item
3
- when Array
4
- item.map do |i|
5
- symbolize_keys(i)
1
+ class Hash
2
+ def symbolize_keys(item = self)
3
+ case item
4
+ when Array
5
+ item.map do |i|
6
+ symbolize_keys(i)
7
+ end
8
+ when Hash
9
+ Hash[
10
+ item.map do |key, value|
11
+ new_key = key.is_a?(String) ? key.to_sym : key
12
+ new_value = symbolize_keys(value)
13
+ [new_key, new_value]
14
+ end
15
+ ]
16
+ else
17
+ item
6
18
  end
7
- when Hash
8
- Hash[
9
- item.map do |key, value|
10
- k = key.is_a?(String) ? key.to_sym : key
11
- v = symbolize_keys(value)
12
- [k,v]
13
- end
14
- ]
15
- else
16
- item
17
19
  end
18
20
  end
data/lib/sensu/server.rb CHANGED
@@ -38,24 +38,24 @@ module Sensu
38
38
  end
39
39
 
40
40
  def setup_logging
41
- EM.syslog_setup(@settings['syslog']['host'], @settings['syslog']['port'])
41
+ EM.syslog_setup(@settings.syslog.host, @settings.syslog.port)
42
42
  end
43
43
 
44
44
  def setup_redis
45
- @redis = EM::Hiredis.connect('redis://' + @settings['redis']['host'] + ':' + @settings['redis']['port'].to_s)
45
+ @redis = EM::Hiredis.connect('redis://' + @settings.redis.host + ':' + @settings.redis.port.to_s)
46
46
  end
47
47
 
48
48
  def setup_amqp
49
- connection = AMQP.connect(symbolize_keys(@settings['rabbitmq']))
49
+ connection = AMQP.connect(@settings.rabbitmq.to_hash.symbolize_keys)
50
50
  @amq = MQ.new(connection)
51
51
  end
52
52
 
53
53
  def setup_keepalives
54
54
  @keepalive_queue = @amq.queue('keepalives')
55
55
  @keepalive_queue.subscribe do |keepalive_json|
56
- client = JSON.parse(keepalive_json)['name']
57
- @redis.set('client:' + client, keepalive_json).callback do
58
- @redis.sadd('clients', client)
56
+ client_id = JSON.parse(keepalive_json)['name']
57
+ @redis.set('client:' + client_id, keepalive_json).callback do
58
+ @redis.sadd('clients', client_id)
59
59
  end
60
60
  end
61
61
  end
@@ -63,7 +63,7 @@ module Sensu
63
63
  def handle_event(event)
64
64
  handler = proc do
65
65
  output = ''
66
- IO.popen(@settings['handlers'][event['check']['handler']] + ' 2>&1', 'r+') do |io|
66
+ IO.popen(@settings.handlers[event.check.handler] + ' 2>&1', 'r+') do |io|
67
67
  io.write(event.to_json)
68
68
  io.close_write
69
69
  output = io.read
@@ -79,20 +79,21 @@ module Sensu
79
79
  end
80
80
 
81
81
  def process_result(result)
82
- @redis.get('client:' + result['client']).callback do |client_json|
82
+ @redis.get('client:' + result.client).callback do |client_json|
83
83
  unless client_json.nil?
84
- client = JSON.parse(client_json)
85
- check = result['check']
86
- if @settings['checks'][check['name']]
87
- check.merge!(@settings['checks'][check['name']])
88
- end
89
- check['handler'] ||= 'default'
90
- event = {'client' => client, 'check' => check, 'occurrences' => 1}
91
- if check['type'] == 'metric'
84
+ client = Hashie::Mash.new(JSON.parse(client_json))
85
+ check = @settings.checks.key?(result.check.name) ? result.check.merge(@settings.checks[result.check.name]) : result.check
86
+ check.handler ||= 'default'
87
+ event = Hashie::Mash.new({
88
+ :client => client,
89
+ :check => check,
90
+ :occurrences => 1
91
+ })
92
+ if check.type == 'metric'
92
93
  handle_event(event)
93
94
  else
94
- history_key = 'history:' + client['name'] + ':' + check['name']
95
- @redis.rpush(history_key, check['status']).callback do
95
+ history_key = 'history:' + client.name + ':' + check.name
96
+ @redis.rpush(history_key, check.status).callback do
96
97
  @redis.lrange(history_key, -21, -1).callback do |history|
97
98
  total_state_change = 0
98
99
  unless history.count < 21
@@ -109,40 +110,45 @@ module Sensu
109
110
  total_state_change = (state_changes.fdiv(20) * 100).to_i
110
111
  @redis.lpop(history_key)
111
112
  end
112
- high_flap_threshold = check['high_flap_threshold'] || 50
113
- low_flap_threshold = check['low_flap_threshold'] || 40
114
- @redis.hget('events:' + client['name'], check['name']).callback do |event_json|
115
- previous_event = event_json ? JSON.parse(event_json) : false
116
- flapping = previous_event ? previous_event['flapping'] : false
117
- check['flapping'] = case
113
+ high_flap_threshold = check.high_flap_threshold || 50
114
+ low_flap_threshold = check.low_flap_threshold || 40
115
+ @redis.hget('events:' + client.name, check.name).callback do |event_json|
116
+ previous_event = event_json ? Hashie::Mash.new(JSON.parse(event_json)) : false
117
+ is_flapping = previous_event ? previous_event.flapping : false
118
+ is_flapping = case
118
119
  when total_state_change >= high_flap_threshold
119
120
  true
120
- when flapping && total_state_change <= low_flap_threshold
121
+ when is_flapping && total_state_change <= low_flap_threshold
121
122
  false
122
123
  else
123
- flapping
124
+ is_flapping
124
125
  end
125
- if previous_event && check['status'] == 0
126
- unless check['flapping']
127
- @redis.hdel('events:' + client['name'], check['name']).callback do
128
- event['action'] = 'resolve'
129
- handle_event(event)
126
+ if previous_event && check.status == 0
127
+ unless is_flapping
128
+ @redis.hdel('events:' + client.name, check.name).callback do
129
+ unless check.internal
130
+ event.action = 'resolve'
131
+ handle_event(event)
132
+ end
130
133
  end
131
134
  else
132
- @redis.hset('events:' + client['name'], check['name'], previous_event.merge({'flapping' => true}).to_json)
135
+ @redis.hset('events:' + client.name, check.name, previous_event.merge({'flapping' => true}).to_json)
133
136
  end
134
137
  elsif check['status'] != 0
135
- if previous_event && check['status'] == previous_event['status']
136
- event['occurrences'] = previous_event['occurrences'] += 1
138
+ if previous_event && check.status == previous_event.status
139
+ event.occurrences = previous_event.occurrences += 1
137
140
  end
138
- @redis.hset('events:' + client['name'], check['name'], {
139
- 'status' => check['status'],
140
- 'output' => check['output'],
141
- 'flapping' => check['flapping'],
142
- 'occurrences' => event['occurrences']
141
+ @redis.hset('events:' + client.name, check.name, {
142
+ :status => check.status,
143
+ :output => check.output,
144
+ :flapping => is_flapping,
145
+ :occurrences => event.occurrences
143
146
  }.to_json).callback do
144
- event['action'] = 'create'
145
- handle_event(event)
147
+ unless check.internal
148
+ event.check.flapping = is_flapping
149
+ event.action = 'create'
150
+ handle_event(event)
151
+ end
146
152
  end
147
153
  end
148
154
  end
@@ -156,7 +162,7 @@ module Sensu
156
162
  def setup_results
157
163
  @result_queue = @amq.queue('results')
158
164
  @result_queue.subscribe do |result_json|
159
- result = JSON.parse(result_json)
165
+ result = Hashie::Mash.new(JSON.parse(result_json))
160
166
  process_result(result)
161
167
  end
162
168
  end
@@ -164,13 +170,13 @@ module Sensu
164
170
  def setup_publisher(options={})
165
171
  exchanges = Hash.new
166
172
  stagger = options[:test] ? 0 : 7
167
- @settings['checks'].each_with_index do |(name, details), index|
173
+ @settings.checks.each_with_index do |(name, details), index|
168
174
  EM.add_timer(stagger*index) do
169
- details['subscribers'].each do |exchange|
175
+ details.subscribers.each do |exchange|
170
176
  if exchanges[exchange].nil?
171
177
  exchanges[exchange] = @amq.fanout(exchange)
172
178
  end
173
- interval = options[:test] ? 0.5 : details['interval']
179
+ interval = options[:test] ? 0.5 : details.interval
174
180
  EM.add_periodic_timer(interval) do
175
181
  exchanges[exchange].publish({'name' => name, 'issued' => Time.now.to_i}.to_json)
176
182
  EM.debug('name="Published Check" event_id=server action="Published check ' + name + ' to the ' + exchange + ' exchange"')
@@ -185,24 +191,30 @@ module Sensu
185
191
  @redis.smembers('clients').callback do |clients|
186
192
  clients.each do |client_id|
187
193
  @redis.get('client:' + client_id).callback do |client_json|
188
- client = JSON.parse(client_json)
189
- time_since_last_check = Time.now.to_i - client['timestamp']
190
- result = {'client' => client['name'], 'check' => {'name' => 'keepalive', 'issued' => Time.now.to_i}}
194
+ client = Hashie::Mash.new(JSON.parse(client_json))
195
+ time_since_last_check = Time.now.to_i - client.timestamp
196
+ result = Hashie::Mash.new({
197
+ :client => client.name,
198
+ :check => {
199
+ :name => 'keepalive',
200
+ :issued => Time.now.to_i
201
+ }
202
+ })
191
203
  case
192
204
  when time_since_last_check >= 180
193
- result['check']['status'] = 2
194
- result['check']['output'] = 'No keep-alive sent from host in over 180 seconds'
195
- process_result(result)
205
+ result.check.status = 2
206
+ result.check.output = 'No keep-alive sent from host in over 180 seconds'
207
+ @result_queue.publish(result.to_json)
196
208
  when time_since_last_check >= 120
197
- result['check']['status'] = 1
198
- result['check']['output'] = 'No keep-alive sent from host in over 120 seconds'
199
- process_result(result)
209
+ result.check.status = 1
210
+ result.check.output = 'No keep-alive sent from host in over 120 seconds'
211
+ @result_queue.publish(result.to_json)
200
212
  else
201
213
  @redis.hexists('events:' + client_id, 'keepalive').callback do |exists|
202
214
  if exists == 1
203
- result['check']['status'] = 0
204
- result['check']['output'] = 'Keep-alive sent from host'
205
- process_result(result)
215
+ result.check.status = 0
216
+ result.check.output = 'Keep-alive sent from host'
217
+ @result_queue.publish(result.to_json)
206
218
  end
207
219
  end
208
220
  end
data/lib/sensu.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Sensu
2
- VERSION = "0.7.0"
2
+ VERSION = "0.7.1"
3
3
  end
data/sensu.gemspec CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.add_dependency("amqp", "0.7.4")
16
16
  s.add_dependency("json")
17
+ s.add_dependency("hashie")
17
18
  s.add_dependency("uuidtools")
18
19
  s.add_dependency("em-syslog")
19
20
  s.add_dependency("em-hiredis")
@@ -25,7 +26,7 @@ Gem::Specification.new do |s|
25
26
  s.add_development_dependency('em-ventually')
26
27
  s.add_development_dependency('rest-client')
27
28
 
28
- s.files = `git ls-files`.split("\n").reject {|f| f =~ /(dist|test)/}
29
+ s.files = `git ls-files`.split("\n").reject {|f| f =~ /(dist|test|png)/}
29
30
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
30
31
  s.require_paths = ["lib"]
31
32
  end
data/sensu.windows CHANGED
@@ -21,10 +21,11 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency("eventmachine", "1.0.0.beta.4.1")
22
22
  s.add_dependency("amqp", "0.7.4")
23
23
  s.add_dependency("json")
24
+ s.add_dependency("hashie")
24
25
  s.add_dependency("uuidtools")
25
26
  s.add_dependency("em-syslog")
26
27
 
27
- s.files = `git ls-files`.split("\n").reject {|f| f =~ /(dist|test)/}
28
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
28
+ s.files = `git ls-files`.split("\n").reject {|f| f =~ /(dist|test|server|api|png)/}
29
+ s.executables = "sensu-client"
29
30
  s.require_paths = ["lib"]
30
31
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
- - 0
10
- version: 0.7.0
9
+ - 1
10
+ version: 0.7.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sean Porter
@@ -50,7 +50,7 @@ dependencies:
50
50
  type: :runtime
51
51
  version_requirements: *id002
52
52
  - !ruby/object:Gem::Dependency
53
- name: uuidtools
53
+ name: hashie
54
54
  prerelease: false
55
55
  requirement: &id003 !ruby/object:Gem::Requirement
56
56
  none: false
@@ -64,7 +64,7 @@ dependencies:
64
64
  type: :runtime
65
65
  version_requirements: *id003
66
66
  - !ruby/object:Gem::Dependency
67
- name: em-syslog
67
+ name: uuidtools
68
68
  prerelease: false
69
69
  requirement: &id004 !ruby/object:Gem::Requirement
70
70
  none: false
@@ -78,7 +78,7 @@ dependencies:
78
78
  type: :runtime
79
79
  version_requirements: *id004
80
80
  - !ruby/object:Gem::Dependency
81
- name: em-hiredis
81
+ name: em-syslog
82
82
  prerelease: false
83
83
  requirement: &id005 !ruby/object:Gem::Requirement
84
84
  none: false
@@ -92,7 +92,7 @@ dependencies:
92
92
  type: :runtime
93
93
  version_requirements: *id005
94
94
  - !ruby/object:Gem::Dependency
95
- name: async_sinatra
95
+ name: em-hiredis
96
96
  prerelease: false
97
97
  requirement: &id006 !ruby/object:Gem::Requirement
98
98
  none: false
@@ -106,7 +106,7 @@ dependencies:
106
106
  type: :runtime
107
107
  version_requirements: *id006
108
108
  - !ruby/object:Gem::Dependency
109
- name: thin
109
+ name: async_sinatra
110
110
  prerelease: false
111
111
  requirement: &id007 !ruby/object:Gem::Requirement
112
112
  none: false
@@ -120,7 +120,7 @@ dependencies:
120
120
  type: :runtime
121
121
  version_requirements: *id007
122
122
  - !ruby/object:Gem::Dependency
123
- name: rake
123
+ name: thin
124
124
  prerelease: false
125
125
  requirement: &id008 !ruby/object:Gem::Requirement
126
126
  none: false
@@ -131,10 +131,10 @@ dependencies:
131
131
  segments:
132
132
  - 0
133
133
  version: "0"
134
- type: :development
134
+ type: :runtime
135
135
  version_requirements: *id008
136
136
  - !ruby/object:Gem::Dependency
137
- name: minitest
137
+ name: rake
138
138
  prerelease: false
139
139
  requirement: &id009 !ruby/object:Gem::Requirement
140
140
  none: false
@@ -148,7 +148,7 @@ dependencies:
148
148
  type: :development
149
149
  version_requirements: *id009
150
150
  - !ruby/object:Gem::Dependency
151
- name: em-ventually
151
+ name: minitest
152
152
  prerelease: false
153
153
  requirement: &id010 !ruby/object:Gem::Requirement
154
154
  none: false
@@ -162,7 +162,7 @@ dependencies:
162
162
  type: :development
163
163
  version_requirements: *id010
164
164
  - !ruby/object:Gem::Dependency
165
- name: rest-client
165
+ name: em-ventually
166
166
  prerelease: false
167
167
  requirement: &id011 !ruby/object:Gem::Requirement
168
168
  none: false
@@ -175,6 +175,20 @@ dependencies:
175
175
  version: "0"
176
176
  type: :development
177
177
  version_requirements: *id011
178
+ - !ruby/object:Gem::Dependency
179
+ name: rest-client
180
+ prerelease: false
181
+ requirement: &id012 !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ hash: 3
187
+ segments:
188
+ - 0
189
+ version: "0"
190
+ type: :development
191
+ version_requirements: *id012
178
192
  description: A server monitoring framework using the publish-subscribe model
179
193
  email:
180
194
  - sean.porter@sonian.net
@@ -203,7 +217,6 @@ files:
203
217
  - lib/sensu/config.rb
204
218
  - lib/sensu/helpers.rb
205
219
  - lib/sensu/server.rb
206
- - sensu-logo.png
207
220
  - sensu.gemspec
208
221
  - sensu.windows
209
222
  has_rdoc: true
data/sensu-logo.png DELETED
Binary file