wavefront-sdk 4.0.0 → 5.2.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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +12 -1
  3. data/HISTORY.md +28 -0
  4. data/README.md +3 -2
  5. data/lib/wavefront-sdk/account.rb +104 -3
  6. data/lib/wavefront-sdk/api_mixins/user.rb +10 -0
  7. data/lib/wavefront-sdk/cloudintegration.rb +27 -0
  8. data/lib/wavefront-sdk/core/exception.rb +3 -0
  9. data/lib/wavefront-sdk/credentials.rb +28 -9
  10. data/lib/wavefront-sdk/defs/version.rb +3 -1
  11. data/lib/wavefront-sdk/distribution.rb +2 -0
  12. data/lib/wavefront-sdk/paginator/base.rb +21 -15
  13. data/lib/wavefront-sdk/query.rb +0 -1
  14. data/lib/wavefront-sdk/role.rb +128 -0
  15. data/lib/wavefront-sdk/spy.rb +126 -0
  16. data/lib/wavefront-sdk/stdlib/array.rb +1 -1
  17. data/lib/wavefront-sdk/user.rb +31 -0
  18. data/lib/wavefront-sdk/usergroup.rb +17 -16
  19. data/lib/wavefront-sdk/validators.rb +31 -7
  20. data/lib/wavefront-sdk/writers/core.rb +2 -2
  21. data/spec/.rubocop.yml +13 -3
  22. data/spec/support/minitest_assertions.rb +5 -11
  23. data/spec/wavefront-sdk/account_spec.rb +107 -1
  24. data/spec/wavefront-sdk/cloudintegration_spec.rb +38 -0
  25. data/spec/wavefront-sdk/core/logger_spec.rb +3 -3
  26. data/spec/wavefront-sdk/credentials_spec.rb +5 -4
  27. data/spec/wavefront-sdk/metric_helper_spec.rb +1 -1
  28. data/spec/wavefront-sdk/role_spec.rb +96 -0
  29. data/spec/wavefront-sdk/{unstable/spy_spec.rb → spy_spec.rb} +3 -3
  30. data/spec/wavefront-sdk/user_spec.rb +8 -0
  31. data/spec/wavefront-sdk/usergroup_spec.rb +21 -11
  32. data/spec/wavefront-sdk/validators_spec.rb +16 -0
  33. data/spec/wavefront-sdk/writers/core_spec.rb +1 -1
  34. data/wavefront-sdk.gemspec +6 -6
  35. metadata +23 -24
  36. data/lib/wavefront-sdk/monitoredcluster.rb +0 -93
  37. data/lib/wavefront-sdk/unstable/spy.rb +0 -134
  38. data/spec/wavefront-sdk/monitoredcluster_spec.rb +0 -55
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative '../../spec_helper'
5
- require_relative '../../../lib/wavefront-sdk/unstable/spy'
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::Unstable::Spy.new(CREDS)
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 test_grant
43
- assert_posts("/api/v2/usergroup/grant/#{permission}",
44
- groups.to_json) do
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
- assert_invalid_id { wf.grant(permission, invalid_groups) }
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 test_revoke
52
- assert_posts("/api/v2/usergroup/revoke/#{permission}",
53
- groups.to_json) do
54
- wf.revoke(permission, groups)
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.revoke(permission, invalid_groups) }
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,20 @@ 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
414
+
415
+ def test_wf_aws_external_id
416
+ good = %w[ah5Z9dkr46jbvLtJ HqOM4mru5svd3uFp c1lBxILCBNxLKdx9]
417
+ bad = %w[h5Z9dkr46jbvLtJ HqOM4mru5svd3uFp3 c!lBx!LC*NxLKdx*]
418
+ good_and_bad('wf_aws_external_id?', 'InvalidAwsExternalId', good, bad)
419
+ end
404
420
  end
@@ -22,7 +22,7 @@ class TestClassNoTags
22
22
  end
23
23
 
24
24
  def logger
25
- Logger.new(STDOUT)
25
+ Logger.new($stdout)
26
26
  end
27
27
 
28
28
  def manage_conn
@@ -27,12 +27,12 @@ Gem::Specification.new do |gem|
27
27
  gem.add_dependency 'inifile', '~> 3.0'
28
28
  gem.add_dependency 'map', '~> 6.6'
29
29
 
