dogapi 1.37.0 → 1.37.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 762f1d3fe87b94278a55cca80da8824b0c2db3c420ea9e8192cd1f33d7a274ce
4
- data.tar.gz: c60248ed8d4cc8e3d3f96662651878f42591bd336c4c6d58511489e504474607
3
+ metadata.gz: a0e225d4414b99557764e07500fa9d7526691cf6a0316645ec80bab21be47951
4
+ data.tar.gz: 3b95a96e0ea39720d6cf0ef0cc9970371a008a36af076f612c1ff3421048b13f
5
5
  SHA512:
6
- metadata.gz: '09565868bb18c71030b625b908a8783f83f135e237c6e6fe8600ecd745141c34cd3e2bc019fb24ad84d01fdb5b839d56cd4dc57db9fe751b37c13ec43f31593b'
7
- data.tar.gz: d93617177693a86273716dd2ccc99bb3e79ef2aa77a44cd021a635a7181e34df9485592a2ed341c9cae50407007add7a9e30348a77212aea28ab7332da2b38bb
6
+ metadata.gz: 5523a7f0a3625c83049cd7d3cabd5435fcaaf6193962a2b60b3c7e0694ae4a4d83b28d7f630f983ab0c9f39d69886d0e7da7131b234f548314d22cbe14a0938a
7
+ data.tar.gz: e3a816e30b120f82732a785fad4afbc80d856b3729a7be365f76eb4e84b590ab198dc265784097531386a7b420d426561b9f07d703efcee5c68ca5c0ae83bf5c
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2019-10-23 14:52:35 -0500 using RuboCop version 0.49.1.
3
+ # on 2018-10-01 12:52:09 +0200 using RuboCop version 0.49.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -51,14 +51,14 @@ Layout/EmptyLines:
51
51
  - 'lib/capistrano/datadog/v2.rb'
52
52
  - 'lib/dogapi/facade.rb'
53
53
 
54
- # Offense count: 78
54
+ # Offense count: 63
55
55
  # Cop supports --auto-correct.
56
56
  # Configuration parameters: EnforcedStyle, SupportedStyles.
57
57
  # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines
58
58
  Layout/EmptyLinesAroundClassBody:
59
59
  Enabled: false
60
60
 
61
- # Offense count: 4
61
+ # Offense count: 1
62
62
  # Cop supports --auto-correct.
63
63
  Layout/EmptyLinesAroundMethodBody:
64
64
  Exclude:
@@ -85,20 +85,10 @@ Layout/ExtraSpacing:
85
85
 
86
86
  # Offense count: 2
87
87
  # Cop supports --auto-correct.
88
- # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
89
- # SupportedStyles: consistent, special_for_inner_method_call, special_for_inner_method_call_in_parentheses
90
- Layout/FirstParameterIndentation:
91
- Exclude:
92
- - 'spec/spec_helper.rb'
93
-
94
- # Offense count: 3
95
- # Cop supports --auto-correct.
96
- # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
88
+ # Configuration parameters: SupportedStyles, IndentationWidth.
97
89
  # SupportedStyles: special_inside_parentheses, consistent, align_braces
98
90
  Layout/IndentHash:
99
- Exclude:
100
- - 'lib/dogapi/v1/event.rb'
101
- - 'lib/dogapi/v1/service_level_objective.rb'
91
+ EnforcedStyle: consistent
102
92
 
103
93
  # Offense count: 1
104
94
  # Cop supports --auto-correct.
@@ -130,7 +120,7 @@ Layout/SpaceAfterComma:
130
120
  Exclude:
131
121
  - 'examples/custom_metric.rb'
132
122
 
133
- # Offense count: 83
123
+ # Offense count: 75
134
124
  # Cop supports --auto-correct.
135
125
  # Configuration parameters: EnforcedStyle, SupportedStyles.
136
126
  # SupportedStyles: space, no_space
@@ -157,29 +147,12 @@ Layout/SpaceAroundOperators:
157
147
  - 'examples/custom_metric.rb'
158
148
  - 'lib/dogapi/event.rb'
