interferon 0.1.0 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +4 -0
  3. data/.rubocop_todo.yml +83 -0
  4. data/.travis.yml +4 -1
  5. data/bin/interferon +10 -9
  6. data/interferon.gemspec +18 -17
  7. data/lib/interferon/alert.rb +4 -10
  8. data/lib/interferon/alert_dsl.rb +12 -7
  9. data/lib/interferon/destinations/datadog.rb +103 -103
  10. data/lib/interferon/group_sources/filesystem.rb +5 -5
  11. data/lib/interferon/host_sources/aws_dynamo.rb +17 -19
  12. data/lib/interferon/host_sources/aws_elasticache.rb +20 -22
  13. data/lib/interferon/host_sources/aws_rds.rb +33 -33
  14. data/lib/interferon/host_sources/optica.rb +12 -10
  15. data/lib/interferon/host_sources/optica_services.rb +17 -15
  16. data/lib/interferon/host_sources/test_host_source.rb +1 -1
  17. data/lib/interferon/loaders.rb +4 -5
  18. data/lib/interferon/logging.rb +2 -3
  19. data/lib/interferon/version.rb +1 -1
  20. data/lib/interferon/work_hours_helper.rb +5 -5
  21. data/lib/interferon.rb +79 -80
  22. data/script/pre-commit +15 -20
  23. data/spec/fixtures/loaders/host_sources/test_host_source.rb +1 -1
  24. data/spec/fixtures/loaders/test_sources/order_test_source.rb +1 -1
  25. data/spec/fixtures/loaders/test_sources/test_source.rb +1 -1
  26. data/spec/fixtures/loaders2/test_sources/order_test_source.rb +1 -1
  27. data/spec/fixtures/loaders2/test_sources/secondary_source.rb +1 -1
  28. data/spec/fixtures/loaders2/test_sources/test_source.rb +1 -2
  29. data/spec/helpers/logging_helper.rb +2 -2
  30. data/spec/helpers/mock_alert.rb +1 -1
  31. data/spec/helpers/optica_helper.rb +70 -70
  32. data/spec/lib/interferon/destinations/datadog_spec.rb +58 -59
  33. data/spec/lib/interferon/group_sources/filesystem_spec.rb +29 -24
  34. data/spec/lib/interferon/host_sources/optica_services_spec.rb +11 -9
  35. data/spec/lib/interferon/host_sources/optica_spec.rb +6 -3
  36. data/spec/lib/interferon/loaders_spec.rb +19 -15
  37. data/spec/lib/interferon_spec.rb +61 -59
  38. data/spec/lib/work_hours_helper_spec.rb +15 -15
  39. data/spec/spec_helper.rb +1 -1
  40. metadata +61 -65
@@ -5,60 +5,73 @@ require 'interferon/destinations/datadog'
5
5
  include Interferon
6
6
 
7
7
  describe Interferon::Interferon do
8
+ let(:the_existing_alerts) { mock_existing_alerts }
9
+ let(:dest) { MockDest.new(the_existing_alerts) }
8
10
 
9
- let(:the_existing_alerts) {mock_existing_alerts}
10
- let(:dest) {MockDest.new(the_existing_alerts)}
11
-
12
- context "when checking alerts have changed" do
13
- it "detects a change if alert message is different" do
11
+ context 'when checking alerts have changed' do
12
+ it 'detects a change if alert message is different' do
14
13
  alert1 = create_test_alert('name1', 'testquery', 'message1')
15
14
  alert2 = mock_alert_json('name2', 'testquery', 'message2')
16
15
 
17
16
  expect(Interferon::Interferon.same_alerts(dest, [alert1, []], alert2)).to be false
18
17
  end
19
18
 
20
- it "detects a change if datadog query is different" do
19
+ it 'detects a change if datadog query is different' do
21
20
  alert1 = create_test_alert('name1', 'testquery1', 'message1')
22
21
  alert2 = mock_alert_json('name2', 'testquery2', 'message2')
23
22
 
24
23
  expect(Interferon::Interferon.same_alerts(dest, [alert1, []], alert2)).to be false
25
24
  end
26
25
 
