flapjack-diner 1.0.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.rubocop.yml +21 -0
  4. data/.rubocop_todo.yml +135 -0
  5. data/Gemfile +7 -0
  6. data/README.md +86 -20
  7. data/flapjack-diner.gemspec +11 -15
  8. data/lib/flapjack-diner.rb +23 -548
  9. data/lib/flapjack-diner/argument_validator.rb +31 -22
  10. data/lib/flapjack-diner/resources/checks.rb +58 -0
  11. data/lib/flapjack-diner/resources/contacts.rb +70 -0
  12. data/lib/flapjack-diner/resources/entities.rb +68 -0
  13. data/lib/flapjack-diner/resources/maintenance_periods.rb +82 -0
  14. data/lib/flapjack-diner/resources/media.rb +61 -0
  15. data/lib/flapjack-diner/resources/notification_rules.rb +66 -0
  16. data/lib/flapjack-diner/resources/notifications.rb +27 -0
  17. data/lib/flapjack-diner/resources/pagerduty_credentials.rb +60 -0
  18. data/lib/flapjack-diner/resources/reports.rb +33 -0
  19. data/lib/flapjack-diner/tools.rb +277 -0
  20. data/lib/flapjack-diner/version.rb +1 -1
  21. data/spec/argument_validator_spec.rb +15 -15
  22. data/spec/flapjack-diner_spec.rb +58 -1275
  23. data/spec/pacts/flapjack-diner-flapjack.json +4522 -0
  24. data/spec/resources/checks_spec.rb +171 -0
  25. data/spec/resources/contacts_spec.rb +297 -0
  26. data/spec/resources/entities_spec.rb +181 -0
  27. data/spec/resources/maintenance_periods_spec.rb +603 -0
  28. data/spec/resources/media_spec.rb +277 -0
  29. data/spec/resources/notification_rules_spec.rb +341 -0
  30. data/spec/resources/notifications_spec.rb +210 -0
  31. data/spec/resources/pagerduty_credentials_spec.rb +243 -0
  32. data/spec/resources/reports_spec.rb +255 -0
  33. data/spec/spec_helper.rb +14 -2
  34. metadata +35 -72
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7bc53c0acbb77a8fc45124c30169732da0100e08
4
- data.tar.gz: d410e73ad72d5a2abe8cecb51feebf18624e63db
3
+ metadata.gz: 4628fa35a6db22f5a6318835a606b1622f355dec
4
+ data.tar.gz: 548b762bb9f80d2180be0c74f12b73b32f6f60f5
5
5
  SHA512:
6
- metadata.gz: 1fe5070021949b3011cc81ca5d72c2b546d25e53a0c70a8b8d235cae5b2035252a9519629fd7ddfe3d531e3c83b000cf715cee8ac7d9c5bf83cfae1889a613c6
7
- data.tar.gz: 9e8f1f80171a83a223b92aaf2ac39a73bf23b08adcd2d9abc4487a980e1df636d45d1ebda78268850e466a6ba2e93a4c19e05abacb938dfb4abe25b43978032d
6
+ metadata.gz: c8bcacc5f5c584dad6cc3b6f928233eac11acb68a5830d5a676611d123eb1d4f0d83eaf2fdc6308236a243d2f0b8a9ba116680f7811b2968c8d676b59e867559
7
+ data.tar.gz: fad9ad761c145505b1a0e5fbdb79d146e6cc6226b3966481da3388e35828e444eb7a612c4d66a5406d4efd0880df77575c136f4dfa6f62b8e37877f9733b7e2e
data/.gitignore CHANGED
@@ -3,12 +3,12 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
- Gemfile.lock
7
6
  InstalledFiles
8
7
  _yardoc
9
8
  coverage
10
9
  doc/
11
10
  lib/bundler/man
11
+ log/
12
12
  pkg
13
13
  rdoc
14
14
  spec/reports
