sensu 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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