27
- it "detects a change if alert notify_no_data is different" do
28
- alert1 = create_test_alert('name1', 'testquery1', 'message1', { :notify_no_data => false })
26
+ it 'detects a change if alert notify_no_data is different' do
27
+ alert1 = create_test_alert('name1', 'testquery1', 'message1', notify_no_data: false)
28
+ alert2 = mock_alert_json('name2', 'testquery2', 'message2', nil, [1], notify_no_data: true)
29
+
30
+ expect(Interferon::Interferon.same_alerts(dest, [alert1, []], alert2)).to be false
31
+ end
32
+
33
+ it 'detects a change if alert silenced is different' do
34
+ alert1 = create_test_alert('name1', 'testquery1', 'message1', silenced: true)
35
+ alert2 = mock_alert_json('name2', 'testquery2', 'message2', nil, [1], silenced: {})
36
+
37
+ expect(Interferon::Interferon.same_alerts(dest, [alert1, []], alert2)).to be false
38
+ end
39
+
40
+ it 'detects a change if alert no_data_timeframe is different' do
41
+ alert1 = create_test_alert('name1', 'testquery1', 'message1', no_data_timeframe: nil)
42
+ alert2 = mock_alert_json('name2', 'testquery2', 'message2', nil, [1], no_data_timeframe: 60)
43
+
44
+ expect(Interferon::Interferon.same_alerts(dest, [alert1, []], alert2)).to be false
45
+ end
46
+
47
+ it 'detects a change if alert require_full_window is different' do
48
+ alert1 = create_test_alert('name1', 'testquery1', 'message1', require_full_window: false)
29
49
  alert2 = mock_alert_json(
30
- 'name2',
31
- 'testquery2',
32
- 'message2',
33
- nil,
34
- [1],
35
- { :notify_no_data => true }
50
+ 'name2', 'testquery2', 'message2', nil, [1], require_full_window: true
36
51
  )
37
52
 
38
53
  expect(Interferon::Interferon.same_alerts(dest, [alert1, []], alert2)).to be false
39
54
  end
40
55
 
41
- it "detects a change if alert silenced is different" do
42
- alert1 = create_test_alert('name1', 'testquery1', 'message1', { :silenced => true })
43
- alert2 = mock_alert_json('name2', 'testquery2', 'message2', nil, [1], { :silenced => {} })
56
+ it 'detects a change if alert evaluation_delay is different' do
57
+ alert1 = create_test_alert('name1', 'testquery1', 'message1', evaluation_delay: nil)
58
+ alert2 = mock_alert_json('name2', 'testquery2', 'message2', nil, [1], evaluation_delay: 300)
44
59
 
45
60
  expect(Interferon::Interferon.same_alerts(dest, [alert1, []], alert2)).to be false
46
61
  end
47
62
 
48
- it "does not detect a change when alert datadog query and message are the same" do
63
+ it 'does not detect a change when alert datadog query and message are the same' do
49
64
  alert1 = create_test_alert('name1', 'testquery1', 'message1')
50
65
  alert2 = mock_alert_json(
51
- 'name1',
52
- 'testquery1',
53
- "message1\nThis alert was created via the alerts framework"
66
+ 'name1', 'testquery1', "message1\nThis alert was created via the alerts framework"
54
67
  )
55
68
 
56
69
  expect(Interferon::Interferon.same_alerts(dest, [alert1, []], alert2)).to be true
57
70
  end
58
71
  end
59
72
 
60
- context "dry_run_update_alerts_on_destination" do
61
- let(:interferon) {Interferon::Interferon.new(nil,nil,nil,nil,true,0)}
73
+ context 'dry_run_update_alerts_on_destination' do
74
+ let(:interferon) { Interferon::Interferon.new(nil, nil, nil, nil, true, 0) }
62
75
 
63
76
  before do
64
77
  allow_any_instance_of(MockAlert).to receive(:evaluate)
@@ -73,10 +86,7 @@ describe Interferon::Interferon do
73
86
  expect(dest).not_to receive(:remove_alert_by_id)
74
87
 
75
88
  interferon.update_alerts_on_destination(
76
- dest,
77
- ['host'],
78
- [alerts['name1'], alerts['name2']],
79
- {}
89
+ dest, ['host'], [alerts['name1'], alerts['name2']], {}
80
90
  )