@@ -0,0 +1,21 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ AllCops:
4
+ Exclude:
5
+ - 'lib/flapjack-diner.rb'
6
+
7
+ # doesn't handle multi-file state
8
+ Documentation:
9
+ Enabled: false
10
+
11
+ Style/HashSyntax:
12
+ EnforcedStyle: hash_rockets
13
+
14
+ Style/SignalException:
15
+ EnforcedStyle: only_raise
16
+
17
+ Style/SpaceInsideBlockBraces:
18
+ SpaceBeforeBlockParameters: false
19
+
20
+ Style/SpaceInsideHashLiteralBraces:
21
+ EnforcedStyle: no_space
@@ -0,0 +1,135 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`.
2
+ # The point is for the user to remove these configuration records
3
+ # one by one as the offences are removed from the code base.
4
+
5
+ # AccessorMethodName:
6
+ # Enabled: false
7
+
8
+ # AlignArray:
9
+ # Enabled: false
10
+
11
+ # AlignHash:
12
+ # Enabled: false
13
+
14
+ # AlignParameters:
15
+ # Enabled: false
16
+
17
+ # AndOr:
18
+ # Enabled: false
19
+
20
+ # AssignmentInCondition:
21
+ # Enabled: false
22
+
23
+ # BlockAlignment:
24
+ # Enabled: false
25
+
26
+ # BlockNesting:
27
+ # Max: 4
28
+
29
+ # Blocks:
30
+ # Enabled: false
31
+
32
+ # BracesAroundHashParameters:
33
+ # Enabled: false
34
+
35
+ # CaseIndentation:
36
+ # Enabled: false
37
+
38
+ # ClassLength:
39
+ # Max: 221
40
+
41
+ # CollectionMethods:
42
+ # Enabled: false
43
+
44
+ # CommentAnnotation:
45
+ # Enabled: false
46
+
47
+ # CyclomaticComplexity:
48
+ # Max: 32
49
+
50
+ # DotPosition:
51
+ # Enabled: false
52
+
53
+ # EmptyLines:
54
+ # Enabled: false
55
+
56
+ # EmptyLinesAroundBody:
57
+ # Enabled: false
58
+
59
+ # EndAlignment:
60
+ # Enabled: false
61
+
62
+ # FavorUnlessOverNegatedIf:
63
+ # Enabled: false
64
+
65
+ # FinalNewline:
66
+ # Enabled: false
67
+
68
+ # HashMethods:
69
+ # Enabled: false
70
+
71
+ # IfUnlessModifier:
72
+ # Enabled: false
73
+
74
+ # IndentationWidth:
75
+ # Enabled: false
76
+
77
+ # LineLength:
78
+ # Max: 120
79
+
80
+ # MethodCallParentheses:
81
+ # Enabled: false
82
+
83
+ # MethodLength:
84
+ # Max: 95
85
+
86
+ # MultilineBlockChain:
87
+ # Enabled: false
88
+
89
+ # ParenthesesAroundCondition:
90
+ # Enabled: false
91
+
92
+ # PredicateName:
93
+ # Enabled: false
94
+
95
+ # RaiseArgs:
96
+ # Enabled: false
97
+
98
+ # RedundantSelf:
99
+ # Enabled: false
100
+
101
+ # RescueException:
102
+ # Enabled: false
103
+
104
+ # Semicolon:
105
+ # Enabled: false
106
+
107
+ # ShadowingOuterLocalVariable:
108
+ # Enabled: false
109
+
110
+ # SpaceAfterNot:
111
+ # Enabled: false
112
+
113
+ # SpaceAroundOperators:
114
+ # Enabled: false
115
+
116
+ # SpaceInsideHashLiteralBraces:
117
+ # Enabled: false
118
+
119
+ # SpaceInsideParens:
120
+ # Enabled: false
121
+
122
+ # SpecialGlobalVars:
123
+ # Enabled: false
124
+
125
+ # StringLiterals:
126
+ # Enabled: false
127
+
128
+ # TrivialAccessors:
129
+ # Enabled: false
130
+
131
+ # UselessAssignment:
132
+ # Enabled: false
133
+
134
+ # WordArray:
135
+ # Enabled: false
data/Gemfile CHANGED
@@ -2,3 +2,10 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in flapjack-diner.gemspec
4
4
  gemspec
5
+
6
+ group :test do
7
+ gem 'rspec', '>= 3.0'
8
+ gem 'webmock'
9
+ gem 'simplecov', :require => false
10
+ gem 'pact'
11
+ end
data/README.md CHANGED
@@ -36,6 +36,16 @@ Optionally, set a logger to log requests & responses:
36
36
  Flapjack::Diner.logger = Logger.new('logs/flapjack_diner.log')
37
37
  ```