30
- gem.add_development_dependency 'minitest', '~> 5.11'
31
- gem.add_development_dependency 'rake', '~> 12.3'
32
- gem.add_development_dependency 'rubocop', '~> 0.79'
33
- gem.add_development_dependency 'simplecov', '~> 0.16'
34
- gem.add_development_dependency 'spy', '~> 1.0.0'
35
- gem.add_development_dependency 'webmock', '~> 3.7'
30
+ gem.add_development_dependency 'minitest', '~> 5.14'
31
+ gem.add_development_dependency 'rake', '~> 13.0'
32
+ gem.add_development_dependency 'rubocop', '0.91.0'
33
+ gem.add_development_dependency 'simplecov', '~> 0.18'
34
+ gem.add_development_dependency 'spy', '1.0.0'
35
+ gem.add_development_dependency 'webmock', '~> 3.8'
36
36
  gem.add_development_dependency 'yard', '~> 0.9'
37
37
 
38
38
  gem.required_ruby_version = Gem::Requirement.new('>= 2.4.0')
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.0.0
4
+ version: 5.2.1
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-02-17 00:00:00.000000000 Z
11
+ date: 2020-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -72,68 +72,68 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '5.11'
75
+ version: '5.14'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '5.11'
82
+ version: '5.14'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '12.3'
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: '12.3'
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.79'
103
+ version: 0.91.0
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.79'
110
+ version: 0.91.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0.16'
117
+ version: '0.18'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0.16'
124
+ version: '0.18'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: spy
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - '='
130
130
  - !ruby/object:Gem::Version
131
131
  version: 1.0.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - '='
137
137
  - !ruby/object:Gem::Version
138
138
  version: 1.0.0
139
139
  - !ruby/object:Gem::Dependency
@@ -142,14 +142,14 @@ dependencies:
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '3.7'
145
+ version: '3.8'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '3.7'
152
+ version: '3.8'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: yard
155
155
  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
@@ -336,8 +336,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
336
336
  - !ruby/object:Gem::Version
337
337
  version: '0'
338
338
  requirements: []
339
- rubyforge_project:
340
- rubygems_version: 2.7.7
339
+ rubygems_version: 3.0.8
341
340
  signing_key:
342
341
  specification_version: 4
343
342
  summary: SDK for Wavefront API v2
@@ -374,7 +373,6 @@ test_files:
374
373
  - spec/wavefront-sdk/message_spec.rb
375
374
  - spec/wavefront-sdk/metric_helper_spec.rb
376
375
  - spec/wavefront-sdk/metric_spec.rb
377
- - spec/wavefront-sdk/monitoredcluster_spec.rb
378
376
  - spec/wavefront-sdk/notificant_spec.rb
379
377
  - spec/wavefront-sdk/paginator/base_spec.rb
380
378
  - spec/wavefront-sdk/paginator/post_spec.rb
@@ -391,18 +389,19 @@ test_files:
391
389
  - spec/wavefront-sdk/resources/user_responses/describe.json
392
390
  - spec/wavefront-sdk/resources/user_responses/grant.json
393
391
  - spec/wavefront-sdk/resources/user_responses/list.json
392
+ - spec/wavefront-sdk/role_spec.rb
394
393
  - spec/wavefront-sdk/savedsearch_spec.rb
395
394
  - spec/wavefront-sdk/search_spec.rb
396
395
  - spec/wavefront-sdk/serviceaccount_spec.rb
397
396
  - spec/wavefront-sdk/settings_spec.rb
398
397
  - spec/wavefront-sdk/source_spec.rb
398
+ - spec/wavefront-sdk/spy_spec.rb
399
399
  - spec/wavefront-sdk/stdlib/array_spec.rb
400
400
  - spec/wavefront-sdk/stdlib/hash_spec.rb
401
401
  - spec/wavefront-sdk/stdlib/string_spec.rb
402
402
  - spec/wavefront-sdk/support/mixins_spec.rb
403
403
  - spec/wavefront-sdk/support/parse_time_spec.rb
404
404
  - spec/wavefront-sdk/unstable/chart_spec.rb
405
- - spec/wavefront-sdk/unstable/spy_spec.rb
406
405
  - spec/wavefront-sdk/usage_spec.rb
407
406
  - spec/wavefront-sdk/user_spec.rb
408
407
  - 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