81
91
  end
82
92
 
@@ -87,10 +97,7 @@ describe Interferon::Interferon do
87
97
  expect(dest).to receive(:remove_alert_by_id).with('3').once
88
98
 
89
99
  interferon.update_alerts_on_destination(
90
- dest,
91
- ['host'],
92
- [alerts['name1'], alerts['name2'], added],
93
- {}
100
+ dest, ['host'], [alerts['name1'], alerts['name2'], added], {}
94
101
  )
95
102
  end
96
103
 
@@ -111,7 +118,7 @@ describe Interferon::Interferon do
111
118
  it 'deletes duplicate old alerts' do
112
119
  alert1 = mock_alert_json('name1', 'testquery1', '', nil, [1, 2, 3])
113
120
  alert2 = mock_alert_json('name2', 'testquery2', '')
114
- existing_alerts = {'name1' => alert1, 'name2' => alert2}
121
+ existing_alerts = { 'name1' => alert1, 'name2' => alert2 }
115
122
  dest = MockDest.new(existing_alerts)
116
123
  allow(dest).to receive(:remove_alert)
117
124
  allow(dest).to receive(:remove_alert_by_id)
@@ -126,7 +133,7 @@ describe Interferon::Interferon do
126
133
  it 'deletes duplicate old alerts when creating new alert' do
127
134
  alert1 = mock_alert_json('name1', 'testquery1', '', nil, [1, 2, 3])
128
135
  alert2 = mock_alert_json('name2', 'testquery2', '')
129
- existing_alerts = {'name1' => alert1, 'name2' => alert2}
136
+ existing_alerts = { 'name1' => alert1, 'name2' => alert2 }
130
137
  dest = MockDest.new(existing_alerts)
131
138
  allow(dest).to receive(:remove_alert)
132
139
  allow(dest).to receive(:remove_alert_by_id)
@@ -143,8 +150,8 @@ describe Interferon::Interferon do
143
150
  end
144
151
  end
145
152
 
146
- context "update_alerts_on_destination" do
147
- let(:interferon) {Interferon::Interferon.new(nil,nil,nil,nil,false,0)}
153
+ context 'update_alerts_on_destination' do
154
+ let(:interferon) { Interferon::Interferon.new(nil, nil, nil, nil, false, 0) }
148
155
 
149
156
  before do
150
157
  allow_any_instance_of(MockAlert).to receive(:evaluate)
@@ -158,7 +165,9 @@ describe Interferon::Interferon do
158
165
  expect(dest).not_to receive(:create_alert)
159
166
  expect(dest).not_to receive(:remove_alert_by_id)
160
167
 
161
- interferon.update_alerts_on_destination(dest, ['host'], [alerts['name1'], alerts['name2']], {})
168
+ interferon.update_alerts_on_destination(
169
+ dest, ['host'], [alerts['name1'], alerts['name2']], {}
170
+ )
162
171
  end
163
172
 
164
173
  it 'runs added alerts' do
@@ -168,10 +177,7 @@ describe Interferon::Interferon do
168
177
  expect(dest).not_to receive(:remove_alert_by_id).with('3')
169
178
 
170
179
  interferon.update_alerts_on_destination(
171
- dest,
172
- ['host'],
173
- [alerts['name1'], alerts['name2'], added],
174
- {}
180
+ dest, ['host'], [alerts['name1'], alerts['name2'], added], {}
175
181
  )
176
182
  end
177
183
 
@@ -194,7 +200,7 @@ describe Interferon::Interferon do
194
200
  it 'deletes duplicate old alerts' do
195
201
  alert1 = mock_alert_json('name1', 'testquery1', '', nil, [1, 2, 3])
196
202
  alert2 = mock_alert_json('name2', 'testquery2', '')
197
- existing_alerts = {'name1' => alert1, 'name2' => alert2}
203
+ existing_alerts = { 'name1' => alert1, 'name2' => alert2 }
198
204
  dest = MockDest.new(existing_alerts)
199
205
  allow(dest).to receive(:remove_alert)
