flapjack-diner 1.0.0 → 1.2.0
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.rubocop.yml +21 -0
- data/.rubocop_todo.yml +135 -0
- data/Gemfile +7 -0
- data/README.md +86 -20
- data/flapjack-diner.gemspec +11 -15
- data/lib/flapjack-diner.rb +23 -548
- data/lib/flapjack-diner/argument_validator.rb +31 -22
- data/lib/flapjack-diner/resources/checks.rb +58 -0
- data/lib/flapjack-diner/resources/contacts.rb +70 -0
- data/lib/flapjack-diner/resources/entities.rb +68 -0
- data/lib/flapjack-diner/resources/maintenance_periods.rb +82 -0
- data/lib/flapjack-diner/resources/media.rb +61 -0
- data/lib/flapjack-diner/resources/notification_rules.rb +66 -0
- data/lib/flapjack-diner/resources/notifications.rb +27 -0
- data/lib/flapjack-diner/resources/pagerduty_credentials.rb +60 -0
- data/lib/flapjack-diner/resources/reports.rb +33 -0
- data/lib/flapjack-diner/tools.rb +277 -0
- data/lib/flapjack-diner/version.rb +1 -1
- data/spec/argument_validator_spec.rb +15 -15
- data/spec/flapjack-diner_spec.rb +58 -1275
- data/spec/pacts/flapjack-diner-flapjack.json +4522 -0
- data/spec/resources/checks_spec.rb +171 -0
- data/spec/resources/contacts_spec.rb +297 -0
- data/spec/resources/entities_spec.rb +181 -0
- data/spec/resources/maintenance_periods_spec.rb +603 -0
- data/spec/resources/media_spec.rb +277 -0
- data/spec/resources/notification_rules_spec.rb +341 -0
- data/spec/resources/notifications_spec.rb +210 -0
- data/spec/resources/pagerduty_credentials_spec.rb +243 -0
- data/spec/resources/reports_spec.rb +255 -0
- data/spec/spec_helper.rb +14 -2
- metadata +35 -72
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4628fa35a6db22f5a6318835a606b1622f355dec
|
4
|
+
data.tar.gz: 548b762bb9f80d2180be0c74f12b73b32f6f60f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8bcacc5f5c584dad6cc3b6f928233eac11acb68a5830d5a676611d123eb1d4f0d83eaf2fdc6308236a243d2f0b8a9ba116680f7811b2968c8d676b59e867559
|
7
|
+
data.tar.gz: fad9ad761c145505b1a0e5fbdb79d146e6cc6226b3966481da3388e35828e444eb7a612c4d66a5406d4efd0880df77575c136f4dfa6f62b8e37877f9733b7e2e
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
@@ -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
|
data/.rubocop_todo.yml
ADDED
@@ -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
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
|
160
|
+
Returns an array of contact ids if creation succeeded, or false if creation failed.
|
148
161
|
|
149
162
|
<a name="contacts"> </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
|
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.
|
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
|
199
|
+
Returns true if updating succeeded, false if updating failed.
|
187
200
|
|
188
201
|
<a name="delete_contacts"> </a>
|
189
202
|
#### delete_contacts
|
@@ -221,12 +234,12 @@ MEDIUM
|
|
221
234
|
}
|
222
235
|
```
|
223
236
|
|
224
|
-
Returns
|
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"> </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"> </a>
|
274
|
-
####
|
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
|
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"> </a>
|
295
308
|
#### pagerduty_credentials
|
@@ -365,7 +378,7 @@ NOTIFICATION_RULE
|
|
365
378
|
}
|
366
379
|
```
|
367
380
|
|
368
|
-
Returns
|
381
|
+
Returns an array of notification rule ids if creation succeeded, or false if creation failed.
|
369
382
|
|
370
383
|
<a name="notification_rules"> </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"> </a>
|
401
|
-
####
|
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
|
448
|
+
Returns an array of entity ids if creation succeeded, or false if creation failed.
|
436
449
|
|
437
450
|
<a name="entities"> </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"> </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"> </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
|
-
|
462
|
-
|
463
|
-
`:name` and `:tags`
|
483
|
+
There are no valid update field keys yet.
|
464
484
|
|
465
|
-
|
485
|
+
The linkage operations
|
466
486
|
|
467
487
|
`:add_contact` and `:remove_contact`
|
488
|
+
`:add_tag` and `:remove_tag`
|
468
489
|
|
469
|
-
|
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"> </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"> </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.
|
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"> </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"> </a>
|
@@ -737,7 +803,7 @@ report_all = Flapjack::Diner.unscheduled_maintenance_report_checks
|
|
737
803
|
<a name="downtime_report_checks"> </a>
|
738
804
|
### downtime_report_checks
|
739
805
|
|
740
|
-
Return a report on
|
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)
|
data/flapjack-diner.gemspec
CHANGED
@@ -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 = [
|
6
|
-
gem.email = [
|
7
|
-
gem.summary =
|
8
|
-
gem.description =
|
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(
|
12
|
-
|
13
|
-
gem.
|
14
|
-
gem.
|
15
|
-
gem.
|
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
|