wavefront-sdk 3.3.4 → 3.4.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/.travis.yml +4 -4
- data/HISTORY.md +4 -0
- data/lib/wavefront-sdk/core/exception.rb +2 -0
- data/lib/wavefront-sdk/defs/version.rb +1 -1
- data/lib/wavefront-sdk/derivedmetric.rb +1 -1
- data/lib/wavefront-sdk/serviceaccount.rb +95 -0
- data/lib/wavefront-sdk/validators.rb +62 -34
- data/spec/.rubocop.yml +1 -1
- data/spec/support/minitest_assertions.rb +3 -3
- data/spec/wavefront-sdk/serviceaccount_spec.rb +65 -0
- data/spec/wavefront-sdk/validators_spec.rb +14 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf113855e97fd18cd468edb2eb47cc94ff7551ffdfd4eae01d151f3dd83f843d
|
4
|
+
data.tar.gz: 2af7243524750797cb4da86732a0e39a0b7d050052a8b540ce732aa22a2ce516
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8690b71bfe78192af6360fcebea3c95e19901d4f8f673d8fb557533d91982c2f394b9f4462e3e2827eb2d7171e25b9a11885d080e44c85ea6aeb0d66dceb01ea
|
7
|
+
data.tar.gz: 6ef9ab034e8f48df21a54aa122b1f6b6a3dbc03e716dcd91e4e1b752b918f71bb693912041aeadad0837692cb0fffd955d71e70ba9dca5f84390ce0c9e264ff2
|
data/.travis.yml
CHANGED
@@ -2,9 +2,9 @@ language: ruby
|
|
2
2
|
cache: bundler
|
3
3
|
rvm:
|
4
4
|
- 2.3.8
|
5
|
-
- 2.4.
|
6
|
-
- 2.5.
|
7
|
-
- 2.6.
|
5
|
+
- 2.4.7
|
6
|
+
- 2.5.6
|
7
|
+
- 2.6.4
|
8
8
|
before_install: gem install bundler --no-document
|
9
9
|
deploy:
|
10
10
|
provider: rubygems
|
@@ -14,7 +14,7 @@ deploy:
|
|
14
14
|
on:
|
15
15
|
tags: true
|
16
16
|
repo: snltd/wavefront-sdk
|
17
|
-
ruby: 2.6.
|
17
|
+
ruby: 2.6.4
|
18
18
|
notifications:
|
19
19
|
email: false
|
20
20
|
slack:
|
data/HISTORY.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 3.4.0 (2019-09-28)
|
4
|
+
* Add `serviceaccount` class.
|
5
|
+
* Validator exceptions now return the value which failed validation.
|
6
|
+
|
3
7
|
## 3.3.4 (2019-09-18)
|
4
8
|
* Upgrade Rubocop dev dependency to 0.74.0, and make codebase compliant with
|
5
9
|
those standards. No interfaces are changed.
|
@@ -31,12 +31,14 @@ module Wavefront
|
|
31
31
|
class InvalidMetricValue < RuntimeError; end
|
32
32
|
class InvalidName < RuntimeError; end
|
33
33
|
class InvalidNotificantId < RuntimeError; end
|
34
|
+
class InvalidPermission < RuntimeError; end
|
34
35
|
class InvalidPoint < RuntimeError; end
|
35
36
|
class InvalidPrefixLength < RuntimeError; end
|
36
37
|
class InvalidProxyId < RuntimeError; end
|
37
38
|
class InvalidRelativeTime < RuntimeError; end
|
38
39
|
class InvalidSavedSearchEntity < RuntimeError; end
|
39
40
|
class InvalidSavedSearchId < RuntimeError; end
|
41
|
+
class InvalidServiceAccountId < RuntimeError; end
|
40
42
|
class InvalidSourceId < RuntimeError; end
|
41
43
|
class InvalidString < RuntimeError; end
|
42
44
|
class InvalidTag < RuntimeError; end
|
@@ -74,7 +74,7 @@ module Wavefront
|
|
74
74
|
# a hash describing the existing object, and modify that with
|
75
75
|
# the new body. If false, pass the new body straight through.
|
76
76
|
# @return [Wavefront::Response]
|
77
|
-
|
77
|
+
#
|
78
78
|
def update(id, body, modify = true)
|
79
79
|
wf_derivedmetric_id?(id)
|
80
80
|
raise ArgumentError unless body.is_a?(Hash)
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'core/api'
|
4
|
+
|
5
|
+
module Wavefront
|
6
|
+
#
|
7
|
+
# Manage and query Wavefront service accounts
|
8
|
+
#
|
9
|
+
class ServiceAccount < CoreApi
|
10
|
+
def api_base
|
11
|
+
'/account/serviceaccount'
|
12
|
+
end
|
13
|
+
|
14
|
+
# GET /api/v2/account/serviceaccount
|
15
|
+
# Get all service accounts
|
16
|
+
#
|
17
|
+
# @param offset [Integer] webhook at which the list begins
|
18
|
+
# @param limit [Integer] the number of webhooks to return
|
19
|
+
#
|
20
|
+
def list
|
21
|
+
api.get('')
|
22
|
+
end
|
23
|
+
|
24
|
+
# POST /api/v2/account/serviceaccount
|
25
|
+
# Creates a service account
|
26
|
+
# Refer to the Swagger API docs for valid keys.
|
27
|
+
#
|
28
|
+
# @param body [Hash] description of service account
|
29
|
+
# @return [Wavefront::Response]
|
30
|
+
#
|
31
|
+
def create(body)
|
32
|
+
raise ArgumentError unless body.is_a?(Hash)
|
33
|
+
|
34
|
+
api.post('', body, 'application/json')
|
35
|
+
end
|
36
|
+
|
37
|
+
# GET /api/v2/account/serviceaccount/{id}
|
38
|
+
# Retrieves a service account by identifier
|
39
|
+
#
|
40
|
+
# @param id [String, Integer] ID of the account
|
41
|
+
# @return [Wavefront::Response]
|
42
|
+
#
|
43
|
+
def describe(id)
|
44
|
+
wf_serviceaccount_id?(id)
|
45
|
+
api.get(id)
|
46
|
+
end
|
47
|
+
|
48
|
+
# PUT /api/v2/account/serviceaccount/{id}
|
49
|
+
# Updates the service account
|
50
|
+
#
|
51
|
+
# @param id [String] a Wavefront service account ID
|
52
|
+
# @param body [Hash] key-value hash of the parameters you wish
|
53
|
+
# to change
|
54
|
+
# @param modify [true, false] if true, use {#describe()} to get
|
55
|
+
# a hash describing the existing object, and modify that with
|
56
|
+
# the new body. If false, pass the new body straight through.
|
57
|
+
# @return [Wavefront::Response]
|
58
|
+
#
|
59
|
+
def update(id, body, modify = true)
|
60
|
+
wf_serviceaccount_id?(id)
|
61
|
+
raise ArgumentError unless body.is_a?(Hash)
|
62
|
+
|
63
|
+
return api.put(id, body, 'application/json') unless modify
|
64
|
+
|
65
|
+
api.put(id, hash_for_update(describe(id).response, body),
|
66
|
+
'application/json')
|
67
|
+
end
|
68
|
+
|
69
|
+
# POST /api/v2/account/serviceaccount/{id}/activate
|
70
|
+
# Activates the given service account
|
71
|
+
#
|
72
|
+
# @param id [String, Integer] ID of the account
|
73
|
+
# @return [Wavefront::Response]
|
74
|
+
#
|
75
|
+
def activate(id)
|
76
|
+
wf_serviceaccount_id?(id)
|
77
|
+
api.post([id, 'activate'].uri_concat, nil, 'application/json')
|
78
|
+
end
|
79
|
+
|
80
|
+
# POST /api/v2/account/serviceaccount/{id}/deactivate
|
81
|
+
# Deactivates the given service account
|
82
|
+
#
|
83
|
+
# @param id [String, Integer] ID of the account
|
84
|
+
# @return [Wavefront::Response]
|
85
|
+
#
|
86
|
+
def deactivate(id)
|
87
|
+
wf_serviceaccount_id?(id)
|
88
|
+
api.post([id, 'deactivate'].uri_concat, nil, 'application/json')
|
89
|
+
end
|
90
|
+
|
91
|
+
def update_keys
|
92
|
+
%i[description tokens groups userGroups active identifier]
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -35,7 +35,7 @@ module Wavefront
|
|
35
35
|
return true
|
36
36
|
end
|
37
37
|
|
38
|
-
raise Wavefront::Exception::InvalidLinkTemplate
|
38
|
+
raise Wavefront::Exception::InvalidLinkTemplate, template
|
39
39
|
end
|
40
40
|
|
41
41
|
# Ensure the given argument is a valid Wavefront metric name, or
|
@@ -53,7 +53,7 @@ module Wavefront
|
|
53
53
|
return true
|
54
54
|
end
|
55
55
|
|
56
|
-
raise Wavefront::Exception::InvalidMetricName
|
56
|
+
raise Wavefront::Exception::InvalidMetricName, metric
|
57
57
|
end
|
58
58
|
|
59
59
|
# Ensure the given argument is a valid name, for instance for an
|
@@ -66,7 +66,7 @@ module Wavefront
|
|
66
66
|
def wf_name?(name)
|
67
67
|
return true if name.is_a?(String) && name.size < 1024 && name =~ /^\w+$/
|
68
68
|
|
69
|
-
raise Wavefront::Exception::InvalidName
|
69
|
+
raise Wavefront::Exception::InvalidName, name
|
70
70
|
end
|
71
71
|
|
72
72
|
# Ensure the given argument is a valid string, for a tag name.
|
@@ -85,7 +85,7 @@ module Wavefront
|
|
85
85
|
return true
|
86
86
|
end
|
87
87
|
|
88
|
-
raise Wavefront::Exception::InvalidString
|
88
|
+
raise Wavefront::Exception::InvalidString, str
|
89
89
|
end
|
90
90
|
|
91
91
|
# Ensure the given argument is a valid timestamp
|
@@ -97,7 +97,7 @@ module Wavefront
|
|
97
97
|
def wf_ts?(timestamp)
|
98
98
|
return true if timestamp.is_a?(Time) || timestamp.is_a?(Date)
|
99
99
|
|
100
|
-
raise Wavefront::Exception::InvalidTimestamp
|
100
|
+
raise Wavefront::Exception::InvalidTimestamp, timestamp
|
101
101
|
end
|
102
102
|
|
103
103
|
# Ensure the given argument is a valid millisecond epoch
|
@@ -112,7 +112,7 @@ module Wavefront
|
|
112
112
|
def wf_ms_ts?(timestamp)
|
113
113
|
return true if timestamp.is_a?(Numeric)
|
114
114
|
|
115
|
-
raise Wavefront::Exception::InvalidTimestamp
|
115
|
+
raise Wavefront::Exception::InvalidTimestamp, timestamp
|
116
116
|
end
|
117
117
|
|
118
118
|
# Ensure the given argument is a valid epoch timestamp. Again,
|
@@ -125,7 +125,7 @@ module Wavefront
|
|
125
125
|
def wf_epoch?(timestamp)
|
126
126
|
return true if timestamp.is_a?(Numeric)
|
127
127
|
|
128
|
-
raise Wavefront::Exception::InvalidTimestamp
|
128
|
+
raise Wavefront::Exception::InvalidTimestamp, timestamp
|
129
129
|
end
|
130
130
|
|
131
131
|
# Ensure one, or an array, of tags are valid. These tags are
|
@@ -140,7 +140,7 @@ module Wavefront
|
|
140
140
|
def wf_tag?(*tags)
|
141
141
|
Array(*tags).each do |tag|
|
142
142
|
unless tag.is_a?(String) && tag.size < 255 && tag =~ /^[\w:\-\.]+$/
|
143
|
-
raise Wavefront::Exception::InvalidTag
|
143
|
+
raise Wavefront::Exception::InvalidTag, tag
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
@@ -157,7 +157,7 @@ module Wavefront
|
|
157
157
|
def wf_value?(value)
|
158
158
|
return true if value.is_a?(Numeric)
|
159
159
|
|
160
|
-
raise Wavefront::Exception::InvalidMetricValue
|
160
|
+
raise Wavefront::Exception::InvalidMetricValue, value
|
161
161
|
end
|
162
162
|
|
163
163
|
# Ensure the given argument is a valid version number
|
@@ -171,7 +171,7 @@ module Wavefront
|
|
171
171
|
version = version.to_i if version.is_a?(String) && version =~ /^\d+$/
|
172
172
|
return true if version.is_a?(Integer) && version.positive?
|
173
173
|
|
174
|
-
raise Wavefront::Exception::InvalidVersion
|
174
|
+
raise Wavefront::Exception::InvalidVersion, version
|
175
175
|
end
|
176
176
|
|
177
177
|
# Ensure a hash of key:value point tags are value. Not to be
|
@@ -200,7 +200,7 @@ module Wavefront
|
|
200
200
|
return
|
201
201
|
end
|
202
202
|
|
203
|
-
raise Wavefront::Exception::InvalidTag
|
203
|
+
raise Wavefront::Exception::InvalidTag, "#{key}=#{val}"
|
204
204
|
end
|
205
205
|
|
206
206
|
# Ensure the given argument is a valid Wavefront proxy ID
|
@@ -213,7 +213,7 @@ module Wavefront
|
|
213
213
|
def wf_proxy_id?(id)
|
214
214
|
return true if uuid?(id)
|
215
215
|
|
216
|
-
raise Wavefront::Exception::InvalidProxyId
|
216
|
+
raise Wavefront::Exception::InvalidProxyId, id
|
217
217
|
end
|
218
218
|
|
219
219
|
# Ensure the given argument is a valid Wavefront alert ID.
|
@@ -229,7 +229,7 @@ module Wavefront
|
|
229
229
|
id = id.to_s if id.is_a?(Numeric)
|
230
230
|
return true if id.is_a?(String) && id.match(/^\d{13}$/)
|
231
231
|
|
232
|
-
raise Wavefront::Exception::InvalidAlertId
|
232
|
+
raise Wavefront::Exception::InvalidAlertId, id
|
233
233
|
end
|
234
234
|
|
235
235
|
# Ensure the given argument is a valid Wavefront cloud
|
@@ -243,7 +243,7 @@ module Wavefront
|
|
243
243
|
def wf_cloudintegration_id?(id)
|
244
244
|
return true if uuid?(id)
|
245
245
|
|
246
|
-
raise Wavefront::Exception::InvalidCloudIntegrationId
|
246
|
+
raise Wavefront::Exception::InvalidCloudIntegrationId, id
|
247
247
|
end
|
248
248
|
|
249
249
|
# There doesn't seem to be a public statement on what's allowed
|
@@ -258,7 +258,7 @@ module Wavefront
|
|
258
258
|
def wf_dashboard_id?(id)
|
259
259
|
return true if id.is_a?(String) && id.size < 256 && id.match(/^[\w\-]+$/)
|
260
260
|
|
261
|
-
raise Wavefront::Exception::InvalidDashboardId
|
261
|
+
raise Wavefront::Exception::InvalidDashboardId, id
|
262
262
|
end
|
263
263
|
|
264
264
|
# Ensure the given argument is a valid derived metric ID. IDs
|
@@ -273,7 +273,7 @@ module Wavefront
|
|
273
273
|
id = id.to_s if id.is_a?(Numeric)
|
274
274
|
return true if id.is_a?(String) && id =~ /^\d{13}$/
|
275
275
|
|
276
|
-
raise Wavefront::Exception::InvalidDerivedMetricId
|
276
|
+
raise Wavefront::Exception::InvalidDerivedMetricId, id
|
277
277
|
end
|
278
278
|
|
279
279
|
# Ensure the given argument is a valid event ID. Event IDs are
|
@@ -288,7 +288,7 @@ module Wavefront
|
|
288
288
|
def wf_event_id?(id)
|
289
289
|
return true if id.is_a?(String) && id =~ /^\d{13}:.+/
|
290
290
|
|
291
|
-
raise Wavefront::Exception::InvalidEventId
|
291
|
+
raise Wavefront::Exception::InvalidEventId, id
|
292
292
|
end
|
293
293
|
|
294
294
|
# Ensure the given argument is a valid external Link ID
|
@@ -301,7 +301,7 @@ module Wavefront
|
|
301
301
|
def wf_link_id?(id)
|
302
302
|
return true if id.is_a?(String) && id =~ /^\w{16}$/
|
303
303
|
|
304
|
-
raise Wavefront::Exception::InvalidExternalLinkId
|
304
|
+
raise Wavefront::Exception::InvalidExternalLinkId, id
|
305
305
|
end
|
306
306
|
|
307
307
|
# Ensure the given argument is a valid maintenance window ID.
|
@@ -316,7 +316,7 @@ module Wavefront
|
|
316
316
|
id = id.to_s if id.is_a?(Numeric)
|
317
317
|
return true if id.is_a?(String) && id =~ /^\d{13}$/
|
318
318
|
|
319
|
-
raise Wavefront::Exception::InvalidMaintenanceWindowId
|
319
|
+
raise Wavefront::Exception::InvalidMaintenanceWindowId, id
|
320
320
|
end
|
321
321
|
|
322
322
|
# Ensure the given argument is a valid alert severity
|
@@ -328,7 +328,7 @@ module Wavefront
|
|
328
328
|
def wf_alert_severity?(severity)
|
329
329
|
return true if %w[INFO SMOKE WARN SEVERE].include?(severity)
|
330
330
|
|
331
|
-
raise Wavefront::Exception::InvalidAlertSeverity
|
331
|
+
raise Wavefront::Exception::InvalidAlertSeverity, severity
|
332
332
|
end
|
333
333
|
|
334
334
|
# Ensure the given argument is a valid message ID
|
@@ -340,7 +340,7 @@ module Wavefront
|
|
340
340
|
def wf_message_id?(id)
|
341
341
|
return true if id.is_a?(String) && id =~ /^\w+::\w+$/
|
342
342
|
|
343
|
-
raise Wavefront::Exception::InvalidMessageId
|
343
|
+
raise Wavefront::Exception::InvalidMessageId, id
|
344
344
|
end
|
345
345
|
|
346
346
|
# Ensure the given argument is a valid query granularity
|
@@ -353,7 +353,7 @@ module Wavefront
|
|
353
353
|
def wf_granularity?(granularity)
|
354
354
|
return true if %w[d h m s].include?(granularity.to_s)
|
355
355
|
|
356
|
-
raise Wavefront::Exception::InvalidGranularity
|
356
|
+
raise Wavefront::Exception::InvalidGranularity, granularity
|
357
357
|
end
|
358
358
|
|
359
359
|
# Ensure the given argument is a valid saved search ID.
|
@@ -365,7 +365,7 @@ module Wavefront
|
|
365
365
|
def wf_savedsearch_id?(id)
|
366
366
|
return true if id.is_a?(String) && id =~ /^\w{8}$/
|
367
367
|
|
368
|
-
raise Wavefront::Exception::InvalidSavedSearchId
|
368
|
+
raise Wavefront::Exception::InvalidSavedSearchId, id
|
369
369
|
end
|
370
370
|
|
371
371
|
# Ensure the given argument is a valid saved search entity type.
|
@@ -380,7 +380,7 @@ module Wavefront
|
|
380
380
|
NOTIFICANT EVENT SOURCE EXTERNAL_LINK AGENT
|
381
381
|
CLOUD_INTEGRATION].include?(id)
|
382
382
|
|
383
|
-
raise Wavefront::Exception::InvalidSavedSearchEntity
|
383
|
+
raise Wavefront::Exception::InvalidSavedSearchEntity, id
|
384
384
|
end
|
385
385
|
|
386
386
|
# Ensure the given argument is a valid Wavefront source name
|
@@ -396,7 +396,7 @@ module Wavefront
|
|
396
396
|
return true
|
397
397
|
end
|
398
398
|
|
399
|
-
raise Wavefront::Exception::InvalidSourceId
|
399
|
+
raise Wavefront::Exception::InvalidSourceId, source
|
400
400
|
end
|
401
401
|
|
402
402
|
# Ensure the given argument is a valid user.
|
@@ -408,7 +408,7 @@ module Wavefront
|
|
408
408
|
def wf_user_id?(user)
|
409
409
|
return true if user.is_a?(String) && user.length < 256 && !user.empty?
|
410
410
|
|
411
|
-
raise Wavefront::Exception::InvalidUserId
|
411
|
+
raise Wavefront::Exception::InvalidUserId, user
|
412
412
|
end
|
413
413
|
|
414
414
|
# Ensure the given argument is a valid user group.
|
@@ -420,7 +420,7 @@ module Wavefront
|
|
420
420
|
def wf_usergroup_id?(gid)
|
421
421
|
return true if uuid?(gid)
|
422
422
|
|
423
|
-
raise Wavefront::Exception::InvalidUserGroupId
|
423
|
+
raise Wavefront::Exception::InvalidUserGroupId, gid
|
424
424
|
end
|
425
425
|
|
426
426
|
# Ensure the given argument is a valid webhook ID.
|
@@ -432,7 +432,7 @@ module Wavefront
|
|
432
432
|
def wf_webhook_id?(id)
|
433
433
|
return true if id.is_a?(String) && id =~ /^[a-zA-Z0-9]{16}$/
|
434
434
|
|
435
|
-
raise Wavefront::Exception::InvalidWebhookId
|
435
|
+
raise Wavefront::Exception::InvalidWebhookId, id
|
436
436
|
end
|
437
437
|
|
438
438
|
# Validate a point so it conforms to the standard described in
|
@@ -491,7 +491,7 @@ module Wavefront
|
|
491
491
|
def wf_notificant_id?(id)
|
492
492
|
return true if id.is_a?(String) && id =~ /^\w{16}$/
|
493
493
|
|
494
|
-
raise Wavefront::Exception::InvalidNotificantId
|
494
|
+
raise Wavefront::Exception::InvalidNotificantId, id
|
495
495
|
end
|
496
496
|
|
497
497
|
# Ensure the given argument is a valid Wavefront
|
@@ -505,7 +505,7 @@ module Wavefront
|
|
505
505
|
def wf_integration_id?(id)
|
506
506
|
return true if id.is_a?(String) && id =~ /^[a-z0-9]+$/
|
507
507
|
|
508
|
-
raise Wavefront::Exception::InvalidIntegrationId
|
508
|
+
raise Wavefront::Exception::InvalidIntegrationId, id
|
509
509
|
end
|
510
510
|
|
511
511
|
# Ensure the given argument is a valid distribution interval.
|
@@ -516,7 +516,7 @@ module Wavefront
|
|
516
516
|
def wf_distribution_interval?(interval)
|
517
517
|
return true if %i[m h d].include?(interval)
|
518
518
|
|
519
|
-
raise Wavefront::Exception::InvalidDistributionInterval
|
519
|
+
raise Wavefront::Exception::InvalidDistributionInterval, interval
|
520
520
|
end
|
521
521
|
|
522
522
|
# Ensure the given argument is a valid distribution count.
|
@@ -527,18 +527,46 @@ module Wavefront
|
|
527
527
|
def wf_distribution_count?(count)
|
528
528
|
return true if count.is_a?(Integer) && count.positive?
|
529
529
|
|
530
|
-
raise Wavefront::Exception::InvalidDistributionCount
|
530
|
+
raise Wavefront::Exception::InvalidDistributionCount, count
|
531
531
|
end
|
532
532
|
|
533
533
|
# Ensure the given argument is a valid API token ID
|
534
534
|
# @param id [String]
|
535
535
|
# @raise Wavefront::Exception::InvalidApiTokenId if the
|
536
|
-
#
|
536
|
+
# token ID is not valid
|
537
537
|
#
|
538
538
|
def wf_apitoken_id?(id)
|
539
539
|
return true if uuid?(id)
|
540
540
|
|
541
|
-
raise Wavefront::Exception::InvalidApiTokenId
|
541
|
+
raise Wavefront::Exception::InvalidApiTokenId, id
|
542
|
+
end
|
543
|
+
|
544
|
+
# Ensure the given argument is a valid service account ID
|
545
|
+
# @param id [String]
|
546
|
+
# @raise Wavefront::Exception::InvalidApiTokenId if the
|
547
|
+
# ID is not valid
|
548
|
+
#
|
549
|
+
def wf_serviceaccount_id?(id)
|
550
|
+
return true if id.is_a?(String) && id.start_with?('sa::')
|
551
|
+
|
552
|
+
raise Wavefront::Exception::InvalidServiceAccountId, id
|
553
|
+
end
|
554
|
+
|
555
|
+
# Ensure the given argument is a Wavefront permission
|
556
|
+
# @param id [String]
|
557
|
+
# @raise Wavefront::Exception::InvalidApiTokenId if the
|
558
|
+
# ID is not valid
|
559
|
+
#
|
560
|
+
def wf_permission?(id)
|
561
|
+
if %w[alerts_management batch_query_priority embedded_charts
|
562
|
+
dashboard_management derived_metrics_management ingestion
|
563
|
+
events_management external_links_management
|
564
|
+
application_management metrics_management agent_management
|
565
|
+
host_tag_management user_management].include?(id)
|
566
|
+
return true
|
567
|
+
end
|
568
|
+
|
569
|
+
raise Wavefront::Exception::InvalidPermission, id, id
|
542
570
|
end
|
543
571
|
end
|
544
572
|
# rubocop:enable Metrics/ModuleLength
|
data/spec/.rubocop.yml
CHANGED
@@ -85,12 +85,12 @@ module Minitest
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def extra_headers(payload, type)
|
88
|
-
if
|
88
|
+
if type
|
89
|
+
header_lookup(type)
|
90
|
+
elsif payload.nil?
|
89
91
|
header_lookup(:plain)
|
90
92
|
elsif type.nil?
|
91
93
|
header_lookup(:json)
|
92
|
-
else
|
93
|
-
header_lookup(type)
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -0,0 +1,65 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require_relative '../spec_helper'
|
5
|
+
require_relative '../test_mixins/general'
|
6
|
+
|
7
|
+
# Unit tests for ServiceAccount class
|
8
|
+
#
|
9
|
+
class WavefrontServiceAccountTest < WavefrontTestBase
|
10
|
+
# include WavefrontTest::Create
|
11
|
+
# include WavefrontTest::Describe
|
12
|
+
# include WavefrontTest::Update
|
13
|
+
|
14
|
+
# def test_list
|
15
|
+
# assert_gets('/api/v2/account/serviceaccount') { wf.list }
|
16
|
+
# end
|
17
|
+
|
18
|
+
def test_activate
|
19
|
+
assert_posts("/api/v2/account/serviceaccount/#{id}/activate", nil,
|
20
|
+
:json) do
|
21
|
+
wf.activate(id)
|
22
|
+
end
|
23
|
+
|
24
|
+
assert_invalid_id { wf.activate(invalid_id) }
|
25
|
+
assert_raises(ArgumentError) { wf.activate }
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_deactivate
|
29
|
+
assert_posts("/api/v2/account/serviceaccount/#{id}/deactivate", nil,
|
30
|
+
:json) do
|
31
|
+
wf.deactivate(id)
|
32
|
+
end
|
33
|
+
|
34
|
+
assert_invalid_id { wf.deactivate(invalid_id) }
|
35
|
+
assert_raises(ArgumentError) { wf.deactivate }
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def api_class
|
41
|
+
'account/serviceaccount'
|
42
|
+
end
|
43
|
+
|
44
|
+
def id
|
45
|
+
'sa::tester'
|
46
|
+
end
|
47
|
+
|
48
|
+
def invalid_id
|
49
|
+
'bad_id'
|
50
|
+
end
|
51
|
+
|
52
|
+
def payload
|
53
|
+
{ identifier: id,
|
54
|
+
description: 'some info',
|
55
|
+
tokens: [
|
56
|
+
'f8dc0c14-91a0-4ca9-8a2a-7d47f4db4672'
|
57
|
+
],
|
58
|
+
userGroups: [
|
59
|
+
'2659191e-aad4-4302-a94e-9667e1517127'
|
60
|
+
],
|
61
|
+
groups: [
|
62
|
+
'agent_management'
|
63
|
+
] }
|
64
|
+
end
|
65
|
+
end
|
@@ -351,4 +351,18 @@ class WavefrontValidatorsTest < MiniTest::Test
|
|
351
351
|
good_and_bad('wf_distribution_interval?',
|
352
352
|
'InvalidDistributionInterval', good, bad)
|
353
353
|
end
|
354
|
+
|
355
|
+
def test_serviceaccount_id
|
356
|
+
good = %w[sa::my-id sa::ID]
|
357
|
+
bad = %w[sc:id fca312fb-5ff4-420d-862d-5d6d99ed6bcf]
|
358
|
+
good_and_bad('wf_serviceaccount_id?',
|
359
|
+
'InvalidServiceAccountId', good, bad)
|
360
|
+
end
|
361
|
+
|
362
|
+
def test_permission
|
363
|
+
good = %w[events_management external_links_management]
|
364
|
+
bad = ['events management', 'event_management', 'EVENT_MANAGEMENT']
|
365
|
+
good_and_bad('wf_permission?',
|
366
|
+
'InvalidPermission', good, bad)
|
367
|
+
end
|
354
368
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wavefront-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Fisher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -214,6 +214,7 @@ files:
|
|
214
214
|
- lib/wavefront-sdk/report.rb
|
215
215
|
- lib/wavefront-sdk/savedsearch.rb
|
216
216
|
- lib/wavefront-sdk/search.rb
|
217
|
+
- lib/wavefront-sdk/serviceaccount.rb
|
217
218
|
- lib/wavefront-sdk/settings.rb
|
218
219
|
- lib/wavefront-sdk/source.rb
|
219
220
|
- lib/wavefront-sdk/stdlib/array.rb
|
@@ -282,6 +283,7 @@ files:
|
|
282
283
|
- spec/wavefront-sdk/resources/user_responses/list.json
|
283
284
|
- spec/wavefront-sdk/savedsearch_spec.rb
|
284
285
|
- spec/wavefront-sdk/search_spec.rb
|
286
|
+
- spec/wavefront-sdk/serviceaccount_spec.rb
|
285
287
|
- spec/wavefront-sdk/settings_spec.rb
|
286
288
|
- spec/wavefront-sdk/source_spec.rb
|
287
289
|
- spec/wavefront-sdk/stdlib/array_spec.rb
|
@@ -373,6 +375,7 @@ test_files:
|
|
373
375
|
- spec/wavefront-sdk/resources/user_responses/list.json
|
374
376
|
- spec/wavefront-sdk/savedsearch_spec.rb
|
375
377
|
- spec/wavefront-sdk/search_spec.rb
|
378
|
+
- spec/wavefront-sdk/serviceaccount_spec.rb
|
376
379
|
- spec/wavefront-sdk/settings_spec.rb
|
377
380
|
- spec/wavefront-sdk/source_spec.rb
|
378
381
|
- spec/wavefront-sdk/stdlib/array_spec.rb
|