200
206
  allow(dest).to receive(:remove_alert_by_id)
@@ -209,19 +215,15 @@ describe Interferon::Interferon do
209
215
  it 'deletes duplicate old alerts when creating new alert' do
210
216
  alert1 = mock_alert_json('name1', 'testquery1', '', nil, [1, 2, 3])
211
217
  alert2 = mock_alert_json('name2', 'testquery2', '')
212
- existing_alerts = {'name1' => alert1, 'name2' => alert2}
218
+ existing_alerts = { 'name1' => alert1, 'name2' => alert2 }
213
219
  dest = MockDest.new(existing_alerts)
214
220
  allow(dest).to receive(:report_stats)
215
221
 
216
222
  added = create_test_alert('name1', 'testquery1', '')
217
223
 
218
- expect(dest).to receive(:remove_alert).with(mock_alert_json(
219
- 'name1',
220
- 'testquery1',
221
- '',
222
- nil,
223
- [2, 3]
224
- ))
224
+ expect(dest).to receive(:remove_alert).with(
225
+ mock_alert_json('name1', 'testquery1', '', nil, [2, 3])
226
+ )
225
227
  expect(dest).to receive(:remove_alert).with(existing_alerts['name2'])
226
228
 
227
229
  interferon.update_alerts_on_destination(dest, ['host'], [added], {})
@@ -231,26 +233,25 @@ describe Interferon::Interferon do
231
233
  def mock_existing_alerts
232
234
  alert1 = mock_alert_json('name1', 'testquery1', '')
233
235
  alert2 = mock_alert_json('name2', 'testquery2', '')
234
- {'name1' => alert1, 'name2' => alert2}
236
+ { 'name1' => alert1, 'name2' => alert2 }
235
237
  end
236
238
 
237
239
  class MockDest < Interferon::Destinations::Datadog
240
+ attr_reader :existing_alerts
241
+
238
242
  def initialize(the_existing_alerts)
239
243
  @existing_alerts = the_existing_alerts
240
244
  end
241
245
 
242
- def create_alert(alert, people)
246
+ def create_alert(alert, _people)
243
247
  name = alert['name']
244
248
  id = [alert['name'][-1]]
245
249
  [name, id]
246
250
  end
247
-
248
- def existing_alerts
249
- @existing_alerts
250
- end
251
251
  end
252
252
 
253
253
  DEFAULT_OPTIONS = {
254
+ 'evaluation_delay' => nil,
254
255
  'notify_audit' => true,
255
256
  'notify_no_data' => false,
256
257
  'silenced' => {},
@@ -258,13 +259,13 @@ describe Interferon::Interferon do
258
259
  'no_data_timeframe' => nil,
259
260
  'require_full_window' => nil,
260
261
  'timeout' => nil,
261
- }
262
+ }.freeze
262
263
 
263
- def mock_alert_json(name, datadog_query, message, type="metric alert", id=nil, options={})
264
+ def mock_alert_json(name, datadog_query, message, type = 'metric alert', id = nil, options = {})
264
265
  options = DEFAULT_OPTIONS.merge(options)
265
266
 
266
267
  {
267
- 'name'=> name,
268
+ 'name' => name,
268
269
  'query' => datadog_query,
269
270
  'type' => type,
270
271
  'message' => message,
@@ -273,7 +274,7 @@ describe Interferon::Interferon do
273
274
  }
274
275
  end
275
276
 
276
- def create_test_alert(name, datadog_query, message, options={})
277
+ def create_test_alert(name, datadog_query, message, options = {})
277
278
  options = DEFAULT_OPTIONS.merge(options)
278
279
 
279
280
  alert_dsl = AlertDSL.new({})
@@ -292,6 +293,7 @@ describe Interferon::Interferon do
292
293
 
293
294
  alert_dsl.no_data_timeframe(options['no_data_timeframe'])
294
295
  alert_dsl.notify_no_data(options['notify_no_data'])
296
+ alert_dsl.evaluation_delay(options['evaluation_delay'])
295
297
  alert_dsl.require_full_window(options['require_full_window'])
296
298
  alert_dsl.thresholds(options['thresholds'])
297
299
  alert_dsl.timeout(options['timeout'])
