flapjack 0.6.50 → 0.6.51

Sign up to get free protection for your applications and to get access to all the features.
data/Guardfile CHANGED
@@ -7,7 +7,7 @@ end
7
7
 
8
8
  # NB: seems to be buggy with the default --progress formatter, was
9
9
  # causing failures to parse the features
10
- guard 'cucumber', :cli => '--no-profile --color --format fuubar --strict' do
10
+ guard 'cucumber', :cli => '--no-profile --color --format Cucumber::Formatter::Fuubar --strict' do
11
11
  watch(%r{^features/.+\.feature$})
12
12
  watch(%r{^features/support/.+$}) { 'features' }
13
13
  watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
@@ -27,7 +27,6 @@ Gem::Specification.new do |gem|
27
27
  gem.add_dependency 'redis'
28
28
  gem.add_dependency 'em-resque'
29
29
  gem.add_dependency 'sinatra'
30
- gem.add_dependency 'async-rack'
31
30
  gem.add_dependency 'rack-fiber_pool'
32
31
  gem.add_dependency 'haml'
33
32
  gem.add_dependency 'thin'
@@ -8,7 +8,6 @@
8
8
 
9
9
  require 'time'
10
10
 
11
- require 'async-rack'
12
11
  require 'rack/fiber_pool'
13
12
  require 'sinatra/base'
14
13
 
@@ -83,8 +82,8 @@ module Flapjack
83
82
  @redis = Flapjack::RedisPool.new(:config => opts[:redis_config], :size => 1)
84
83
 
85
84
  if config && config['access_log']
86
- access_logger = Flapjack::RackLogger.new(config['access_log'])
87
- use Rack::CommonLogger, access_logger
85
+ access_logger = Flapjack::AsyncLogger.new(config['access_log'])
86
+ use Flapjack::CommonLogger, access_logger
88
87
  end
89
88
  end
90
89
 
@@ -169,7 +169,7 @@ module Flapjack
169
169
  end
170
170
 
171
171
  # FIXME: try each set of credentials until one works (may have stale contacts turning up)
172
- options = pagerduty_credentials.first.merge('check' => check)
172
+ options = pagerduty_credentials.first.merge('check' => "#{entity_check.entity_name}:#{check}")
173
173
 
174
174
  acknowledged = pagerduty_acknowledged?(options)
175
175
  if acknowledged.nil?
@@ -178,7 +178,7 @@ module Flapjack
178
178
  end
179
179
 
180
180
  pg_acknowledged_by = acknowledged[:pg_acknowledged_by]
181
- @logger.debug "#{check} is acknowledged in pagerduty, creating flapjack acknowledgement... "
181
+ @logger.debug "#{entity_check.entity_name}:#{check} is acknowledged in pagerduty, creating flapjack acknowledgement... "
182
182
  who_text = ""
183
183
  if !pg_acknowledged_by.nil? && !pg_acknowledged_by['name'].nil?
184
184
  who_text = " by #{pg_acknowledged_by['name']}"
@@ -6,7 +6,6 @@ require 'sinatra/base'
6
6
  require 'haml'
7
7
  require 'rack/fiber_pool'
8
8
 
9
- require 'async-rack'
10
9
  require 'flapjack/rack_logger'
11
10
 
12
11
  require 'flapjack/data/contact'
@@ -59,9 +58,10 @@ module Flapjack
59
58
  @redis = Flapjack::RedisPool.new(:config => opts[:redis_config], :size => 1)
60
59
 
61
60
  if config && config['access_log']
62
- access_logger = Flapjack::RackLogger.new(config['access_log'])
63
- use Rack::CommonLogger, access_logger
61
+ access_logger = Flapjack::AsyncLogger.new(config['access_log'])
62
+ use Flapjack::CommonLogger, access_logger
64
63
  end
64
+
65
65
  end
66
66
 
67
67
  def cleanup
@@ -91,6 +91,7 @@ module Flapjack
91
91
  parts = r.split(':')[0..1]
