flapjack-diner 2.0.0b1 → 2.0.0.pre.alpha.1

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +21 -0
  3. data/.rubocop_todo.yml +135 -0
  4. data/.travis.yml +10 -5
  5. data/README.md +125 -143
  6. data/flapjack-diner.gemspec +1 -1
  7. data/lib/flapjack-diner.rb +24 -54
  8. data/lib/flapjack-diner/argument_validator.rb +17 -0
  9. data/lib/flapjack-diner/resources/checks.rb +52 -0
  10. data/lib/flapjack-diner/resources/contacts.rb +54 -0
  11. data/lib/flapjack-diner/resources/events.rb +54 -0
  12. data/lib/flapjack-diner/resources/maintenance_periods.rb +76 -0
  13. data/lib/flapjack-diner/resources/media.rb +75 -0
  14. data/lib/flapjack-diner/resources/metrics.rb +23 -0
  15. data/lib/flapjack-diner/resources/relationships.rb +275 -0
  16. data/lib/flapjack-diner/resources/rules.rb +75 -0
  17. data/lib/flapjack-diner/resources/states.rb +24 -0
  18. data/lib/flapjack-diner/resources/statistics.rb +24 -0
  19. data/lib/flapjack-diner/resources/tags.rb +47 -0
  20. data/lib/flapjack-diner/tools.rb +456 -46
  21. data/lib/flapjack-diner/version.rb +1 -1
  22. data/spec/flapjack-diner_spec.rb +18 -9
  23. data/spec/resources/checks_spec.rb +7 -7
  24. data/spec/resources/contacts_spec.rb +12 -14
  25. data/spec/resources/events_spec.rb +13 -13
  26. data/spec/resources/maintenance_periods_spec.rb +3 -3
  27. data/spec/resources/media_spec.rb +3 -3
  28. data/spec/resources/metrics_spec.rb +1 -1
  29. data/spec/{relationships_spec.rb → resources/relationships_spec.rb} +25 -71
  30. data/spec/resources/rules_spec.rb +62 -62
  31. data/spec/resources/states_spec.rb +1 -1
  32. data/spec/resources/statistics_spec.rb +1 -1
  33. data/spec/resources/tags_spec.rb +19 -75
  34. data/spec/support/fixture_data.rb +43 -80
  35. metadata +22 -17
  36. data/lib/flapjack-diner/configuration.rb +0 -417
  37. data/lib/flapjack-diner/log_formatter.rb +0 -22
  38. data/lib/flapjack-diner/query.rb +0 -114
  39. data/lib/flapjack-diner/relationships.rb +0 -180
  40. data/lib/flapjack-diner/request.rb +0 -280
  41. data/lib/flapjack-diner/resources.rb +0 -64
  42. data/lib/flapjack-diner/response.rb +0 -91
  43. data/lib/flapjack-diner/utility.rb +0 -16
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flapjack-diner
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0b1
4
+ version: 2.0.0.pre.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ali Graham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-10 00:00:00.000000000 Z
11
+ date: 2015-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.13.5
19
+ version: '0.10'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.13.5
26
+ version: '0.10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -47,6 +47,8 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - ".gitignore"
49
49
  - ".rspec"
50
+ - ".rubocop.yml"
51
+ - ".rubocop_todo.yml"
50
52
  - ".travis.yml"
51
53
  - Gemfile
52
54
  - LICENSE
@@ -55,27 +57,30 @@ files:
55
57
  - flapjack-diner.gemspec
56
58
  - lib/flapjack-diner.rb
57
59
  - lib/flapjack-diner/argument_validator.rb
58
- - lib/flapjack-diner/configuration.rb
59
60
  - lib/flapjack-diner/index_range.rb