@@ -1,39 +1,39 @@
1
- require "spec_helper"
2
- require "interferon/work_hours_helper"
1
+ require 'spec_helper'
2
+ require 'interferon/work_hours_helper'
3
3
 
4
4
  describe Interferon::WorkHoursHelper do
5
5
  subject { described_class }
6
6
 
7
- describe ".now_is_work_hour?" do
8
- context "when it is a work hour in a work day" do
9
- it "return true" do
7
+ describe '.now_is_work_hour?' do
8
+ context 'when it is a work hour in a work day' do
9
+ it 'return true' do
10
10
  expect(subject.is_work_hour?(
11
- Time.parse("Mon Nov 26 9:01:20 PST 2001").utc
11
+ Time.parse('Mon Nov 26 9:01:20 PST 2001').utc
12
12
  )).to be_truthy
13
13
  expect(subject.is_work_hour?(
14
- Time.parse("Fri Nov 30 16:35:20 PST 2001").utc
14
+ Time.parse('Fri Nov 30 16:35:20 PST 2001').utc
15
15
  )).to be_truthy
16
16
  end
17
17
  end
18
18
 
19
- context "when it is a work hour in a weekend" do
20
- it "return false" do
19
+ context 'when it is a work hour in a weekend' do
20
+ it 'return false' do
21
21
  expect(subject.is_work_hour?(
22
- Time.parse("Sat Nov 24 09:01:20 PST 2001").utc
22
+ Time.parse('Sat Nov 24 09:01:20 PST 2001').utc
23
23
  )).to be_falsy
24
24
  expect(subject.is_work_hour?(
25
- Time.parse("Sun Nov 25 09:01:20 PST 2001").utc
25
+ Time.parse('Sun Nov 25 09:01:20 PST 2001').utc
26
26
  )).to be_falsy
27
27
  end
28
28
  end
29
29
 
30
- context "when it is not a work hour" do
31
- it "return false" do
30
+ context 'when it is not a work hour' do
31
+ it 'return false' do
32
32
  expect(subject.is_work_hour?(
33
- Time.parse("Thu Nov 29 08:33:20 PST 2001").utc
33
+ Time.parse('Thu Nov 29 08:33:20 PST 2001').utc
34
34
  )).to be_falsy
35
35
  expect(subject.is_work_hour?(
36
- Time.parse("Fri Nov 30 17:33:20 PST 2001").utc
36
+ Time.parse('Fri Nov 30 17:33:20 PST 2001').utc
37
37
  )).to be_falsy
38
38
  end
39
39
  end
data/spec/spec_helper.rb CHANGED
@@ -7,7 +7,7 @@ require 'helpers/logging_helper.rb'
7
7
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
8
8
  RSpec.configure do |config|
9
9
  config.expect_with :rspec do |expectations|
10
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
10
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
11
11
  end
12
12
 
13
13
  # rspec-mocks config goes here. You can use an alternate test double
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: interferon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.1.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Igor Serebryany
@@ -10,189 +9,185 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2017-04-27 00:00:00.000000000 Z
12
+ date: 2017-07-26 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: dogapi
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ~>
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
- version: '1.11'
23
- - - ! '>='
20
+ version: '1.27'
21
+ - - ">="
24
22
  - !ruby/object:Gem::Version
25
- version: 1.11.1
23
+ version: 1.27.0
26
24
  type: :runtime
27
25
  prerelease: false
28
26
  version_requirements: !ruby/object:Gem::Requirement
29
- none: false
30
27
  requirements:
31
- - - ~>
28
+ - - "~>"
32
29
  - !ruby/object:Gem::Version
33
- version: '1.11'
34
- - - ! '>='
30
+ version: '1.27'
31
+ - - ">="
35
32
  - !ruby/object:Gem::Version
36
- version: 1.11.1
33
+ version: 1.27.0
37
34
  - !ruby/object:Gem::Dependency
38
35
  name: aws-sdk
39
36
  requirement: !ruby/object:Gem::Requirement
40
- none: false
41
37
  requirements:
42
- - - ~>
38
+ - - "~>"
43
39
  - !ruby/object:Gem::Version
44
40
  version: '1.35'
