flapjack 0.6.50 → 0.6.51

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/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