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 +1 -1
- data/flapjack.gemspec +0 -1
- data/lib/flapjack/gateways/api.rb +2 -3
- data/lib/flapjack/gateways/pagerduty.rb +2 -2
- data/lib/flapjack/gateways/web.rb +4 -3
- data/lib/flapjack/rack_logger.rb +43 -4
- data/lib/flapjack/version.rb +1 -1
- data/spec/lib/flapjack/gateways/pagerduty_spec.rb +1 -0
- metadata +1 -23
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
|
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' }
|
data/flapjack.gemspec
CHANGED
@@ -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::
|
87
|
-
use
|
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::
|
63
|
-
use
|
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
|
|
data/lib/flapjack/rack_logger.rb
CHANGED
@@ -1,8 +1,47 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
module Flapjack
|
4
|
-
|
5
|
-
|
6
|
-
|
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
|
-
|
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
|
data/lib/flapjack/version.rb
CHANGED
@@ -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.
|
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
|