45
- - - ! '>='
41
+ - - ">="
46
42
  - !ruby/object:Gem::Version
47
43
  version: 1.35.1
48
44
  type: :runtime
49
45
  prerelease: false
50
46
  version_requirements: !ruby/object:Gem::Requirement
51
- none: false
52
47
  requirements:
53
- - - ~>
48
+ - - "~>"
54
49
  - !ruby/object:Gem::Version
55
50
  version: '1.35'
56
- - - ! '>='
51
+ - - ">="
57
52
  - !ruby/object:Gem::Version
58
53
  version: 1.35.1
59
54
  - !ruby/object:Gem::Dependency
60
55
  name: dogstatsd-ruby
61
56
  requirement: !ruby/object:Gem::Requirement
62
- none: false
63
57
  requirements:
64
- - - ~>
58
+ - - "~>"
65
59
  - !ruby/object:Gem::Version
66
60
  version: '1.4'
67
- - - ! '>='
61
+ - - ">="
68
62
  - !ruby/object:Gem::Version
69
63
  version: 1.4.1
70
64
  type: :runtime
71
65
  prerelease: false
72
66
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
67
  requirements:
75
- - - ~>
68
+ - - "~>"
76
69
  - !ruby/object:Gem::Version
77
70
  version: '1.4'
78
- - - ! '>='
71
+ - - ">="
79
72
  - !ruby/object:Gem::Version
80
73
  version: 1.4.1
81
74
  - !ruby/object:Gem::Dependency
82
75
  name: diffy
83
76
  requirement: !ruby/object:Gem::Requirement
84
- none: false
85
77
  requirements:
86
- - - ~>
78
+ - - "~>"
87
79
  - !ruby/object:Gem::Version
88
80
  version: 3.1.0
89
- - - ! '>='
81
+ - - ">="
90
82
  - !ruby/object:Gem::Version
91
83
  version: 3.1.0
92
84
  type: :runtime
93
85
  prerelease: false
94
86
  version_requirements: !ruby/object:Gem::Requirement
95
- none: false
96
87
  requirements:
97
- - - ~>
88
+ - - "~>"
98
89
  - !ruby/object:Gem::Version
99
90
  version: 3.1.0
100
- - - ! '>='
91
+ - - ">="
101
92
  - !ruby/object:Gem::Version
102
93
  version: 3.1.0
103
94
  - !ruby/object:Gem::Dependency
104
95
  name: parallel
105
96
  requirement: !ruby/object:Gem::Requirement
106
- none: false
107
97
  requirements:
108
- - - ~>
98
+ - - "~>"
109
99
  - !ruby/object:Gem::Version
110
100
  version: '1.9'
111
- - - ! '>='
101
+ - - ">="
112
102
  - !ruby/object:Gem::Version
113
103
  version: 1.9.0
114
104
  type: :runtime
115
105
  prerelease: false
116
106
  version_requirements: !ruby/object:Gem::Requirement
117
- none: false
118
107
  requirements:
119
- - - ~>
108
+ - - "~>"
120
109
  - !ruby/object:Gem::Version
121
110
  version: '1.9'
122
- - - ! '>='
111
+ - - ">="
123
112
  - !ruby/object:Gem::Version
124
113
  version: 1.9.0
125
114
  - !ruby/object:Gem::Dependency
126
115
  name: nokogiri
127
116
  requirement: !ruby/object:Gem::Requirement
128
- none: false
129
117
  requirements:
130
- - - <
118
+ - - "<"
131
119
  - !ruby/object:Gem::Version
132
120
  version: 1.7.0
133
121
  type: :runtime
134
122
  prerelease: false
135
123
  version_requirements: !ruby/object:Gem::Requirement
136
- none: false
137
124
  requirements:
138
- - - <
125
+ - - "<"
139
126
  - !ruby/object:Gem::Version
140
127
  version: 1.7.0
141
128
  - !ruby/object:Gem::Dependency
142
129
  name: tzinfo
143
130
  requirement: !ruby/object:Gem::Requirement
144
- none: false
145
131
  requirements:
146
- - - ~>
132
+ - - "~>"
147
133
  - !ruby/object:Gem::Version