38
38
 
39
+ If you want to alter timeout periods for HTTP connection open and reading responses:
40
+
41
+ ```ruby
42
+ # Set HTTP connect timeout to 30 seconds
43
+ Flapjack::Diner.open_timeout(30)
44
+
45
+ # Set HTTP read timeout to 5 minutes
46
+ Flapjack::Diner.read_timeout(300)
47
+ ```
48
+
39
49
  If you want the old behaviour wrt returning hashes with keys as strings (they're now symbols by default) then:
40
50
 
41
51
  ```ruby
@@ -52,7 +62,7 @@ Parameters for all of **flapjack-diner**'s functions are organised into three ca
52
62
 
53
63
  While these can be passed in in any order, the convention is that they will be ordered as listed above.
54
64
 
55
- If any operation fails, `Flapjack::Diner.last_error` will contain an error message regarding the failure.
65
+ If any operation fails (returning nil), `Flapjack::Diner.last_error` will contain an error message regarding the failure.
56
66
 
57
67
  ### Contacts
58
68
 
@@ -86,6 +96,7 @@ If any operation fails, `Flapjack::Diner.last_error` will contain an error messa
86
96
 
87
97
  * [create_entities](#create_entities)
88
98
  * [entities](#entities)
99
+ * [entities_matching](#entities_matching)
89
100
  * [update_entities](#update_entities)
90
101
 
91
102
  * [create_scheduled_maintenances_entities](#create_scheduled_maintenances_entities)
@@ -98,7 +109,9 @@ If any operation fails, `Flapjack::Diner.last_error` will contain an error messa
98
109
 
99
110
  ### Checks
100
111
 
112
+ * [create_checks](#create_checks)
101
113
  * [checks](#checks)
114
+ * [update_checks](#update_checks)
102
115
 
103
116
  * [create_scheduled_maintenances_checks](#create_scheduled_maintenances_checks)
104
117
  * [delete_scheduled_maintenances_checks](#delete_scheduled_maintenances_checks)
@@ -144,7 +157,7 @@ CONTACT
144
157
  }
145
158
  ```
146
159
 
147
- Returns true if creation succeeded or false if creation failed.
160
+ Returns an array of contact ids if creation succeeded, or false if creation failed.
148
161
 
149
162
  <a name="contacts">&nbsp;</a>
150
163
  #### contacts
@@ -172,18 +185,18 @@ Flapjack::Diner.update_contacts(ID1, ID2, ..., :key => value, ...)
172
185
 
173
186
  Acceptable update field keys are
174
187
 
175
- `:first_name`, `:last_name`, `:email`, and `:tags`
188
+ `:first_name`, `:last_name`, `:email`
176
189
 
177
190
  as well as the linkage operations
178
191
 
179
192
  `:add_entity`, `:remove_entity`
180
193
  `:add_notification_rule`, `:remove_notification_rule`
181
194
 
182
- which take the id of the relevant resource as the value.
195
+ which take the id (for entity and notification rule) of the relevant resource as the value.
183
196
 
184
- (NB: `:add_medium` and `:remove_medium` are not supported in Flapjack v1.0 but should be in future versions.)
197
+ (NB: `:add_medium` and `:remove_medium` are not supported in Flapjack v1.x but will be in future versions.)
185
198
 
186
- Returns true if updating succeeded or false if updating failed.
199
+ Returns true if updating succeeded, false if updating failed.
187
200
 
188
201
  <a name="delete_contacts">&nbsp;</a>
189
202
  #### delete_contacts
@@ -221,12 +234,12 @@ MEDIUM
221
234
  }
222
235
  ```
223
236
 
224
- Returns true if creation succeeded or false if creation failed.
237
+ Returns an array of media ids if creation succeeded, or false if creation failed. (Ids cannot be passed in for media records in Flapjack v1.x.)
225
238
 
226
239
  <a name="media">&nbsp;</a>
227
240
  #### media
228
241
 
229
- Return data for one, some or all notification media. Notification media ids are formed by compounding their linked contact's ID and their type in a string (e.g. '23_sms')
242
+ Return data for one, some or all notification media. Notification media ids are formed by compounding their linked contact's ID and their type in a string (e.g. '23_sms').
230
243
 
231
244
  ```ruby
