wavefront-sdk 4.0.0 → 5.2.1

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