interferon 0.1.0 → 0.1.3

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