232
245
  medium = Flapjack::Diner.media(ID)
@@ -271,7 +284,7 @@ Returns true if deletion succeeded or false if deletion failed.
271
284
  ---
272
285
 
273
286
  <a name="create_contact_pagerduty_credentials">&nbsp;</a>
274
- #### create_contact_media
287
+ #### create_contact_pagerduty_credentials
275
288
 
276
289
  Create pagerduty credentials for a contact.
277
290
 
@@ -289,7 +302,7 @@ PAGERDUTY_CREDENTIALS
289
302
  }
290
303
  ```
291
304
 
292
- Returns true if creation succeeded or false if creation failed.
305
+ Returns an array of contact ids if creation succeeded, or false if creation failed. (As contacts may only have one set of pagerduty credentials, Flapjack v1.x does not store a separate data model, thus theses objects have no separate ids.)
293
306
 
294
307
  <a name="pagerduty_credentials">&nbsp;</a>
295
308
  #### pagerduty_credentials
@@ -365,7 +378,7 @@ NOTIFICATION_RULE
365
378
  }
366
379
  ```
367
380
 
368
- Returns true if creation succeeded or false if creation failed.
381
+ Returns an array of notification rule ids if creation succeeded, or false if creation failed.
369
382
 
370
383
  <a name="notification_rules">&nbsp;</a>
371
384
  #### notification_rules
@@ -398,7 +411,7 @@ Acceptable update field keys are
398
411
  Returns true if updating succeeded or false if updating failed.
399
412
 
400
413
  <a name="delete_notification_rules">&nbsp;</a>
401
- #### delete_contacts
414
+ #### delete_notification_rules
402
415
 
403
416
  Delete one or more notification rules.
404
417
 
@@ -432,7 +445,7 @@ ENTITY
432
445
  }
433
446
  ```
434
447
 
435
- Returns true if creation succeeded or false if creation failed.
448
+ Returns an array of entity ids if creation succeeded, or false if creation failed.
436
449
 
437
450
  <a name="entities">&nbsp;</a>
438
451
  ### entities
@@ -445,6 +458,15 @@ some_entities = Flapjack::Diner.entities(ID1, ID2, ...)
445
458
  all_entities = Flapjack::Diner.entities
446
459
  ```
447
460
 
461
+ <a name="entities_matching">&nbsp;</a>
462
+ ### entities_matching
463
+
464
+ Returns an array of entities matching a given regular expression
465
+
466
+ ```ruby
467
+ entities = Flapjack::Diner.entities_matching(/^db-app-01/)
468
+ ```
469
+
448
470
  <a name="update_entities">&nbsp;</a>
449
471
  ### update_entities
450
472
 
@@ -458,15 +480,14 @@ Flapjack::Diner.update_entities(ID, :key => value, ...)
458
480
  Flapjack::Diner.update_entities(ID1, ID2, ..., :key => value, ...)
459
481
  ```
460
482
 
461
- Acceptable update field keys are
462
-
463
- `:name` and `:tags`
483
+ There are no valid update field keys yet.
464
484
 
465
- as well as the linkage operations
485
+ The linkage operations
466
486
 
467
487
  `:add_contact` and `:remove_contact`
488
+ `:add_tag` and `:remove_tag`
468
489
 
469
- which take the id of the relevant contact as the value.
490
+ take the id (for contact) or the name (for tag) of the relevant resource as the value.
470
491
 
471
492
  Returns true if updating succeeded or false if updating failed.
472
493
 
@@ -552,17 +573,62 @@ Returns true if creation succeeded or false if creation failed.
552
573
 
553
574
  ---
554
575
 
576
+ <a name="create_checks">&nbsp;</a>
577
+ ### create_checks
578
+
579
+ Create one or more checks.
580
+
581
+ ```ruby
582
+ Flapjack::Diner.create_checks([CHECK, ...])
583
+ ```
584
+
585
+ ```
586
+ CHECK
587
+ {
588
+ :entity_id => STRING,
589
+ :name => STRING,
590
+ :tags => [STRING, ...]
591
+ }
592
+ ```
593
+
594
+ Returns an array of check ids if creation succeeded, or false if creation failed. (Check ids are composed by joining together the check's entity's name, the character ':' and the check's name.)
595
+
555
596
  <a name="checks">&nbsp;</a>
556
597
  ### checks
557
598
 
558
599
  Return basic identity data for one, some or all checks. (Check ids are composed by joining together the check's entity's name, the character ':' and the check's name.)
559
600
 
560
601
  ```ruby
