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