159
149
 
160
- # Offense count: 8
161
- # Cop supports --auto-correct.
162
- Layout/SpaceBeforeComma:
163
- Exclude:
164
- - 'lib/dogapi/facade.rb'
165
- - 'lib/dogapi/v1/service_level_objective.rb'
166
-
167
- # Offense count: 2
150
+ # Offense count: 1
168
151
  # Cop supports --auto-correct.
169
152
  # Configuration parameters: AllowForAlignment.
170
153
  Layout/SpaceBeforeFirstArg:
171
154
  Exclude:
172
155
  - 'lib/capistrano/datadog/v2.rb'
173
- - 'lib/dogapi/v1/service_level_objective.rb'
174
-
175
- # Offense count: 6
176
- # Cop supports --auto-correct.
177
- # Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SupportedStylesForEmptyBraces.
178
- # SupportedStyles: space, no_space, compact
179
- # SupportedStylesForEmptyBraces: space, no_space
180
- Layout/SpaceInsideHashLiteralBraces:
181
- Exclude:
182
- - 'spec/integration/service_level_objective_spec.rb'
183
156
 
184
157
  # Offense count: 1
185
158
  # Cop supports --auto-correct.
@@ -228,42 +201,44 @@ Lint/UselessAssignment:
228
201
  Exclude:
229
202
  - 'lib/capistrano/datadog.rb'
230
203
 
231
- # Offense count: 13
204
+ # Offense count: 11
232
205
  Metrics/AbcSize:
233
206
  Max: 51
234
207
 
235
- # Offense count: 24
208
+ # Offense count: 18
236
209
  # Configuration parameters: CountComments, ExcludedMethods.
237
210
  Metrics/BlockLength:
238
- Max: 102
211
+ Max: 96
212
+ Exclude:
213
+ - 'spec/integration/monitor_spec.rb'
239
214
 
240
- # Offense count: 5
215
+ # Offense count: 2
241
216
  Metrics/CyclomaticComplexity:
242
- Max: 11
217
+ Max: 8
243
218
 
244
- # Offense count: 18
219
+ # Offense count: 15
245
220
  # Configuration parameters: CountComments.
246
221
  Metrics/MethodLength:
247
222
  Max: 34
248
223
 
249
- # Offense count: 7
224
+ # Offense count: 2
250
225
  # Configuration parameters: CountKeywordArgs.
251
226
  Metrics/ParameterLists:
252
- Max: 11
227
+ Max: 7
253
228
 
254
- # Offense count: 4
229
+ # Offense count: 1
255
230
  Metrics/PerceivedComplexity:
256
- Max: 12
231
+ Max: 9
257
232
 
258
- # Offense count: 13
233
+ # Offense count: 11
259
234
  Style/AccessorMethodName:
260
235
  Exclude:
261
236
  - 'lib/dogapi/facade.rb'
262
237
  - 'lib/dogapi/v1/alert.rb'
263
238
  - 'lib/dogapi/v1/dash.rb'
264
- - 'lib/dogapi/v1/dashboard.rb'
265
239
  - 'lib/dogapi/v1/embed.rb'
266
240
  - 'lib/dogapi/v1/screenboard.rb'
241
+ - 'lib/dogapi/v1/dashboard.rb'
267
242
  - 'lib/dogapi/v1/user.rb'
268
243
 
269
244
  # Offense count: 1
@@ -308,7 +283,7 @@ Style/ClassMethods:
308
283
  Exclude:
309
284
  - 'lib/dogapi/common.rb'
310
285
 
311
- # Offense count: 3
286
+ # Offense count: 2
312
287
  Style/ClassVars:
313
288
  Exclude:
314
289
  - 'lib/dogapi/common.rb'
@@ -320,24 +295,24 @@ Style/ColonMethodCall:
320
295
  - 'lib/capistrano/datadog.rb'
321
296
  - 'lib/capistrano/datadog/v2.rb'
322
297
 
323
- # Offense count: 1
298
+ # Offense count: 2
324
299
  # Cop supports --auto-correct.