60
- - lib/flapjack-diner/log_formatter.rb
61
- - lib/flapjack-diner/query.rb
62
- - lib/flapjack-diner/relationships.rb
63
- - lib/flapjack-diner/request.rb
64
- - lib/flapjack-diner/resources.rb
65
- - lib/flapjack-diner/response.rb
61
+ - lib/flapjack-diner/resources/checks.rb
62
+ - lib/flapjack-diner/resources/contacts.rb
63
+ - lib/flapjack-diner/resources/events.rb
64
+ - lib/flapjack-diner/resources/maintenance_periods.rb
65
+ - lib/flapjack-diner/resources/media.rb
66
+ - lib/flapjack-diner/resources/metrics.rb
67
+ - lib/flapjack-diner/resources/relationships.rb
68
+ - lib/flapjack-diner/resources/rules.rb
69
+ - lib/flapjack-diner/resources/states.rb
70
+ - lib/flapjack-diner/resources/statistics.rb
71
+ - lib/flapjack-diner/resources/tags.rb
66
72
  - lib/flapjack-diner/tools.rb
67
- - lib/flapjack-diner/utility.rb
68
73
  - lib/flapjack-diner/version.rb
69
74
  - log/.gitkeep
70
75
  - spec/argument_validator_spec.rb
71
76
  - spec/flapjack-diner_spec.rb
72
- - spec/relationships_spec.rb
73
77
  - spec/resources/checks_spec.rb
74
78
  - spec/resources/contacts_spec.rb
75
79
  - spec/resources/events_spec.rb
76
80
  - spec/resources/maintenance_periods_spec.rb
77
81
  - spec/resources/media_spec.rb
78
82
  - spec/resources/metrics_spec.rb
83
+ - spec/resources/relationships_spec.rb
79
84
  - spec/resources/rules_spec.rb
80
85
  - spec/resources/states_spec.rb
81
86
  - spec/resources/statistics_spec.rb
@@ -101,20 +106,20 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
106
  version: 1.3.1
102
107
  requirements: []
103
108
  rubyforge_project:
104
- rubygems_version: 2.4.5.1
109
+ rubygems_version: 2.4.8
105
110
  signing_key:
106
111
  specification_version: 4
107
112
  summary: Access the API of a Flapjack system monitoring server
108
113
  test_files:
109
114
  - spec/argument_validator_spec.rb
110
115
  - spec/flapjack-diner_spec.rb
111
- - spec/relationships_spec.rb
112
116
  - spec/resources/checks_spec.rb
113
117
  - spec/resources/contacts_spec.rb
114
118
  - spec/resources/events_spec.rb
115
119
  - spec/resources/maintenance_periods_spec.rb
116
120
  - spec/resources/media_spec.rb
117
121
  - spec/resources/metrics_spec.rb
122
+ - spec/resources/relationships_spec.rb
118
123
  - spec/resources/rules_spec.rb
119
124
  - spec/resources/states_spec.rb
120
125
  - spec/resources/statistics_spec.rb