92
92
  [parts[0], parts[1]] + entity_check_state(parts[0], parts[1])
93
93
  }.compact.sort_by {|parts| parts }
94
+
94
95
  haml :index
95
96
  end
96
97
 
@@ -1,8 +1,47 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  module Flapjack
4
- class RackLogger < ::Logger
5
- # Works around a 1.8-specific call to a Logger method in Rack::CommonLogger
6
- def write(msg); self.send(:"<<", msg); end
4
+
5
+ class CommonLogger < Rack::CommonLogger
6
+
7
+ alias_method :orig_log, :log
8
+
9
+ private
10
+
11
+ def log(env, status, header, began_at)
12
+ ret = orig_log(env, status, header, began_at)
13
+ @logger.flush if @logger.is_a?(Flapjack::AsyncLogger)
14
+ ret
15
+ end
16
+
7
17
  end
8
- end
18
+
19
+ # from http://stackoverflow.com/questions/6427033/how-do-i-log-asynchronous-thinsinatrarack-requests
20
+ class AsyncLogger < ::Logger
21
+
22
+ attr_accessor :messages
23
+
24
+ def initialize(logdev, shift_age = 0, shift_size = 1048576)
25
+ @messages = {}
26
+ super(logdev, shift_age, shift_size)
27
+ end
28
+
29
+ def write(message)
30
+ stack << message
31
+ end
32
+
33
+ def stack
34
+ # This is the important async awareness
35
+ # It stores messages for each fiber separately
36
+ @messages[Fiber.current.object_id] ||= []
37
+ end
38
+
39
+ def flush
40
+ stack.each do |msg|
41
+ self.send(:"<<", msg)
42
+ end
43
+ @messages.delete(Fiber.current.object_id)
44
+ end
45
+ end
46
+
47
+ end
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  module Flapjack
4
- VERSION = "0.6.50"
4
+ VERSION = "0.6.51"
5
5
  end
@@ -101,6 +101,7 @@ describe Flapjack::Gateways::Pagerduty, :redis => true do
101
101
  'username' => 'flapjack',
102
102
  'password' => 'password123'
103
103
  }])
104
+ entity_check.should_receive(:entity_name).exactly(2).times.and_return('foo-app-01.bar.net:PING')
104
105
  entity_check.should_receive(:create_acknowledgement).with('summary' => 'Acknowledged on PagerDuty')
105
106
 
106
107
  Flapjack::Data::Global.should_receive(:unacknowledged_failing_checks).and_return([entity_check])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flapjack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.50
4
+ version: 0.6.51
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -173,22 +173,6 @@ dependencies:
173
173
  - - ! '>='
174
174
  - !ruby/object:Gem::Version
175
175
  version: '0'
176
- - !ruby/object:Gem::Dependency
177
- name: async-rack
178
- requirement: !ruby/object:Gem::Requirement
179
- none: false
180
- requirements:
181
- - - ! '>='
182
- - !ruby/object:Gem::Version
183
- version: '0'
184
- type: :runtime
185
- prerelease: false
186
- version_requirements: !ruby/object:Gem::Requirement
187
- none: false
188
- requirements:
189
- - - ! '>='
190
- - !ruby/object:Gem::Version
191
- version: '0'
192
176
  - !ruby/object:Gem::Dependency
193
177
  name: rack-fiber_pool
194
178
  requirement: !ruby/object:Gem::Requirement
@@ -481,18 +465,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
481
465
  - - ! '>='
482
466
  - !ruby/object:Gem::Version
483
467
  version: '0'
484
- segments:
485
- - 0
486
- hash: 2264351146423610852
487
468
  required_rubygems_version: !ruby/object:Gem::Requirement
488
469
  none: false
489
470
  requirements:
490
471
  - - ! '>='
491
472
  - !ruby/object:Gem::Version
492
473
  version: '0'
493
- segments:
494
- - 0
495
- hash: 2264351146423610852
496
474
  requirements: []
497
475
  rubyforge_project:
498
476
  rubygems_version: 1.8.23