325
300
  # Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerBackticks.
326
301
  # SupportedStyles: backticks, percent_x, mixed
327
302
  Style/CommandLiteral:
328
303
  Exclude:
304
+ - 'lib/capistrano/datadog.rb'
329
305
  - 'lib/dogapi/common.rb'
330
306
 
331
- # Offense count: 2
307
+ # Offense count: 1
332
308
  # Cop supports --auto-correct.
333
309
  # Configuration parameters: EnforcedStyle, SupportedStyles, SingleLineConditionsOnly, IncludeTernaryExpressions.
334
310
  # SupportedStyles: assign_to_condition, assign_inside_condition
335
311
  Style/ConditionalAssignment:
336
312
  Exclude:
337
313
  - 'lib/capistrano/datadog.rb'
338
- - 'lib/dogapi/v1/service_level_objective.rb'
339
314
 
340
- # Offense count: 21
315
+ # Offense count: 20
341
316
  # Cop supports --auto-correct.
342
317
  Style/DefWithParentheses:
343
318
  Exclude:
@@ -347,9 +322,28 @@ Style/DefWithParentheses:
347
322
  - 'lib/dogapi/v1/metric.rb'
348
323
  - 'lib/dogapi/v1/screenboard.rb'
349
324
 
350
- # Offense count: 23
325
+ # Offense count: 21
351
326
  Style/Documentation:
352
- Enabled: false
327
+ Exclude:
328
+ - 'spec/**/*'
329
+ - 'test/**/*'
330
+ - 'lib/capistrano/datadog.rb'
331
+ - 'lib/capistrano/datadog/v2.rb'
332
+ - 'lib/capistrano/datadog/v3.rb'
333
+ - 'lib/dogapi/common.rb'
334
+ - 'lib/dogapi/v1/alert.rb'
335
+ - 'lib/dogapi/v1/comment.rb'
336
+ - 'lib/dogapi/v1/dash.rb'
337
+ - 'lib/dogapi/v1/metadata.rb'
338
+ - 'lib/dogapi/v1/monitor.rb'
339
+ - 'lib/dogapi/v1/screenboard.rb'
340
+ - 'lib/dogapi/v1/search.rb'
341
+ - 'lib/dogapi/v1/service_check.rb'
342
+ - 'lib/dogapi/v1/snapshot.rb'
343
+ - 'lib/dogapi/v1/user.rb'
344
+ - 'lib/dogapi/v1/integration.rb'
345
+ - 'lib/dogapi/v1/usage.rb'
346
+ - 'lib/dogapi/v1/metric.rb'
353
347
 
354
348
  # Offense count: 1
355
349
  # Cop supports --auto-correct.
@@ -357,7 +351,7 @@ Style/EmptyLiteral:
357
351
  Exclude:
358
352
  - 'lib/dogapi/v1/metric.rb'
359
353
 
360
- # Offense count: 3
354
+ # Offense count: 2
361
355
  # Configuration parameters: MinBodyLength.
362
356
  Style/GuardClause:
363
357
  Exclude:
@@ -405,7 +399,7 @@ Style/LineEndConcatenation:
405
399
  Exclude:
406
400
  - 'dogapi.gemspec'
407
401
 
408
- # Offense count: 18
402
+ # Offense count: 15
409
403
  # Cop supports --auto-correct.
410
404
  Style/MethodCallWithoutArgsParentheses:
411
405
  Exclude:
@@ -420,7 +414,7 @@ Style/MultilineIfThen:
420
414
  Exclude:
421
415
  - 'lib/capistrano/datadog.rb'
422
416
 
423
- # Offense count: 30
417
+ # Offense count: 21
424
418
  # Cop supports --auto-correct.
425
419
  Style/MutableConstant:
426
420
  Enabled: false
@@ -440,17 +434,12 @@ Style/Not:
440
434
  Exclude:
441
435
  - 'lib/dogapi/v1/metric.rb'
442
436
 
