dogapi 1.37.0 → 1.37.1

Sign up to get free protection for your applications and to get access to all the features.
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