flapjack 1.2.0rc2 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Dockerfile +1 -1
- data/Gemfile +6 -5
- data/Gemfile-ruby1.9 +6 -5
- data/Gemfile-ruby1.9.lock +11 -12
- data/features/steps/notifications_steps.rb +10 -10
- data/features/support/env.rb +4 -6
- data/flapjack.gemspec +1 -1
- data/lib/flapjack/data/entity.rb +124 -109
- data/lib/flapjack/data/entity_check.rb +46 -52
- data/lib/flapjack/data/event.rb +4 -4
- data/lib/flapjack/data/migration.rb +29 -0
- data/lib/flapjack/gateways/jsonapi.rb +3 -2
- data/lib/flapjack/gateways/jsonapi/report_methods.rb +11 -4
- data/lib/flapjack/gateways/web.rb +1 -1
- data/lib/flapjack/notifier.rb +4 -8
- data/lib/flapjack/processor.rb +27 -25
- data/lib/flapjack/redis_pool.rb +2 -0
- data/lib/flapjack/version.rb +1 -1
- data/spec/lib/flapjack/data/contact_spec.rb +6 -1
- data/spec/lib/flapjack/data/entity_check_spec.rb +7 -1
- data/spec/lib/flapjack/data/event_spec.rb +16 -20
- data/spec/lib/flapjack/data/migration_spec.rb +52 -0
- data/spec/lib/flapjack/gateways/jsonapi/check_methods_spec.rb +10 -0
- data/spec/lib/flapjack/gateways/jsonapi/report_methods_spec.rb +3 -6
- data/spec/lib/flapjack/redis_pool_spec.rb +1 -0
- data/tasks/benchmarks.rake +1 -1
- data/tasks/entities.rake +4 -4
- metadata +20 -18
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'flapjack/data/migration'
|
3
|
+
require 'flapjack/data/notification_rule'
|
4
|
+
|
5
|
+
describe Flapjack::Data::Migration, :redis => true do
|
6
|
+
|
7
|
+
it "fixes a notification rule wih no contact association" do
|
8
|
+
contact = Flapjack::Data::Contact.add( {
|
9
|
+
'id' => 'c362',
|
10
|
+
'first_name' => 'John',
|
11
|
+
'last_name' => 'Johnson',
|
12
|
+
'email' => 'johnj@example.com',
|
13
|
+
'media' => {
|
14
|
+
'pagerduty' => {
|
15
|
+
'service_key' => '123456789012345678901234',
|
16
|
+
'subdomain' => 'flpjck',
|
17
|
+
'username' => 'flapjack',
|
18
|
+
'password' => 'very_secure'
|
19
|
+
},
|
20
|
+
},
|
21
|
+
},
|
22
|
+
:redis => @redis)
|
23
|
+
|
24
|
+
rule = contact.add_notification_rule(
|
25
|
+
:tags => ["database","physical"],
|
26
|
+
:entities => ["foo-app-01.example.com"],
|
27
|
+
:time_restrictions => [],
|
28
|
+
:unknown_media => [],
|
29
|
+
:warning_media => ["email"],
|
30
|
+
:critical_media => ["sms", "email"],
|
31
|
+
:unknown_blackhole => false,
|
32
|
+
:warning_blackhole => false,
|
33
|
+
:critical_blackhole => false
|
34
|
+
)
|
35
|
+
|
36
|
+
rule_id = rule.id
|
37
|
+
|
38
|
+
# degrade as the bug had previously
|
39
|
+
@redis.hset("notification_rule:#{rule.id}", 'contact_id', '')
|
40
|
+
|
41
|
+
rule = Flapjack::Data::NotificationRule.find_by_id(rule_id, :redis => @redis)
|
42
|
+
expect(rule).not_to be_nil
|
43
|
+
expect(rule.contact_id).to be_empty
|
44
|
+
|
45
|
+
Flapjack::Data::Migration.correct_notification_rule_contact_linkages(:redis => @redis)
|
46
|
+
|
47
|
+
rule = Flapjack::Data::NotificationRule.find_by_id(rule_id, :redis => @redis)
|
48
|
+
expect(rule).not_to be_nil
|
49
|
+
expect(rule.contact_id).to eq(contact.id)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -83,6 +83,16 @@ describe 'Flapjack::Gateways::JSONAPI::CheckMethods', :sinatra => true, :logger
|
|
83
83
|
expect(last_response).to be_ok
|
84
84
|
expect(last_response.body).to eq({:checks => [check_data, check_data_2]}.to_json)
|
85
85
|
end
|
86
|
+
|
87
|
+
it "does not find a check" do
|
88
|
+
expect(Flapjack::Data::EntityCheck).to receive(:for_event_id).
|
89
|
+
with('www.example.com:SSH', :logger => @logger, :redis => redis).
|
90
|
+
and_return(nil)
|
91
|
+
|
92
|
+
aget '/checks/www.example.com:SSH'
|
93
|
+
expect(last_response).to be_not_found
|
94
|
+
end
|
95
|
+
|
86
96
|
it "creates checks from a submitted list" do
|
87
97
|
checks = {'checks' =>
|
88
98
|
[
|
@@ -168,12 +168,9 @@ describe 'Flapjack::Gateways::JSONAPI::ReportMethods', :sinatra => true, :logger
|
|
168
168
|
expect(last_response).to be_not_found
|
169
169
|
end
|
170
170
|
|
171
|
-
it "should not show the status for a check
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
aget "/status_report/checks/#{entity_name}:SSH"
|
176
|
-
expect(last_response).to be_not_found
|
171
|
+
it "should not show the status for a check with a malformed name" do
|
172
|
+
aget "/status_report/checks/SSH"
|
173
|
+
expect(last_response.status).to eq(500)
|
177
174
|
end
|
178
175
|
|
179
176
|
it "returns a list of scheduled maintenance periods for an entity" do
|
@@ -12,6 +12,7 @@ describe Flapjack::RedisPool do
|
|
12
12
|
redis
|
13
13
|
}
|
14
14
|
expect(::Redis).to receive(:new).exactly(redis_count).times.and_return(*redis_conns)
|
15
|
+
expect(Flapjack::Data::Migration).to receive(:correct_notification_rule_contact_linkages).exactly(redis_count).times
|
15
16
|
expect(Flapjack::Data::Migration).to receive(:migrate_entity_check_data_if_required).exactly(redis_count).times
|
16
17
|
expect(Flapjack::Data::Migration).to receive(:refresh_archive_index).exactly(redis_count).times
|
17
18
|
|
data/tasks/benchmarks.rake
CHANGED
@@ -97,7 +97,7 @@ namespace :benchmarks do
|
|
97
97
|
# - time to failure varies evenly between 1 hour and 1 month
|
98
98
|
# - time to recovery varies evenly between 10 seconds and 1 week
|
99
99
|
task :benchmark do
|
100
|
-
unless RUBY_VERSION.split('.')[0] == '1' && RUBY_VERSION.split('.')[1] == '
|
100
|
+
unless RUBY_VERSION.split('.')[0] == '1' && RUBY_VERSION.split('.')[1] == '9'
|
101
101
|
# Flapjack doesn't support 1.8 or below, so just checking for 1.9 is OK
|
102
102
|
raise "perftools.rb doesn't work on Ruby 2.0 or greater"
|
103
103
|
end
|
data/tasks/entities.rake
CHANGED
@@ -129,10 +129,10 @@ namespace :entities do
|
|
129
129
|
|
130
130
|
if id.nil? || entity.nil?
|
131
131
|
id ||= SecureRandom.uuid
|
132
|
-
redis.multi
|
133
|
-
|
134
|
-
|
135
|
-
|
132
|
+
redis.multi do
|
133
|
+
multi.hset('all_entity_ids_by_name', name, id)
|
134
|
+
multi.hset('all_entity_names_by_id', id, name)
|
135
|
+
end
|
136
136
|
puts "Set id '#{id}' for entity #{name}'"
|
137
137
|
elsif entity.name.eql?(name)
|
138
138
|
puts "'#{name}' entity already exists with the provided id"
|
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: 1.2.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lindsay Holmwood
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2014-
|
14
|
+
date: 2014-11-07 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: dante
|
@@ -55,6 +55,20 @@ dependencies:
|
|
55
55
|
- - "~>"
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: 1.0.0
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: redis
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - "~>"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 3.0.6
|
65
|
+
type: :runtime
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - "~>"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 3.0.6
|
58
72
|
- !ruby/object:Gem::Dependency
|
59
73
|
name: hiredis
|
60
74
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,20 +111,6 @@ dependencies:
|
|
97
111
|
- - ">="
|
98
112
|
- !ruby/object:Gem::Version
|
99
113
|
version: '0'
|
100
|
-
- !ruby/object:Gem::Dependency
|
101
|
-
name: redis
|
102
|
-
requirement: !ruby/object:Gem::Requirement
|
103
|
-
requirements:
|
104
|
-
- - "~>"
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
version: 3.0.6
|
107
|
-
type: :runtime
|
108
|
-
prerelease: false
|
109
|
-
version_requirements: !ruby/object:Gem::Requirement
|
110
|
-
requirements:
|
111
|
-
- - "~>"
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: 3.0.6
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: em-resque
|
116
116
|
requirement: !ruby/object:Gem::Requirement
|
@@ -552,6 +552,7 @@ files:
|
|
552
552
|
- spec/lib/flapjack/data/entity_spec.rb
|
553
553
|
- spec/lib/flapjack/data/event_spec.rb
|
554
554
|
- spec/lib/flapjack/data/message_spec.rb
|
555
|
+
- spec/lib/flapjack/data/migration_spec.rb
|
555
556
|
- spec/lib/flapjack/data/notification_rule_spec.rb
|
556
557
|
- spec/lib/flapjack/data/notification_spec.rb
|
557
558
|
- spec/lib/flapjack/data/semaphore_spec.rb
|
@@ -635,9 +636,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
635
636
|
version: '0'
|
636
637
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
637
638
|
requirements:
|
638
|
-
- - "
|
639
|
+
- - ">="
|
639
640
|
- !ruby/object:Gem::Version
|
640
|
-
version:
|
641
|
+
version: '0'
|
641
642
|
requirements: []
|
642
643
|
rubyforge_project:
|
643
644
|
rubygems_version: 2.2.2
|
@@ -674,6 +675,7 @@ test_files:
|
|
674
675
|
- spec/lib/flapjack/data/entity_spec.rb
|
675
676
|
- spec/lib/flapjack/data/event_spec.rb
|
676
677
|
- spec/lib/flapjack/data/message_spec.rb
|
678
|
+
- spec/lib/flapjack/data/migration_spec.rb
|
677
679
|
- spec/lib/flapjack/data/notification_rule_spec.rb
|
678
680
|
- spec/lib/flapjack/data/notification_spec.rb
|
679
681
|
- spec/lib/flapjack/data/semaphore_spec.rb
|