443
- # Offense count: 1
444
- # Cop supports --auto-correct.
445
- # Configuration parameters: Strict.
446
- Style/NumericLiterals:
447
- MinDigits: 8
448
-
449
- # Offense count: 4
437
+ # Offense count: 5
450
438
  # Cop supports --auto-correct.
451
439
  # Configuration parameters: PreferredDelimiters.
452
440
  Style/PercentLiteralDelimiters:
453
441
  Exclude:
442
+ - 'lib/capistrano/datadog.rb'
454
443
  - 'lib/dogapi/common.rb'
455
444
  - 'spec/integration/event_spec.rb'
456
445
  - 'spec/integration/monitor_spec.rb'
@@ -463,11 +452,12 @@ Style/PreferredHashMethods:
463
452
  Exclude:
464
453
  - 'lib/dogapi/common.rb'
465
454
 
466
- # Offense count: 2
455
+ # Offense count: 3
467
456
  # Cop supports --auto-correct.
468
457
  Style/RedundantBegin:
469
458
  Exclude:
470
459
  - 'lib/capistrano/datadog.rb'
460
+ - 'lib/dogapi/common.rb'
471
461
  - 'lib/dogapi/v1/metric.rb'
472
462
 
473
463
  # Offense count: 2
@@ -507,7 +497,7 @@ Style/SpecialGlobalVars:
507
497
  Exclude:
508
498
  - 'dogapi.gemspec'
509
499
 
510
- # Offense count: 23
500
+ # Offense count: 22
511
501
  # Cop supports --auto-correct.
512
502
  # Configuration parameters: EnforcedStyle, SupportedStyles, ConsistentQuotesInMultiline.
513
503
  # SupportedStyles: single_quotes, double_quotes
@@ -519,7 +509,6 @@ Style/StringLiterals:
519
509
  - 'examples/Capfile'
520
510
  - 'examples/custom_event.rb'
521
511
  - 'lib/dogapi/event.rb'
522
- - 'spec/integration/service_level_objective_spec.rb'
523
512
 
524
513
  # Offense count: 10
525
514
  # Cop supports --auto-correct.
@@ -537,11 +526,11 @@ Style/TrailingCommaInLiteral:
537
526
 
538
527
  # Offense count: 2
539
528
  # Cop supports --auto-correct.
540
- # Configuration parameters: SupportedStyles, WordRegex.
529
+ # Configuration parameters: EnforcedStyle, SupportedStyles, MinSize, WordRegex.
541
530
  # SupportedStyles: percent, brackets
542
531
  Style/WordArray:
543
- EnforcedStyle: percent
544
- MinSize: 3
532
+ Exclude:
533
+ - 'examples/custom_event.rb'
545
534
 
546
535
  # Offense count: 1
547
536
  # Cop supports --auto-correct.
@@ -1,5 +1,9 @@
1
1
  # Changes
2
2
 