561
- check = Flapjack::Diner.check(ID)
602
+ check = Flapjack::Diner.checks(ID)
562
603
  some_checks = Flapjack::Diner.checks(ID1, ID2, ...)
563
604
  all_checks = Flapjack::Diner.checks
564
605
  ```
565
606
 
607
+ <a name="update_checks">&nbsp;</a>
608
+ ### update_checks
609
+
610
+ Update data for one or more checks. (Check ids are composed by joining together the check's entity's name, the character ':' and the check's name.)
611
+
612
+ ```ruby
613
+ # update values for one checks
614
+ Flapjack::Diner.update_checks(ID, :key => value, ...)
615
+
616
+ # update values for multiple checks
617
+ Flapjack::Diner.update_checks(ID1, ID2, ..., :key => value, ...)
618
+ ```
619
+
620
+ Acceptable update field keys are
621
+
622
+ `:enabled`
623
+
624
+ as well as the linkage operations
625
+
626
+ `:add_tag` and `:remove_tag`
627
+
628
+ which take the name of the tag as the value.
629
+
630
+ Returns true if updating succeeded or false if updating failed.
631
+
566
632
  ---
567
633
 
568
634
  <a name="create_scheduled_maintenances_checks">&nbsp;</a>
@@ -737,7 +803,7 @@ report_all = Flapjack::Diner.unscheduled_maintenance_report_checks
737
803
  <a name="downtime_report_checks">&nbsp;</a>
738
804
  ### downtime_report_checks
739
805
 
740
- Return a report on downtim data for one, some or all checks. (Check ids are composed by joining together the check's entity's name, the character ':' and the check's name.)
806
+ Return a report on downtime data for one, some or all checks. (Check ids are composed by joining together the check's entity's name, the character ':' and the check's name.)
741
807
 
742
808
  ```ruby
743
809
  report = Flapjack::Diner.downtime_report_checks(CHECK_ID)
@@ -2,25 +2,21 @@
2
2
  require File.expand_path('../lib/flapjack-diner/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.authors = ["Ali Graham"]
6
- gem.email = ["ali.graham@bulletproof.net"]
7
- gem.summary = %q{Access the API of a Flapjack system monitoring server}
8
- gem.description = %q{Wraps raw API calls to a Flapjack server API with friendlier ruby methods.}
5
+ gem.authors = ['Ali Graham']
6
+ gem.email = ['ali.graham@bulletproof.net']
7
+ gem.summary = 'Access the API of a Flapjack system monitoring server'
8
+ gem.description = 'Wraps raw API calls to a Flapjack server API with ' \
9
+ 'friendlier ruby methods.'
9
10
  gem.homepage = 'https://github.com/flapjack/flapjack-diner'
10
11
 
11
- gem.files = `git ls-files`.split($\) - ['Gemfile.lock']
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
- gem.name = "flapjack-diner"
15
- gem.require_paths = ["lib"]
12
+ gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR) -
13
+ ['Gemfile.lock']
14
+ gem.executables = gem.files.grep(/^bin\//).map {|f| File.basename(f) }
15
+ gem.test_files = gem.files.grep(/^(test|spec|features)\//)
16
+ gem.name = 'flapjack-diner'
17
+ gem.require_paths = ['lib']
16
18
  gem.version = Flapjack::Diner::VERSION
17
19
 
18
20
  gem.add_dependency('httparty', '>= 0.10')
19
21
  gem.add_dependency('json', '>= 1.7.7')
20
-
21
- gem.add_development_dependency('bundler')
22
- gem.add_development_dependency('rake')
23
- gem.add_development_dependency('rspec', '~> 2.0')
24
- gem.add_development_dependency('simplecov')
25
- gem.add_development_dependency('webmock')
26
22
  end