wavefront-sdk 4.0.0 → 5.0.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/.rubocop.yml +42 -1
- data/HISTORY.md +12 -0
- data/README.md +3 -2
- data/lib/wavefront-sdk/account.rb +104 -3
- data/lib/wavefront-sdk/api_mixins/user.rb +10 -0
- data/lib/wavefront-sdk/core/exception.rb +1 -0
- data/lib/wavefront-sdk/defs/version.rb +1 -1
- data/lib/wavefront-sdk/paginator/base.rb +21 -15
- data/lib/wavefront-sdk/query.rb +0 -1
- data/lib/wavefront-sdk/role.rb +104 -0
- data/lib/wavefront-sdk/spy.rb +126 -0
- data/lib/wavefront-sdk/stdlib/array.rb +1 -1
- data/lib/wavefront-sdk/user.rb +31 -0
- data/lib/wavefront-sdk/usergroup.rb +17 -16
- data/lib/wavefront-sdk/validators.rb +18 -7
- data/spec/.rubocop.yml +41 -0
- data/spec/wavefront-sdk/account_spec.rb +107 -1
- data/spec/wavefront-sdk/metric_helper_spec.rb +1 -1
- data/spec/wavefront-sdk/role_spec.rb +68 -0
- data/spec/wavefront-sdk/{unstable/spy_spec.rb → spy_spec.rb} +3 -3
- data/spec/wavefront-sdk/user_spec.rb +8 -0
- data/spec/wavefront-sdk/usergroup_spec.rb +21 -11
- data/spec/wavefront-sdk/validators_spec.rb +10 -0
- data/wavefront-sdk.gemspec +2 -2
- metadata +12 -12
- data/lib/wavefront-sdk/monitoredcluster.rb +0 -93
- data/lib/wavefront-sdk/unstable/spy.rb +0 -134
- data/spec/wavefront-sdk/monitoredcluster_spec.rb +0 -55
@@ -118,7 +118,7 @@ class WavefrontMetricHelperTest < MiniTest::Test
|
|
118
118
|
assert_equal(1, out.select do |o|
|
119
119
|
o[:value] == [[2, 10.0], [1, 11.0],
|
120
120
|
[1, 12.0]]
|
121
|
-
end
|
121
|
+
end.size)
|
122
122
|
assert_equal(1, out.select { |o| o[:tags] == WH_TAGS }.size)
|
123
123
|
assert_equal(3, out.select { |o| o[:path] == 'test.dist1' }.size)
|
124
124
|
end
|
@@ -0,0 +1,68 @@
|
|
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 Wavefront::Role
|
8
|
+
#
|
9
|
+
class WavefrontRoleTest < WavefrontTestBase
|
10
|
+
include WavefrontTest::Create
|
11
|
+
include WavefrontTest::Delete
|
12
|
+
include WavefrontTest::Describe
|
13
|
+
include WavefrontTest::List
|
14
|
+
include WavefrontTest::Update
|
15
|
+
|
16
|
+
def test_add_assignees
|
17
|
+
assert_posts("/api/v2/role/#{id}/addAssignees", assignees.to_json) do
|
18
|
+
wf.add_assignees(id, assignees)
|
19
|
+
end
|
20
|
+
|
21
|
+
assert_raises(Wavefront::Exception::InvalidRoleId) do
|
22
|
+
wf.add_assignees(invalid_id, assignees)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_remove_assignees
|
27
|
+
assert_posts("/api/v2/role/#{id}/removeAssignees", assignees.to_json) do
|
28
|
+
wf.remove_assignees(id, assignees)
|
29
|
+
end
|
30
|
+
|
31
|
+
assert_raises(Wavefront::Exception::InvalidRoleId) do
|
32
|
+
wf.remove_assignees(invalid_id, assignees)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def api_class
|
39
|
+
:role
|
40
|
+
end
|
41
|
+
|
42
|
+
def id
|
43
|
+
'f8dc0c14-91a0-4ca9-8a2a-7d47f4db4672'
|
44
|
+
end
|
45
|
+
|
46
|
+
def roles
|
47
|
+
%w[f8dc0c14-91a0-4ca9-8a2a-7d47f4db4672
|
48
|
+
2659191e-aad4-4302-a94e-9667e1517127]
|
49
|
+
end
|
50
|
+
|
51
|
+
def assignees
|
52
|
+
roles.push('sa::test')
|
53
|
+
end
|
54
|
+
|
55
|
+
def invalid_id
|
56
|
+
'__BAD_ID__'
|
57
|
+
end
|
58
|
+
|
59
|
+
def payload
|
60
|
+
{ name: 'test role',
|
61
|
+
permissions: %w[alerts_management events_management],
|
62
|
+
description: 'dummy role for unit tests' }
|
63
|
+
end
|
64
|
+
|
65
|
+
def permission
|
66
|
+
'alerts_management'
|
67
|
+
end
|
68
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require_relative '
|
5
|
-
require_relative '
|
4
|
+
require_relative '../spec_helper'
|
5
|
+
require_relative '../../lib/wavefront-sdk/spy'
|
6
6
|
|
7
7
|
# Unit tests for Spy class
|
8
8
|
#
|
@@ -10,7 +10,7 @@ class WavefrontSpyTest < MiniTest::Test
|
|
10
10
|
attr_reader :wf
|
11
11
|
|
12
12
|
def setup
|
13
|
-
@wf = Wavefront::
|
13
|
+
@wf = Wavefront::Spy.new(CREDS)
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_points
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
+
require 'logger'
|
4
5
|
require_relative '../spec_helper'
|
5
6
|
require_relative '../test_mixins/general'
|
6
7
|
|
@@ -13,6 +14,13 @@ class WavefrontUserTest < WavefrontTestBase
|
|
13
14
|
include WavefrontTest::Describe
|
14
15
|
include WavefrontTest::Update
|
15
16
|
|
17
|
+
# Override the parent constructor so we can suppress all the 'deprecated'
|
18
|
+
# log messages
|
19
|
+
#
|
20
|
+
def setup
|
21
|
+
@wf = Wavefront::User.new(CREDS, logger: Logger.new('/dev/null'))
|
22
|
+
end
|
23
|
+
|
16
24
|
def test_list
|
17
25
|
assert_gets('/api/v2/user') { wf.list }
|
18
26
|
end
|
@@ -7,7 +7,8 @@ require_relative '../test_mixins/general'
|
|
7
7
|
# Unit tests for WavefrontUserGroup
|
8
8
|
#
|
9
9
|
class WavefrontUserGroupTest < WavefrontTestBase
|
10
|
-
attr_reader :users, :groups, :permission, :invalid_groups, :invalid_users
|
10
|
+
attr_reader :users, :groups, :permission, :invalid_groups, :invalid_users,
|
11
|
+
:roles, :invalid_roles
|
11
12
|
|
12
13
|
include WavefrontTest::Create
|
13
14
|
include WavefrontTest::Delete
|
@@ -39,22 +40,28 @@ class WavefrontUserGroupTest < WavefrontTestBase
|
|
39
40
|
assert_invalid_id { wf.remove_users_from_group(invalid_id, users) }
|
40
41
|
end
|
41
42
|
|
42
|
-
def
|
43
|
-
assert_posts("/api/v2/usergroup
|
44
|
-
|
45
|
-
wf.grant(permission, groups)
|
43
|
+
def test_add_roles_to_group
|
44
|
+
assert_posts("/api/v2/usergroup/#{id}/addRoles", roles.to_json) do
|
45
|
+
wf.add_roles_to_group(id, roles)
|
46
46
|
end
|
47
47
|
|
48
|
-
|
48
|
+
assert_raises(Wavefront::Exception::InvalidRoleId) do
|
49
|
+
wf.add_roles_to_group(id, invalid_roles)
|
50
|
+
end
|
51
|
+
|
52
|
+
assert_invalid_id { wf.add_roles_to_group(invalid_id, roles) }
|
49
53
|
end
|
50
54
|
|
51
|
-
def
|
52
|
-
assert_posts("/api/v2/usergroup
|
53
|
-
|
54
|
-
|
55
|
+
def test_remove_roles_from_group
|
56
|
+
assert_posts("/api/v2/usergroup/#{id}/removeRoles", roles.to_json) do
|
57
|
+
wf.remove_roles_from_group(id, roles)
|
58
|
+
end
|
59
|
+
|
60
|
+
assert_raises(Wavefront::Exception::InvalidRoleId) do
|
61
|
+
wf.remove_roles_from_group(id, invalid_roles)
|
55
62
|
end
|
56
63
|
|
57
|
-
assert_invalid_id { wf.
|
64
|
+
assert_invalid_id { wf.remove_roles_from_group(invalid_id, roles) }
|
58
65
|
end
|
59
66
|
|
60
67
|
def setup_fixtures
|
@@ -63,7 +70,10 @@ class WavefrontUserGroupTest < WavefrontTestBase
|
|
63
70
|
@groups = %w[f8dc0c14-91a0-4ca9-8a2a-7d47f4db4672
|
64
71
|
2659191e-aad4-4302-a94e-9667e1517127]
|
65
72
|
@users = %w[someone@somewhere.com other@elsewhere.net]
|
73
|
+
@roles = %w[abcdef14-91a0-4ca9-8a2a-7d47f4db4672
|
74
|
+
fedcba1e-aad4-4302-a94e-9667e1517127]
|
66
75
|
@invalid_users = ['bad' * 500, '']
|
76
|
+
@invalid_roles = ['some nonsense']
|
67
77
|
end
|
68
78
|
|
69
79
|
private
|
@@ -401,4 +401,14 @@ class WavefrontValidatorsTest < MiniTest::Test
|
|
401
401
|
bad = ['a', 0.1, 0.99, 1, -1, 1.1]
|
402
402
|
good_and_bad('wf_sampling_value?', 'InvalidSamplingValue', good, bad)
|
403
403
|
end
|
404
|
+
|
405
|
+
def test_wf_role_id
|
406
|
+
good = %w[2bfdcac7-1c9c-4c4b-9b56-c41c22c586dc
|
407
|
+
17db4cc1-65f6-40a8-a1fa-6fcae460c4bd
|
408
|
+
fca312fb-5ff4-420d-862d-5d6d99ed6bcf
|
409
|
+
3a1957e0-459e-49e5-9209-3888a4e8ac5b]
|
410
|
+
|
411
|
+
bad = %w[fa312fb-5ff4-420d-862d-5d6d99ed6bcf thing 123]
|
412
|
+
good_and_bad('wf_role_id?', 'InvalidRoleId', good, bad)
|
413
|
+
end
|
404
414
|
end
|
data/wavefront-sdk.gemspec
CHANGED
@@ -28,8 +28,8 @@ Gem::Specification.new do |gem|
|
|
28
28
|
gem.add_dependency 'map', '~> 6.6'
|
29
29
|
|
30
30
|
gem.add_development_dependency 'minitest', '~> 5.11'
|
31
|
-
gem.add_development_dependency 'rake', '~>
|
32
|
-
gem.add_development_dependency 'rubocop', '~> 0.
|
31
|
+
gem.add_development_dependency 'rake', '~> 13.0'
|
32
|
+
gem.add_development_dependency 'rubocop', '~> 0.87'
|
33
33
|
gem.add_development_dependency 'simplecov', '~> 0.16'
|
34
34
|
gem.add_development_dependency 'spy', '~> 1.0.0'
|
35
35
|
gem.add_development_dependency 'webmock', '~> 3.7'
|
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:
|
4
|
+
version: 5.0.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: 2020-
|
11
|
+
date: 2020-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -86,28 +86,28 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '13.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '13.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rubocop
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0.
|
103
|
+
version: '0.87'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0.
|
110
|
+
version: '0.87'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: simplecov
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -205,7 +205,6 @@ files:
|
|
205
205
|
- lib/wavefront-sdk/message.rb
|
206
206
|
- lib/wavefront-sdk/metric.rb
|
207
207
|
- lib/wavefront-sdk/metric_helper.rb
|
208
|
-
- lib/wavefront-sdk/monitoredcluster.rb
|
209
208
|
- lib/wavefront-sdk/notificant.rb
|
210
209
|
- lib/wavefront-sdk/paginator/base.rb
|
211
210
|
- lib/wavefront-sdk/paginator/delete.rb
|
@@ -215,11 +214,13 @@ files:
|
|
215
214
|
- lib/wavefront-sdk/proxy.rb
|
216
215
|
- lib/wavefront-sdk/query.rb
|
217
216
|
- lib/wavefront-sdk/report.rb
|
217
|
+
- lib/wavefront-sdk/role.rb
|
218
218
|
- lib/wavefront-sdk/savedsearch.rb
|
219
219
|
- lib/wavefront-sdk/search.rb
|
220
220
|
- lib/wavefront-sdk/serviceaccount.rb
|
221
221
|
- lib/wavefront-sdk/settings.rb
|
222
222
|
- lib/wavefront-sdk/source.rb
|
223
|
+
- lib/wavefront-sdk/spy.rb
|
223
224
|
- lib/wavefront-sdk/stdlib/array.rb
|
224
225
|
- lib/wavefront-sdk/stdlib/hash.rb
|
225
226
|
- lib/wavefront-sdk/stdlib/string.rb
|
@@ -229,7 +230,6 @@ files:
|
|
229
230
|
- lib/wavefront-sdk/types/status.rb
|
230
231
|
- lib/wavefront-sdk/unstable/README.md
|
231
232
|
- lib/wavefront-sdk/unstable/chart.rb
|
232
|
-
- lib/wavefront-sdk/unstable/spy.rb
|
233
233
|
- lib/wavefront-sdk/unstable/unstable.rb
|
234
234
|
- lib/wavefront-sdk/usage.rb
|
235
235
|
- lib/wavefront-sdk/user.rb
|
@@ -276,7 +276,6 @@ files:
|
|
276
276
|
- spec/wavefront-sdk/message_spec.rb
|
277
277
|
- spec/wavefront-sdk/metric_helper_spec.rb
|
278
278
|
- spec/wavefront-sdk/metric_spec.rb
|
279
|
-
- spec/wavefront-sdk/monitoredcluster_spec.rb
|
280
279
|
- spec/wavefront-sdk/notificant_spec.rb
|
281
280
|
- spec/wavefront-sdk/paginator/base_spec.rb
|
282
281
|
- spec/wavefront-sdk/paginator/post_spec.rb
|
@@ -293,18 +292,19 @@ files:
|
|
293
292
|
- spec/wavefront-sdk/resources/user_responses/describe.json
|
294
293
|
- spec/wavefront-sdk/resources/user_responses/grant.json
|
295
294
|
- spec/wavefront-sdk/resources/user_responses/list.json
|
295
|
+
- spec/wavefront-sdk/role_spec.rb
|
296
296
|
- spec/wavefront-sdk/savedsearch_spec.rb
|
297
297
|
- spec/wavefront-sdk/search_spec.rb
|
298
298
|
- spec/wavefront-sdk/serviceaccount_spec.rb
|
299
299
|
- spec/wavefront-sdk/settings_spec.rb
|
300
300
|
- spec/wavefront-sdk/source_spec.rb
|
301
|
+
- spec/wavefront-sdk/spy_spec.rb
|
301
302
|
- spec/wavefront-sdk/stdlib/array_spec.rb
|
302
303
|
- spec/wavefront-sdk/stdlib/hash_spec.rb
|
303
304
|
- spec/wavefront-sdk/stdlib/string_spec.rb
|
304
305
|
- spec/wavefront-sdk/support/mixins_spec.rb
|
305
306
|
- spec/wavefront-sdk/support/parse_time_spec.rb
|
306
307
|
- spec/wavefront-sdk/unstable/chart_spec.rb
|
307
|
-
- spec/wavefront-sdk/unstable/spy_spec.rb
|
308
308
|
- spec/wavefront-sdk/usage_spec.rb
|
309
309
|
- spec/wavefront-sdk/user_spec.rb
|
310
310
|
- spec/wavefront-sdk/usergroup_spec.rb
|
@@ -374,7 +374,6 @@ test_files:
|
|
374
374
|
- spec/wavefront-sdk/message_spec.rb
|
375
375
|
- spec/wavefront-sdk/metric_helper_spec.rb
|
376
376
|
- spec/wavefront-sdk/metric_spec.rb
|
377
|
-
- spec/wavefront-sdk/monitoredcluster_spec.rb
|
378
377
|
- spec/wavefront-sdk/notificant_spec.rb
|
379
378
|
- spec/wavefront-sdk/paginator/base_spec.rb
|
380
379
|
- spec/wavefront-sdk/paginator/post_spec.rb
|
@@ -391,18 +390,19 @@ test_files:
|
|
391
390
|
- spec/wavefront-sdk/resources/user_responses/describe.json
|
392
391
|
- spec/wavefront-sdk/resources/user_responses/grant.json
|
393
392
|
- spec/wavefront-sdk/resources/user_responses/list.json
|
393
|
+
- spec/wavefront-sdk/role_spec.rb
|
394
394
|
- spec/wavefront-sdk/savedsearch_spec.rb
|
395
395
|
- spec/wavefront-sdk/search_spec.rb
|
396
396
|
- spec/wavefront-sdk/serviceaccount_spec.rb
|
397
397
|
- spec/wavefront-sdk/settings_spec.rb
|
398
398
|
- spec/wavefront-sdk/source_spec.rb
|
399
|
+
- spec/wavefront-sdk/spy_spec.rb
|
399
400
|
- spec/wavefront-sdk/stdlib/array_spec.rb
|
400
401
|
- spec/wavefront-sdk/stdlib/hash_spec.rb
|
401
402
|
- spec/wavefront-sdk/stdlib/string_spec.rb
|
402
403
|
- spec/wavefront-sdk/support/mixins_spec.rb
|
403
404
|
- spec/wavefront-sdk/support/parse_time_spec.rb
|
404
405
|
- spec/wavefront-sdk/unstable/chart_spec.rb
|
405
|
-
- spec/wavefront-sdk/unstable/spy_spec.rb
|
406
406
|
- spec/wavefront-sdk/usage_spec.rb
|
407
407
|
- spec/wavefront-sdk/user_spec.rb
|
408
408
|
- spec/wavefront-sdk/usergroup_spec.rb
|
@@ -1,93 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'core/api'
|
4
|
-
require_relative 'api_mixins/tag'
|
5
|
-
|
6
|
-
module Wavefront
|
7
|
-
#
|
8
|
-
# Manage and query Wavefront monitored clusters
|
9
|
-
#
|
10
|
-
class MonitoredCluster < CoreApi
|
11
|
-
include Wavefront::Mixin::Tag
|
12
|
-
|
13
|
-
def update_keys
|
14
|
-
%i[id]
|
15
|
-
end
|
16
|
-
|
17
|
-
# GET /api/v2/monitoredcluster
|
18
|
-
# Get all monitored clusters
|
19
|
-
# @param offset [Integer] cluster at which the list begins
|
20
|
-
# @param limit [Integer] the number of clusters to return
|
21
|
-
# @return [Wavefront::Response]
|
22
|
-
#
|
23
|
-
def list(offset = 0, limit = 100)
|
24
|
-
api.get('', offset: offset, limit: limit)
|
25
|
-
end
|
26
|
-
|
27
|
-
# POST /api/v2/monitoredcluster
|
28
|
-
# Create a specific cluster
|
29
|
-
# @param body [Hash] a hash of parameters describing the cluster.
|
30
|
-
# Please refer to the Wavefront Swagger docs for key:value
|
31
|
-
# information
|
32
|
-
# @return [Wavefront::Response]
|
33
|
-
#
|
34
|
-
def create(body)
|
35
|
-
raise ArgumentError unless body.is_a?(Hash)
|
36
|
-
|
37
|
-
api.post('', body, 'application/json')
|
38
|
-
end
|
39
|
-
|
40
|
-
# DELETE /api/v2/monitoredcluster/{id}
|
41
|
-
# Delete a specific cluster
|
42
|
-
# @param id [String, Integer] ID of the maintenance cluster
|
43
|
-
# @return [Wavefront::Response]
|
44
|
-
#
|
45
|
-
def delete(id)
|
46
|
-
wf_monitoredcluster_id?(id)
|
47
|
-
api.delete(id)
|
48
|
-
end
|
49
|
-
|
50
|
-
# GET /api/v2/monitoredcluster/{id}
|
51
|
-
# Get a specific cluster
|
52
|
-
# @param id [String, Integer] ID of the cluster
|
53
|
-
# @return [Wavefront::Response]
|
54
|
-
#
|
55
|
-
def describe(id)
|
56
|
-
wf_monitoredcluster_id?(id)
|
57
|
-
api.get(id)
|
58
|
-
end
|
59
|
-
|
60
|
-
# PUT /api/v2/monitoredcluster/{id}
|
61
|
-
# Update a specific cluster
|
62
|
-
# @return [Wavefront::Response]
|
63
|
-
#
|
64
|
-
def update(id, body, modify = true)
|
65
|
-
wf_monitoredcluster_id?(id)
|
66
|
-
raise ArgumentError unless body.is_a?(Hash)
|
67
|
-
|
68
|
-
return api.put(id, body, 'application/json') unless modify
|
69
|
-
|
70
|
-
api.put(id, hash_for_update(describe(id).response, body),
|
71
|
-
'application/json')
|
72
|
-
end
|
73
|
-
|
74
|
-
# PUT /api/v2/monitoredcluster/merge/{id1}/{id2}
|
75
|
-
# Merge two monitored clusters. The first cluster will remain and the
|
76
|
-
# second cluster will be deleted, with its id added as an alias to the
|
77
|
-
# first cluster.
|
78
|
-
# @param id1 [String, Integer] ID of the target cluster
|
79
|
-
# @param id2 [String, Integer] ID of the other cluster
|
80
|
-
# @return [Wavefront::Response]
|
81
|
-
#
|
82
|
-
def merge(id1, id2)
|
83
|
-
wf_monitoredcluster_id?(id1)
|
84
|
-
wf_monitoredcluster_id?(id2)
|
85
|
-
|
86
|
-
api.put(['merge', id1, id2].uri_concat, nil, 'application/json')
|
87
|
-
end
|
88
|
-
|
89
|
-
def valid_id?(id)
|
90
|
-
wf_monitoredcluster_id?(id)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
@@ -1,134 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative '../defs/constants'
|
4
|
-
require_relative '../core/api'
|
5
|
-
|
6
|
-
module Wavefront
|
7
|
-
module Unstable
|
8
|
-
#
|
9
|
-
# THIS IS AN UNSTABLE CLASS. PLEASE REFER TO README.md.
|
10
|
-
#
|
11
|
-
# Everything about this API is different from the public one. To make it
|
12
|
-
# appear similar we must change various things we normally take for
|
13
|
-
# granted.
|
14
|
-
#
|
15
|
-
# This class is built according to the documentation at
|
16
|
-
# https://docs.wavefront.com/wavefront_monitoring_spy.html
|
17
|
-
#
|
18
|
-
class Spy < CoreApi
|
19
|
-
# https://<cluster>.wavefront.com/api/spy/points
|
20
|
-
# Gets new metric data points that are added to existing time series.
|
21
|
-
# @param sampling [Float] the amount of points to sample, from 0
|
22
|
-
# (none) to 1 (all)
|
23
|
-
# @param filter [Hash] with the following keys:
|
24
|
-
# :prefix [String] only list points whose metric name begins with this
|
25
|
-
# case-sensitive string
|
26
|
-
# :host [Array] only list points if source name begins with this
|
27
|
-
# case-sensitive string
|
28
|
-
# :tag_key [String,Array[String]] only list points with one or more of
|
29
|
-
# the given points tags
|
30
|
-
# @param options [Hash] with the following keys
|
31
|
-
# :timestamp [Boolean] prefix each block of streamed data with a
|
32
|
-
# timestamp
|
33
|
-
# :timeout [Integer] how many seconds to run the spy. After this time
|
34
|
-
# the method returns
|
35
|
-
# @raise Wavefront::Exception::InvalidSamplingValue
|
36
|
-
# @return [Nil]
|
37
|
-
#
|
38
|
-
def points(sampling = 0.01, filters = {}, options = {})
|
39
|
-
wf_sampling_value?(sampling)
|
40
|
-
api.get_stream('points', points_filter(sampling, filters), options)
|
41
|
-
end
|
42
|
-
|
43
|
-
# Gets new histograms that are added to existing time series.
|
44
|
-
# @param sampling [Float] see #points
|
45
|
-
# @param filter [Hash] see #points
|
46
|
-
# @param options [Hash] see #points
|
47
|
-
# @raise Wavefront::Exception::InvalidSamplingValue
|
48
|
-
# @return [Nil]
|
49
|
-
#
|
50
|
-
def histograms(sampling = 0.01, filters = {}, options = {})
|
51
|
-
wf_sampling_value?(sampling)
|
52
|
-
api.get_stream('histograms',
|
53
|
-
histograms_filter(sampling, filters),
|
54
|
-
options)
|
55
|
-
end
|
56
|
-
|
57
|
-
# https://<cluster>.wavefront.com/api/spy/spans
|
58
|
-
# Gets new spans with existing source names and span tags.
|
59
|
-
# @param sampling [Float] see #points
|
60
|
-
# @param filter [Hash] see #points
|
61
|
-
# @param options [Hash] see #points
|
62
|
-
# @raise Wavefront::Exception::InvalidSamplingValue
|
63
|
-
# @return [Nil]
|
64
|
-
#
|
65
|
-
def spans(sampling = 0.01, filters = {}, options = {})
|
66
|
-
wf_sampling_value?(sampling)
|
67
|
-
api.get_stream('spans', spans_filter(sampling, filters), options)
|
68
|
-
end
|
69
|
-
|
70
|
-
# https://<cluster>.wavefront.com/api/spy/ids
|
71
|
-
# Gets newly allocated IDs that correspond to new metric names, source
|
72
|
-
# names, point tags, or span tags. A new ID generally indicates that a
|
73
|
-
# new time series has been introduced.
|
74
|
-
# @param sampling [Float] see #points
|
75
|
-
# @param filter [Hash] with keys:
|
76
|
-
# :prefix [String] only list assignments whose metric name begins with
|
77
|
-
# this case-sensitive string
|
78
|
-
# :type [String] one of METRIC, SPAN, HOST or STRING
|
79
|
-
# @param options [Hash] see #points
|
80
|
-
#
|
81
|
-
def ids(sampling = 0.01, filters = {}, options = {})
|
82
|
-
wf_sampling_value?(sampling)
|
83
|
-
api.get_stream('ids', ids_filter(sampling, filters), options)
|
84
|
-
end
|
85
|
-
|
86
|
-
def api_path
|
87
|
-
'/api/spy'
|
88
|
-
end
|
89
|
-
|
90
|
-
# We have to try to make the response we get from the API look
|
91
|
-
# like the one we get from the public API. To begin with, it's
|
92
|
-
# nothing like it.
|
93
|
-
#
|
94
|
-
# This method must be public because a #respond_to? looks for
|
95
|
-
# it.
|
96
|
-
#
|
97
|
-
def _response_shim(resp, status)
|
98
|
-
{ response: parse_response(resp),
|
99
|
-
status: { result: status == 200 ? 'OK' : 'ERROR',
|
100
|
-
message: extract_api_message(status, resp),
|
101
|
-
code: status } }.to_json
|
102
|
-
end
|
103
|
-
|
104
|
-
private
|
105
|
-
|
106
|
-
def points_filter(sampling, filters)
|
107
|
-
{ metric: filters.fetch(:prefix, nil),
|
108
|
-
host: filters.fetch(:host, nil),
|
109
|
-
sampling: sampling,
|
110
|
-
pointTagKey: filters.fetch(:tag_key, nil) }.compact
|
111
|
-
end
|
112
|
-
|
113
|
-
def histograms_filter(sampling, filters)
|
114
|
-
{ histogram: filters.fetch(:prefix, nil),
|
115
|
-
host: filters.fetch(:host, nil),
|
116
|
-
sampling: sampling,
|
117
|
-
histogramTagKey: filters.fetch(:tag_key, nil) }.compact
|
118
|
-
end
|
119
|
-
|
120
|
-
def spans_filter(sampling, filters)
|
121
|
-
{ name: filters.fetch(:prefix, nil),
|
122
|
-
host: filters.fetch(:host, nil),
|
123
|
-
sampling: sampling,
|
124
|
-
spanTagKey: filters.fetch(:tag_key, nil) }.compact
|
125
|
-
end
|
126
|
-
|
127
|
-
def ids_filter(sampling, filters)
|
128
|
-
{ name: filters.fetch(:prefix, nil),
|
129
|
-
type: filters.fetch(:type, nil),
|
130
|
-
sampling: sampling }.compact
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|