3
+ ## 1.37.1 / 2019-11-04
4
+
5
+ * [BUGFIX] Revert the Service Level Objective feature to remove an issue with older versions of Ruby < 2.0. See [#198][]
6
+
3
7
  ## 1.37.0 / 2019-11-04
4
8
 
5
9
  * [FEATURE] Add Service Level Objectives support. See [#188][], thanks [@platinummonkey][]
@@ -257,6 +261,7 @@ This is the last release compatible with Ruby 1.8. ([EOL 2013-06-30](https://www
257
261
  [#188]: https://github.com/DataDog/dogapi-rb/issues/188
258
262
  [#189]: https://github.com/DataDog/dogapi-rb/issues/189
259
263
  [#192]: https://github.com/DataDog/dogapi-rb/issues/192
264
+ [#198]: https://github.com/DataDog/dogapi-rb/issues/198
260
265
  [@ArjenSchwarz]: https://github.com/ArjenSchwarz
261
266
  [@Kaixiang]: https://github.com/Kaixiang
262
267
  [@TaylURRE]: https://github.com/TaylURRE
@@ -284,4 +289,4 @@ This is the last release compatible with Ruby 1.8. ([EOL 2013-06-30](https://www
284
289
  [@unclebconnor]: https://github.com/unclebconnor
285
290
  [@winebarrel]: https://github.com/winebarrel
286
291
  [@wonko]: https://github.com/wonko
287
- [@yyuu]: https://github.com/yyuu
292
+ [@yyuu]: https://github.com/yyuu
@@ -95,8 +95,6 @@ module Dogapi
95
95
  @hosts_svc = Dogapi::V1::HostsService.new(@api_key, @application_key, silent, timeout, @datadog_host)
96
96
  @integration_svc = Dogapi::V1::IntegrationService.new(@api_key, @application_key, silent, timeout, @datadog_host)
97
97
  @usage_svc = Dogapi::V1::UsageService.new(@api_key, @application_key, silent, timeout, @datadog_host)
98
- @service_level_objective_svc = Dogapi::V1::ServiceLevelObjectiveService.new(@api_key, @application_key, silent,
99
- timeout, @datadog_host)
100
98
 
101
99
  # Support for Dashboard List API v2.
102
100
  @v2 = Dogapi::ClientV2.new(@api_key, @application_key, true, true, @datadog_host)
@@ -618,58 +616,6 @@ module Dogapi
618
616
  @monitor_svc.unmute_host(hostname)
619
617
  end
620
618
 
621
- #
622
- # SERVICE LEVEL OBJECTIVES
623
- #
624
-
625
- def create_service_level_objective(type: , name: , description: nil, tags: nil, thresholds: nil, numerator: nil,
626
- denominator: nil, monitor_ids: nil, monitor_search: nil, groups: nil)
627
- @service_level_objective_svc.create_service_level_objective(type: type, name: name, description: description,
628
- tags: tags, thresholds: thresholds,
629
- numerator: numerator, denominator: denominator,
630
- monitor_ids: monitor_ids,
631
- monitor_search: monitor_search, groups: groups)
632
- end
633
-
634
- def update_service_level_objective(slo_id: , type: , name: nil, description: nil, tags: nil, thresholds: nil,
635
- numerator: nil, denominator: nil, monitor_ids: nil, monitor_search: nil,
636
- groups: nil)
637
- @service_level_objective_svc.update_service_level_objective(slo_id: slo_id, type: type, name: name,
638
- description: description, tags: tags,
639
- thresholds: thresholds, numerator: numerator,
640
- denominator: denominator, monitor_ids: monitor_ids,
641
- monitor_search: monitor_search, groups: groups)
642
- end
643
-
644
- def get_service_level_objective(slo_id)
645
- @service_level_objective_svc.get_service_level_objective(slo_id)
646
- end
647
-
648
- def get_service_level_objective_history(slo_id, from_ts, to_ts)
649
- @service_level_objective_svc.get_service_level_objective_history(slo_id, from_ts, to_ts)
650
- end
651
-
652
- def search_service_level_objective(slo_ids: nil, query: nil, offset: nil, limit: nil)
653
- @service_level_objective_svc.search_service_level_objective(slo_ids: slo_ids, query: query, offset: offset,
654
- limit: limit)
655
- end
656
-
657
- def can_delete_service_level_objective(slo_ids)
658
- @service_level_objective_svc.can_delete_service_level_objective(slo_ids)
659
- end
660
-
661
- def delete_service_level_objective(slo_id)
662
- @service_level_objective_svc.delete_service_level_objective(slo_id)
663
- end
664
-
665
- def delete_many_service_level_objective(slo_ids)
666
- @service_level_objective_svc.delete_many_service_level_objective(slo_ids)
667
- end
668
-
669
- def delete_timeframes_service_level_objective(ops)
670
- @service_level_objective_svc.delete_timeframes_service_level_objective(ops)
671
- end
672
-
673
619
  #
674
620
  # SERVICE CHECKS
675
621
  #
@@ -11,7 +11,6 @@ require 'dogapi/v1/monitor'
11
11
  require 'dogapi/v1/screenboard'
12
12
  require 'dogapi/v1/search'
13
13
  require 'dogapi/v1/service_check'
14
- require 'dogapi/v1/service_level_objective'
15
14
  require 'dogapi/v1/snapshot'
16
15
  require 'dogapi/v1/tag'
17
16
  require 'dogapi/v1/user'
@@ -1,3 +1,3 @@
1
1
  module Dogapi
2
- VERSION = '1.37.0'
2
+ VERSION = '1.37.1'
3
3
  end
@@ -42,22 +42,6 @@ module SpecDog
42
42
  end
43
43
  end
44
44
 
45
- shared_examples 'an api method with named args' do |command, args, request, endpoint, body|
46
- it 'queries the api' do
47
- url = api_url + endpoint
48
- old_url = old_api_url + endpoint
49
- stub_request(request, /#{url}|#{old_url}/).to_return(body: '{}').then.to_raise(StandardError)
50
- expect(dog.send(command, **args)).to eq ['200', {}]
51
-
52
- body = MultiJson.dump(body) if body
53
-
54
- expect(WebMock).to have_requested(request, /#{url}|#{old_url}/).with(
55
- # ignore query: default_query -- here as in the test it's never properly included
56
- body: body
57
- )
58
- end
59
- end
60
-
61
45
  shared_examples 'an api method with options' do |command, args, request, endpoint, body|
62
46
  include_examples 'an api method', command, args, request, endpoint, body
63
47
  it 'queries the api with options' do
@@ -89,20 +73,6 @@ module SpecDog
89
73
  end
90
74
  end
91
75
 
92
- shared_examples 'an api method with named args making params' do |command, args, request, endpoint, params|
93
- it 'queries the api with params' do
94
- url = api_url + endpoint
95
- stub_request(request, /#{url}/).to_return(body: '{}').then.to_raise(StandardError)
96
- expect(dog.send(command, **args)).to eq ['200', {}]
97
- params.each { |k, v| params[k] = v.join(',') if v.is_a? Array }
98
- # hack/note: do not merge with default_query for this test case
99
-
100
- expect(WebMock).to have_requested(request, url).with(
101
- query: params
102
- )
103
- end
104
- end
105
-
106
76
  shared_examples 'an api method with optional params' do |command, args, request, endpoint, opt_params|
107
77
  include_examples 'an api method', command, args, request, endpoint
108
78
  it 'queries the api with optional params' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dogapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.37.0
4
+ version: 1.37.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-04 00:00:00.000000000 Z
11
+ date: 2019-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -114,7 +114,6 @@ files:
114
114
  - lib/dogapi/v1/screenboard.rb
115
115
  - lib/dogapi/v1/search.rb
116
116
  - lib/dogapi/v1/service_check.rb
117
- - lib/dogapi/v1/service_level_objective.rb
118
117
  - lib/dogapi/v1/snapshot.rb
119
118
  - lib/dogapi/v1/tag.rb
120
119
  - lib/dogapi/v1/usage.rb
@@ -137,7 +136,6 @@ files:
137
136
  - spec/integration/screenboard_spec.rb
138
137
  - spec/integration/search_spec.rb
139
138
  - spec/integration/service_check_spec.rb
140
- - spec/integration/service_level_objective_spec.rb
141
139
  - spec/integration/snapshot_spec.rb
142
140
  - spec/integration/tag_spec.rb
143
141
  - spec/integration/usage_spec.rb
@@ -196,7 +194,6 @@ test_files:
196
194
  - spec/integration/screenboard_spec.rb
197
195
  - spec/integration/search_spec.rb
198
196
  - spec/integration/service_check_spec.rb
199
- - spec/integration/service_level_objective_spec.rb
200
197
  - spec/integration/snapshot_spec.rb
201
198
  - spec/integration/tag_spec.rb
202
199
  - spec/integration/usage_spec.rb
@@ -1,117 +0,0 @@
1
- require 'dogapi'
2
-
3
- module Dogapi
4
- class V1 # for namespacing
5
-
6
- # Implements Service Level Objectives endpoints
7
- class ServiceLevelObjectiveService < Dogapi::APIService
8
-
9
- API_VERSION = 'v1'
10
-
11
- def create_service_level_objective(type: , name: , description: nil, tags: nil, thresholds: nil,
12
- numerator: nil, denominator: nil, monitor_ids: nil, monitor_search: nil,
13
- groups: nil)
14
- body = {
15
- type: type,
16
- name: name,
17
- thresholds: thresholds
18
- }
19
- if type == 'metric'
20
- body[:query] = {
21
- numerator: numerator,
22
- denominator: denominator
23
- }
24
- else
25
- body[:monitor_search] = monitor_search unless monitor_search.nil?
26
- body[:monitor_ids] = monitor_ids unless monitor_ids.nil?
27
- body[:groups] = groups unless groups.nil?
28
- end
29
- body[:tags] = tags unless tags.nil?
30
- body[:description] = description unless description.nil?
31
-
32
- request(Net::HTTP::Post, "/api/#{API_VERSION}/slo", nil, body, true)
33
- end
34
-
35
- def update_service_level_objective(slo_id: , type: , name: nil, description: nil, tags: nil,
36
- thresholds: nil, numerator: nil, denominator: nil, monitor_ids: nil,
37
- monitor_search: nil, groups: nil)
38
- body = {
39
- type: type
40
- }
41
-
42
- body[:name] = name unless name.nil?
43
-
44
- body[:thresholds] = thresholds unless thresholds.nil?
45
-
46
- if type == 'metric'
47
- if !numerator.nil? && !denominator.nil?
48
- body[:query] = {
49
- numerator: numerator,
50
- denominator: denominator
51
- }
52
- end
53
- else
54
- body[:monitor_search] = monitor_search unless monitor_search.nil?
55
- body[:monitor_ids] = monitor_ids unless monitor_ids.nil?
56
- body[:groups] = groups unless groups.nil?
57
- end
58
- body[:tags] = tags unless tags.nil?
59
- body[:description] = description unless description.nil?
60
-
61
- request(Net::HTTP::Put, "/api/#{API_VERSION}/slo/#{slo_id}", nil, body, true)
62
- end
63
-
64
- def get_service_level_objective(slo_id)
65
- request(Net::HTTP::Get, "/api/#{API_VERSION}/slo/#{slo_id}", nil, nil, false)
66
- end
67
-
68
- def search_service_level_objective(slo_ids: nil, query: nil, offset: nil, limit: nil)
69
- params = {}
70
- params[:offset] = offset unless offset.nil?
71
- params[:limit] = limit unless limit.nil?
72
- if !slo_ids.nil?
73
- params[:ids] = slo_ids.join(',')
74
- else
75
- params[:query] = query
76
- end
77
-
78
- request(Net::HTTP::Get, "/api/#{API_VERSION}/slo/", params, nil, false)
79
- end
80
-
81
- def delete_service_level_objective(slo_id)
82
- request(Net::HTTP::Delete, "/api/#{API_VERSION}/slo/#{slo_id}", nil, nil, false)
83
- end
84
-
85
- def delete_many_service_level_objective(slo_ids)
86
- body = {
87
- ids: slo_ids
88
- }
89
- request(Net::HTTP::Delete, "/api/#{API_VERSION}/slo/", nil, body, true)
90
- end
91
-
92
- def delete_timeframes_service_level_objective(ops)
93
- # ops is a hash of slo_id: [<timeframe>] to delete
94
- request(Net::HTTP::Post, "/api/#{API_VERSION}/slo/bulk_delete", nil, ops, true)
95
- end
96
-
97
- def get_service_level_objective_history(slo_id, from_ts, to_ts)
98
- params = {
99
- from_ts: from_ts,
100
- to_ts: to_ts
101
- }
102
- request(Net::HTTP::Get, "/api/#{API_VERSION}/slo/#{slo_id}/history", params, nil, false)
103
- end
104
-
105
- def can_delete_service_level_objective(slo_ids)
106
- params = {}
107
- if slo_ids.is_a?Array
108
- params[:ids] = slo_ids.join(',')
109
- else
110
- params[:ids] = slo_ids
111
- end
112
- request(Net::HTTP::Get, "/api/#{API_VERSION}/slo/can_delete", params, nil, false)
113
- end
114
-
115
- end
116
- end
117
- end
@@ -1,71 +0,0 @@
1
- require_relative '../spec_helper'
2
-
3
- describe Dogapi::Client do
4
- SLO_ID = '42424242424242424242424242424242'.freeze
5
- SLO_TYPE = 'metric'.freeze
6
- SLO_NAME = 'test slo'.freeze
7
- SLO_DESCRIPTION = 'test slo description'.freeze
8
- SLO_QUERY_NUMERATOR = 'sum:test.metric.metric{type:good}.as_count()'.freeze
9
- SLO_QUERY_DENOMINATOR = 'sum:test.metric.metric{*}.as_count()'.freeze
10
- SLO_TAGS = ['type:test'].freeze
11
- SLO_THRESHOLDS = [{ timeframe: '7d', target: 90 }, { timeframe: '30d', target: 95 }].freeze
12
-
13
- describe '#create_service_level_objective' do
14
- it_behaves_like 'an api method with named args',
15
- :create_service_level_objective, {type: SLO_TYPE, name: SLO_NAME, description: SLO_DESCRIPTION,
16
- tags: SLO_TAGS, thresholds: SLO_THRESHOLDS,
17
- numerator: SLO_QUERY_NUMERATOR,
18
- denominator: SLO_QUERY_DENOMINATOR},
19
- :post, '/slo', 'type' => SLO_TYPE, 'name' => SLO_NAME, 'thresholds' => SLO_THRESHOLDS,
20
- 'query' => { numerator: SLO_QUERY_NUMERATOR, denominator: SLO_QUERY_DENOMINATOR },
21
- 'tags' => SLO_TAGS, 'description' => SLO_DESCRIPTION
22
- end
23
-
24
- describe '#update_service_level_objective' do
25
- it_behaves_like 'an api method with named args',
26
- :update_service_level_objective, {slo_id: SLO_ID, type: SLO_TYPE, name: SLO_NAME},
27
- :put, "/slo/#{SLO_ID}", 'type' => SLO_TYPE, 'name' => SLO_NAME
28
- end
29
-
30
- describe '#get_service_level_objective' do
31
- it_behaves_like 'an api method',
32
- :get_service_level_objective, [SLO_ID],
33
- :get, "/slo/#{SLO_ID}"
34
- end
35
-
36
- describe '#get_service_level_objective_history' do
37
- it_behaves_like 'an api method with params',
38
- :get_service_level_objective_history, [SLO_ID],
39
- :get, "/slo/#{SLO_ID}/history", 'from_ts' => 0, 'to_ts' => 1000000
40
- end
41
-
42
- describe '#can_delete_service_level_objective' do
43
- it_behaves_like 'an api method with params',
44
- :can_delete_service_level_objective, [],
45
- :get, "/slo/can_delete", 'ids' => [SLO_ID]
46
- end
47
-
48
- describe '#search_service_level_objective' do
49
- it_behaves_like 'an api method with named args making params',
50
- :search_service_level_objective, {slo_ids: [SLO_ID]},
51
- :get, '/slo/', 'ids' => SLO_ID
52
- end
53
-
54
- describe '#delete_service_level_objective' do
55
- it_behaves_like 'an api method',
56
- :delete_service_level_objective, [SLO_ID],
57
- :delete, "/slo/#{SLO_ID}"
58
- end
59
-
60
- describe '#delete_many_service_level_objective' do
61
- it_behaves_like 'an api method',
62
- :delete_many_service_level_objective, [[SLO_ID]],
63
- :delete, '/slo/', 'ids' => [SLO_ID]
64
- end
65
-
66
- describe '#delete_timeframes_service_level_objective' do
67
- it_behaves_like 'an api method',
68
- :delete_timeframes_service_level_objective, [{ SLO_ID => ['7d'] }],
69
- :post, '/slo/bulk_delete', SLO_ID => ['7d']
70
- end
71
- end