148
134
  version: 1.2.2
149
- - - ! '>='
135
+ - - ">="
150
136
  - !ruby/object:Gem::Version
151
137
  version: 1.2.2
152
138
  type: :runtime
153
139
  prerelease: false
154
140
  version_requirements: !ruby/object:Gem::Requirement
155
- none: false
156
141
  requirements:
157
- - - ~>
142
+ - - "~>"
158
143
  - !ruby/object:Gem::Version
159
144
  version: 1.2.2
160
- - - ! '>='
145
+ - - ">="
161
146
  - !ruby/object:Gem::Version
162
147
  version: 1.2.2
163
148
  - !ruby/object:Gem::Dependency
164
149
  name: rspec
165
150
  requirement: !ruby/object:Gem::Requirement
166
- none: false
167
151
  requirements:
168
- - - ~>
152
+ - - "~>"
169
153
  - !ruby/object:Gem::Version
170
154
  version: '3.2'
171
155
  type: :development
172
156
  prerelease: false
173
157
  version_requirements: !ruby/object:Gem::Requirement
174
- none: false
175
158
  requirements:
176
- - - ~>
159
+ - - "~>"
177
160
  - !ruby/object:Gem::Version
178
161
  version: '3.2'
179
162
  - !ruby/object:Gem::Dependency
180
163
  name: pry
181
164
  requirement: !ruby/object:Gem::Requirement
182
- none: false
183
165
  requirements:
184
- - - ~>
166
+ - - "~>"
185
167
  - !ruby/object:Gem::Version
186
168
  version: '0.10'
187
169
  type: :development
188
170
  prerelease: false
189
171
  version_requirements: !ruby/object:Gem::Requirement
190
- none: false
191
172
  requirements:
192
- - - ~>
173
+ - - "~>"
193
174
  - !ruby/object:Gem::Version
194
175
  version: '0.10'
195
- description: ': Store metrics alerts in code!'
176
+ - !ruby/object:Gem::Dependency
177
+ name: rubocop
178
+ requirement: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - '='
181
+ - !ruby/object:Gem::Version
182
+ version: 0.41.2
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - '='
188
+ - !ruby/object:Gem::Version
189
+ version: 0.41.2
190
+ description: ": Store metrics alerts in code!"
196
191
  email:
197
192
  - igor.serebryany@airbnb.com
198
193
  - jimmy.ngo@airbnb.com
@@ -201,8 +196,10 @@ executables:
201
196
  extensions: []
202
197
  extra_rdoc_files: []
203
198
  files:
204
- - .gitignore
205
- - .travis.yml
199
+ - ".gitignore"
200
+ - ".rubocop.yml"
201
+ - ".rubocop_todo.yml"
202
+ - ".travis.yml"
206
203
  - Gemfile
207
204
  - LICENSE
208
205
  - README.md
@@ -246,28 +243,27 @@ files:
246
243
  homepage: https://www.github.com/airbnb/interferon
247
244
  licenses:
248
245
  - MIT
246
+ metadata: {}
249
247
  post_install_message:
250
248
  rdoc_options: []
251
249
  require_paths:
252
250
  - lib
253
251
  required_ruby_version: !ruby/object:Gem::Requirement
254
- none: false
255
252
  requirements:
256
- - - ! '>='
253
+ - - ">="
257
254
  - !ruby/object:Gem::Version
258
255
  version: '0'
259
256
  required_rubygems_version: !ruby/object:Gem::Requirement
260
- none: false
261
257
  requirements:
262
- - - ! '>='
258
+ - - ">="
263
259
  - !ruby/object:Gem::Version
264
260
  version: '0'
265
261
  requirements: []
266
262
  rubyforge_project:
267
- rubygems_version: 1.8.23.2
263
+ rubygems_version: 2.5.2
268
264
  signing_key:
269
- specification_version: 3
270
- summary: ': Store metrics alerts in code!'
265
+ specification_version: 4
266
+ summary: ": Store metrics alerts in code!"
271
267
  test_files:
272
268
  - spec/fixtures/loaders/host_sources/test_host_source.rb
273
269
  - spec/fixtures/loaders/test_sources/order_test_source.rb