@@ -1,417 +0,0 @@
1
- require 'flapjack-diner/request'
2
- require 'flapjack-diner/response'
3
-
4
- require 'flapjack-diner/argument_validator'
5
-
6
- module Flapjack
7
- module Diner
8
- module Configuration
9
-
10
- RESOURCES_GET = {
11
- [:fields, :sort, :include] => :string_or_array_of_strings,
12
- :filter => :hash,
13
- [:page, :per_page] => :positive_integer
14
- }
15
-
16
- # relationships are extracted from flapjack data models'
17
- # "jsonapi_associations" class methods
18
-
19
- RESOURCES = {
20
- :acknowledgements => {
21
- :resource => 'acknowledgement',
22
- :requests => {
23
- :post => {
24
- :duration => :positive_integer,
25
- :summary => :non_empty_string,
26
- [:check, :tag] => :singular_link_uuid
27
- },
28
- },
29
- :request_validations => {
30
- :post => proc {
31
- # _events_validate_association(data, 'acknowledgement')
32
- }
33
- },
34
- :relationships => {
35
- :check => {
36
- :post => true,
37
- :number => :singular, :link => false, :includable => false,
38
- :resource => 'check'
39
- },
40
- :tag => {
41
- :post => true,
42
- :number => :singular, :link => false, :includable => false,
43
- :resource => 'tag'
44
- }
45
- }
46
- },
47
-
48
- :checks => {
49
- :resource => 'check',
50
- :requests => {
51
- :post => {
52
- :id => :uuid,
53
- :name => [:required, :non_empty_string],
54
- :enabled => :boolean,
55
- :initial_failure_delay => :positive_integer,
56
- :repeat_failure_delay => :positive_integer,
57
- # :initial_recovery_delay => :positive_integer,
58
- :tags => :multiple_link_uuid
59
- },
60
- :get => RESOURCES_GET,
61
- :patch => {
62
- :id => [:required, :uuid],
63
- :name => :non_empty_string,
64
- :enabled => :boolean,
65
- :initial_failure_delay => :positive_integer,
66
- :repeat_failure_delay => :positive_integer,
67
- # :initial_recovery_delay => :positive_integer,
68
- :tags => :multiple_link_uuid
69
- },
70
- :delete => {}
71
- },
72
- :relationships => {
73
- :alerting_media => {
74
- :get => true,
75
- :number => :multiple, :link => true, :includable => true,
76
- :resource => 'medium'
77
- },
78
- :contacts => {
79
- :get => true,
80
- :number => :multiple, :link => true, :includable => true,
81
- :resource => 'contact'
82
- },
83
- :current_scheduled_maintenances => {
84
- :get => true,
85
- :number => :multiple, :link => true, :includable => true,
86
- :resource => 'scheduled_maintenance'
87
- },
88
- :current_state => {
89
- :get => true,
90
- :number => :singular, :link => true, :includable => true,
91
- :resource => 'state'
92
- },
93
- :current_unscheduled_maintenance => {
94
- :get => true,
95
- :number => :singular, :link => true, :includable => true,
96
- :resource => 'unscheduled_maintenance'
97
- },
98
- :latest_notifications => {
99
- :get => true,
100
- :number => :multiple, :link => true, :includable => true,
101
- :resource => 'state'
102
- },
103
- :scheduled_maintenances => {
104
- :get => true,
105
- :number => :multiple, :link => true, :includable => false,
106
- :resource => 'scheduled_maintenance'
107
- },
108
- :states => {
109
- :get => true,
110
- :number => :multiple, :link => true, :includable => false,
111
- :resource => 'state'
112
- },
113
- :tags => {
114
- :post => true, :get => true, :patch => true, :delete => true,
115
- :number => :multiple, :link => true, :includable => true,
116
- :resource => 'tag'
117
- },
118
- :unscheduled_maintenances => {
119
- :get => true,
120
- :number => :multiple, :link => true, :includable => false,
121
- :resource => 'unscheduled_maintenance'
122
- }
123
- }
124
- },
125
-
126
- :contacts => {
127
- :resource => 'contact',
128
- :requests => {
129
- :post => {
130
- :id => :uuid,
131
- :name => [:required, :non_empty_string],
132
- :timezone => :non_empty_string,
133
- :tags => :multiple_link_uuid
134
- },
135
- :get => RESOURCES_GET,
136
- :patch => {
137
- :id => [:required, :uuid],
138
- [:name, :timezone] => :non_empty_string,
139
- :tags => :multiple_link_uuid
140
- },
141
- :delete => {}
142
- },
143
- :relationships => {
144
- :checks => {
145
- :get => true,
146
- :number => :multiple, :link => true, :includable => true,
147
- :resource => 'check'
148
- },
149
- :media => {
150
- :get => true,
151
- :number => :multiple, :link => true, :includable => true,
152
- :resource => 'medium'
153
- },
154
- :rules => {
155
- :get => :true,
156
- :number => :multiple, :link => true, :includable => true,
157
- :resource => 'rule'
158
- },
159
- :tags => {
160
- :post => true, :get => true, :patch => true, :delete => true,
161
- :number => :multiple, :link => true, :includable => true,
162
- :resource => 'tag'
163
- }
164
- }
165
- },
166
-
167
- :media => {
168
- :resource => 'medium',
169
- :requests => {
170
- :post => {
171
- :id => :uuid,
172
- :transport => [:non_empty_string, :required],
173
- [:address, :pagerduty_subdomain,
174
- :pagerduty_token] => :non_empty_string,
175
- [:interval, :rollup_threshold,
176
- :pagerduty_ack_duration] => :positive_integer,
177
- :contact => [:singular_link_uuid, :required],
178
- :rules => :multiple_link_uuid
179
- },
180
- :get => RESOURCES_GET,
181
- :patch => {
182
- :id => [:uuid, :required],
183
- [:address, :pagerduty_subdomain,
184
- :pagerduty_token] => :non_empty_string,
185
- [:interval, :rollup_threshold,
186
- :pagerduty_ack_duration] => :positive_integer,
187
- :rules => :multiple_link_uuid
188
- },
189
- :delete => {}
190
- },
191
- :relationships => {
192
- :alerting_checks => {
193
- :get => true,
194
- :number => :multiple, :link => true, :includable => true,
195
- :resource => 'check'
196
- },
197
- :contact => {
198
- :post => true, :get => true,
199
- :number => :singular, :link => true, :includable => true,
200
- :resource => 'contact'
201
- },
202
- :rules => {
203
- :post => true, :get => true, :patch => true, :delete => true,
204
- :number => :multiple, :link => true, :includable => true,
205
- :resource => 'rule'
206
- }
207
- }
208
- },
209
-
210
- :metrics => {
211
- :resource => 'metrics',
212
- :requests => {
213
- :get => {
214
- :fields => :string_or_array_of_strings
215
- }
216
- }
217
- },
218
-
219
- :rules => {
220
- :resource => 'rule',
221
- :requests => {
222
- :post => {
223
- :id => :uuid,
224
- :name => :string,
225
- :enabled => :boolean,
226
- :blackhole => :boolean,
227
- :strategy => :string,
228
- :conditions_list => :string,
229
- :time_restriction_ical => :string,
230
- :contact => [:singular_link_uuid, :required],
231
- [:media, :tags] => :multiple_link_uuid
232
- },
233
- :get => RESOURCES_GET,
234
- :patch => {
235
- :id => [:uuid, :required],
236
- :name => :string,
237
- :enabled => :boolean,
238
- :blackhole => :boolean,
239
- :strategy => :string,
240
- :conditions_list => :string,
241
- :time_restriction_ical => :string,
242
- [:media, :tags] => :multiple_link_uuid
243
- },
244
- :delete => {}
245
- },
246
- :relationships => {
247
- :contact => {
248
- :post => true, :get => true,
249
- :number => :singular, :link => true, :includable => true,
250
- :resource => 'contact'
251
- },
252
- :media => {
253
- :post => true, :get => true, :patch => true, :delete => true,
254
- :number => :multiple, :link => true, :includable => true,
255
- :resource => 'medium'
256
- },
257
- :tags => {
258
- :post => true, :get => true, :patch => true, :delete => true,
259
- :number => :multiple, :link => true, :includable => true,
260
- :resource => 'tag'
261
- }
262
- }
263
- },
264
-
265
- :scheduled_maintenances => {
266
- :resource => 'scheduled_maintenance',
267
- :requests => {
268
- :post => {
269
- :id => :uuid,
270
- [:start_time, :end_time] => [:required, :time],
271
- :summary => :non_empty_string,
272
- [:check, :tag] => :singular_link_uuid
273
- },
274
- :request_validations => {
275
- :post => proc {
276
- # _maintenance_periods_validate_association(data, 'scheduled maintenance period')
277
- }
278
- },
279
- :patch => {
280
- :id => [:required, :uuid],
281
- [:start_time, :end_time] => :time
282
- },
283
- :delete => {}
284
- },
285
- :relationships => {
286
- :check => {
287
- :post => true, :get => true,
288
- :number => :singular, :link => true, :includable => true,
289
- :resource => 'check'
290
- },
291
- :tag => {
292
- :post => true,
293
- :number => :singular, :link => false, :includable => false,
294
- :resource => 'tag'
295
- }
296
- }
297
- },
298
-
299
- :states => {
300
- :resource => 'state',
301
- :requests => {
302
- :get => RESOURCES_GET
303
- },
304
- :relationships => {
305
- :check => {
306
- :get => true,
307
- :number => :singular, :link => true, :includable => true,
308
- :resource => 'check'
309
- }
310
- }
311
- },
312
-
313
- :statistics => {
314
- :resource => 'statistic',
315
- :requests => {
316
- :get => RESOURCES_GET
317
- }
318
- },
319
-
320
- :tags => {
321
- :resource => 'tag',
322
- :requests => {
323
- :post => {
324
- :id => :uuid,
325
- :name => [:required, :non_empty_string],
326
- [:checks, :contacts, :rules] => :multiple_link_uuid
327
- },
328
- :get => RESOURCES_GET,
329
- :patch => {
330
- :id => [:required, :uuid],
331
- :name => :non_empty_string,
332
- [:checks, :contacts, :rules] => :multiple_link_uuid
333
- },
334
- :delete => {}
335
- },
336
- :relationships => {
337
- :checks => {
338
- :post => true, :get => true, :patch => true, :delete => true,
339
- :number => :multiple, :link => true, :includable => true,
340
- :resource => 'check'
341
- },
342
- :contacts => {
343
- :post => true, :get => true, :patch => true, :delete => true,
344
- :number => :multiple, :link => true, :includable => true,
345
- :resource => 'contact'
346
- },
347
- :rules => {
348
- :post => true, :get => true, :patch => true, :delete => true,
349
- :number => :multiple, :link => true, :includable => true,
350
- :resource => 'rule'
351
- },
352
- :scheduled_maintenances => {
353
- :get => true,
354
- :number => :multiple, :link => true, :includable => false,
355
- :resource => 'scheduled_maintenance'
356
- },
357
- :states => {
358
- :get => true,
359
- :number => :multiple, :link => true, :includable => false,
360
- :resource => 'state'
361
- },
362
- :unscheduled_maintenances => {
363
- :get => true,
364
- :number => :multiple, :link => true, :includable => false,
365
- :resource => 'unscheduled_maintenance'
366
- }
367
- }
368
- },
369
-
370
- :test_notifications => {
371
- :resource => 'test_notification',
372
- :requests => {
373
- :post => {
374
- :summary => :non_empty_string,
375
- :condition => :non_empty_string,
376
- [:check, :tag] => :singular_link_uuid
377
- }
378
- },
379
- :request_validations => {
380
- :post => proc {
381
- # _events_validate_association(data, 'test notification')
382
- }
383
- },
384
- :relationships => {
385
- :check => {
386
- :post => true,
387
- :number => :singular, :link => false, :includable => false,
388
- :resource => 'check'
389
- },
390
- :tag => {
391
- :post => true,
392
- :number => :singular, :link => false, :includable => false,
393
- :resource => 'tag'
394
- }
395
- }
396
- },
397
-
398
- :unscheduled_maintenances => {
399
- :resource => 'unscheduled_maintenance',
400
- :requests => {
401
- :patch => {
402
- :id => [:required, :uuid],
403
- :end_time => [:required, :time]
404
- }
405
- },
406
- :relationships => {
407
- :check => {
408
- :get => true,
409
- :number => :singular, :link => false, :includable => true,
410
- :resource => 'check'
411
- }
412
- }
413
- }
414
- }
415
- end
416
- end
417
- end