flapjack 0.7.12 → 0.7.13
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/CHANGELOG.md +4 -0
- data/features/events_check_names.feature +21 -0
- data/features/notification_rules.feature +44 -0
- data/features/steps/events_steps.rb +19 -1
- data/lib/flapjack/data/entity.rb +1 -1
- data/lib/flapjack/data/entity_check.rb +1 -1
- data/lib/flapjack/data/notification.rb +1 -1
- data/lib/flapjack/gateways/email.rb +1 -1
- data/lib/flapjack/gateways/jabber.rb +1 -1
- data/lib/flapjack/gateways/pagerduty.rb +1 -1
- data/lib/flapjack/gateways/sms_messagenet.rb +1 -1
- data/lib/flapjack/version.rb +1 -1
- metadata +6 -4
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
## Flapjack Changelog
|
2
2
|
|
3
|
+
# 0.7.13 - 2013-06-18
|
4
|
+
- Bug: test notifications are blocked by notification rules gh-188 (@jessereynolds)
|
5
|
+
- Bug: unscheduled maintenances does not prevent alerts for checks with colons in their name gh-208 (@jessereynolds)
|
6
|
+
|
3
7
|
# 0.7.12 - 2013-06-12
|
4
8
|
- Feature: auto-generate a general notification rule for contacts that don't have any gh-199 (@ali-graham)
|
5
9
|
- Bug: no recovery for unknown for contact with notification rules gh-203 (@jessereynolds)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
@events
|
2
|
+
Feature: events and check names
|
3
|
+
Flapjack must handle weird characters in check names in events
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given an entity 'foo-app-01.example.com' exists
|
7
|
+
|
8
|
+
@time
|
9
|
+
Scenario: acknowledgements for checks with colons
|
10
|
+
Given the check is check 'Disk C: Utilisation' on entity 'foo-app-01.example.com'
|
11
|
+
And the check is in an ok state
|
12
|
+
When a warning event is received
|
13
|
+
Then a notification should not be generated
|
14
|
+
When 1 minute passes
|
15
|
+
And a warning event is received
|
16
|
+
Then a notification should be generated
|
17
|
+
When an acknowledgement event is received
|
18
|
+
Then a notification should be generated
|
19
|
+
When 1 minute passes
|
20
|
+
And a warning event is received
|
21
|
+
Then a notification should not be generated
|
@@ -260,6 +260,50 @@ Feature: Notification rules on a per contact basis
|
|
260
260
|
Then 0 email alerts should be queued for vera@example.com
|
261
261
|
Then 1 sms alert should be queued for +61400000003
|
262
262
|
|
263
|
+
@time
|
264
|
+
Scenario: Test notifications behave like a critical notification
|
265
|
+
Given the check is check 'ping' on entity 'foo'
|
266
|
+
And the check is in an ok state
|
267
|
+
When a test event is received
|
268
|
+
Then 1 email alert should be queued for malak@example.com
|
269
|
+
And 1 sms alert should be queued for +61400000001
|
270
|
+
@time
|
271
|
+
Scenario: Critical straight after test
|
272
|
+
Given the check is check 'ping' on entity 'foo'
|
273
|
+
And the check is in an ok state
|
274
|
+
When a test event is received
|
275
|
+
Then 1 email alert should be queued for malak@example.com
|
276
|
+
And 1 sms alert should be queued for +61400000001
|
277
|
+
When 10 seconds passes
|
278
|
+
And a critical event is received
|
279
|
+
Then 1 email alert should be queued for malak@example.com
|
280
|
+
And 1 sms alert should be queued for +61400000001
|
281
|
+
When 40 seconds passes
|
282
|
+
And a critical event is received
|
283
|
+
Then 2 email alert should be queued for malak@example.com
|
284
|
+
And 2 sms alert should be queued for +61400000001
|
285
|
+
|
286
|
+
Scenario: Unknown event during unscheduled maintenance
|
287
|
+
Given the check is check 'ping' on entity 'foo'
|
288
|
+
And the check is in an ok state
|
289
|
+
When an unknown event is received
|
290
|
+
And 1 minute passes
|
291
|
+
And an unknown event is received
|
292
|
+
Then 1 email alert should be queued for malak@example.com
|
293
|
+
And 1 sms alert should be queued for +61400000001
|
294
|
+
When 6 minutes passes
|
295
|
+
And an acknowledgement event is received
|
296
|
+
Then 2 email alerts should be queued for malak@example.com
|
297
|
+
And 2 sms alerts should be queued for +61400000001
|
298
|
+
When 6 minutes passes
|
299
|
+
And an unknown event is received
|
300
|
+
Then 2 email alerts should be queued for malak@example.com
|
301
|
+
And 2 sms alerts should be queued for +61400000001
|
302
|
+
When 1 minute passes
|
303
|
+
And an unknown event is received
|
304
|
+
Then 2 email alerts should be queued for malak@example.com
|
305
|
+
And 2 sms alerts should be queued for +61400000001
|
306
|
+
|
263
307
|
@time
|
264
308
|
Scenario: A blackhole rule on an entity should override another matching entity specific rule
|
265
309
|
|
@@ -118,7 +118,18 @@ def submit_acknowledgement(entity, check)
|
|
118
118
|
'entity' => entity,
|
119
119
|
'check' => check,
|
120
120
|
'client' => 'clientx',
|
121
|
-
|
121
|
+
}
|
122
|
+
submit_event(event)
|
123
|
+
end
|
124
|
+
|
125
|
+
def submit_test(entity, check)
|
126
|
+
event = {
|
127
|
+
'type' => 'action',
|
128
|
+
'state' => 'test_notifications',
|
129
|
+
'summary' => "test notification for all contacts interested in #{entity}",
|
130
|
+
'entity' => entity,
|
131
|
+
'check' => check,
|
132
|
+
'client' => 'clientx',
|
122
133
|
}
|
123
134
|
submit_event(event)
|
124
135
|
end
|
@@ -224,6 +235,13 @@ When /^an acknowledgement .*is received(?: for check '([\w\.\-]+)' on entity '([
|
|
224
235
|
drain_events
|
225
236
|
end
|
226
237
|
|
238
|
+
When /^a test .*is received(?: for check '([\w\.\-]+)' on entity '([\w\.\-]+)')?$/ do |check, entity|
|
239
|
+
check ||= @check
|
240
|
+
entity ||= @entity
|
241
|
+
submit_test(entity, check)
|
242
|
+
drain_events
|
243
|
+
end
|
244
|
+
|
227
245
|
# TODO logging is a side-effect, should test for notification generation itself
|
228
246
|
Then /^a notification should not be generated(?: for check '([\w\.\-]+)' on entity '([\w\.\-]+)')?$/ do |check, entity|
|
229
247
|
check ||= @check
|
data/lib/flapjack/data/entity.rb
CHANGED
@@ -27,7 +27,7 @@ module Flapjack
|
|
27
27
|
# TODO probably shouldn't always be creating on query -- work out when this should be happening
|
28
28
|
def self.for_event_id(event_id, options = {})
|
29
29
|
raise "Redis connection not set" unless redis = options[:redis]
|
30
|
-
entity_name, check = event_id.split(':')
|
30
|
+
entity_name, check = event_id.split(':', 2)
|
31
31
|
self.new(Flapjack::Data::Entity.find_by_name(entity_name, :redis => redis, :create => true), check,
|
32
32
|
:redis => redis)
|
33
33
|
end
|
@@ -26,7 +26,7 @@ module Flapjack
|
|
26
26
|
event_id = event.id
|
27
27
|
event_state = event.state
|
28
28
|
|
29
|
-
severity = if ([event_state, max_notified_severity] & ['critical', 'unknown']).any?
|
29
|
+
severity = if ([event_state, max_notified_severity] & ['critical', 'unknown', 'test_notifications']).any?
|
30
30
|
'critical'
|
31
31
|
elsif [event_state, max_notified_severity].include?('warning')
|
32
32
|
'warning'
|
@@ -34,7 +34,7 @@ module Flapjack
|
|
34
34
|
@summary = notification['summary']
|
35
35
|
@details = notification['details']
|
36
36
|
@time = notification['time']
|
37
|
-
@entity_name, @check = notification['event_id'].split(':')
|
37
|
+
@entity_name, @check = notification['event_id'].split(':', 2)
|
38
38
|
|
39
39
|
entity_check = Flapjack::Data::EntityCheck.for_event_id(notification['event_id'],
|
40
40
|
:redis => ::Resque.redis)
|
@@ -355,7 +355,7 @@ module Flapjack
|
|
355
355
|
end
|
356
356
|
end
|
357
357
|
else
|
358
|
-
entity, check = event['event_id'].split(':')
|
358
|
+
entity, check = event['event_id'].split(':', 2)
|
359
359
|
state = event['state']
|
360
360
|
summary = event['summary']
|
361
361
|
duration = event['duration'] ? time_period_in_words(event['duration']) : '4 hours'
|
@@ -61,7 +61,7 @@ module Flapjack
|
|
61
61
|
@logger.debug("pagerduty notification event popped off the queue: " + event.inspect)
|
62
62
|
unless 'shutdown'.eql?(type)
|
63
63
|
event_id = event['event_id']
|
64
|
-
entity, check = event_id.split(':')
|
64
|
+
entity, check = event_id.split(':', 2)
|
65
65
|
state = event['state']
|
66
66
|
summary = event['summary']
|
67
67
|
address = event['address']
|
@@ -24,7 +24,7 @@ module Flapjack
|
|
24
24
|
state = notification['state']
|
25
25
|
summary = notification['summary']
|
26
26
|
time = notification['time']
|
27
|
-
entity, check = notification['event_id'].split(':')
|
27
|
+
entity, check = notification['event_id'].split(':', 2)
|
28
28
|
|
29
29
|
headline_map = {'problem' => 'PROBLEM: ',
|
30
30
|
'recovery' => 'RECOVERY: ',
|
data/lib/flapjack/version.rb
CHANGED
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.7.
|
4
|
+
version: 0.7.13
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-06-
|
14
|
+
date: 2013-06-18 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: dante
|
@@ -412,6 +412,7 @@ files:
|
|
412
412
|
- dist/puppet/sqlite3/manifests/dev.pp
|
413
413
|
- etc/flapjack_config.yaml.example
|
414
414
|
- features/events.feature
|
415
|
+
- features/events_check_names.feature
|
415
416
|
- features/notification_rules.feature
|
416
417
|
- features/notifications.feature
|
417
418
|
- features/packaging-lintian.feature
|
@@ -553,7 +554,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
553
554
|
version: '0'
|
554
555
|
segments:
|
555
556
|
- 0
|
556
|
-
hash:
|
557
|
+
hash: 1459875303565561678
|
557
558
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
558
559
|
none: false
|
559
560
|
requirements:
|
@@ -562,7 +563,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
562
563
|
version: '0'
|
563
564
|
segments:
|
564
565
|
- 0
|
565
|
-
hash:
|
566
|
+
hash: 1459875303565561678
|
566
567
|
requirements: []
|
567
568
|
rubyforge_project:
|
568
569
|
rubygems_version: 1.8.23
|
@@ -571,6 +572,7 @@ specification_version: 3
|
|
571
572
|
summary: Intelligent, scalable, distributed monitoring notification system.
|
572
573
|
test_files:
|
573
574
|
- features/events.feature
|
575
|
+
- features/events_check_names.feature
|
574
576
|
- features/notification_rules.feature
|
575
577
|
- features/notifications.feature
|
576
578
|
- features/packaging-lintian.feature
|