hawkular-client 2.3.0 → 2.4.0

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
  SHA1:
3
- metadata.gz: 7913796f40acecb8ad5eaeca8bb846dbaae63626
4
- data.tar.gz: afdf2f08190d90a4f0a4be6bed389e42826c9e8e
3
+ metadata.gz: e11ac018e665d5df965d8636e2854a668fccf67a
4
+ data.tar.gz: d832ab5278b0b256885b21a87825beb4fa39191a
5
5
  SHA512:
6
- metadata.gz: 4b02e20b49ef0fb225d99cc736ee506f7eb5f6b318a2e18b4a6671f19643debdf9be69f31e879a3e7069d7f5b78ef4c42c6bcf2cd895704d39e83871b24daf19
7
- data.tar.gz: da752848f50298b6385becb2447969d054e54e0721e281356f58c530e1373a8f249cda2090634a084663fa63494fd7a247f65da2894da4c95950ddd57ad57361
6
+ metadata.gz: f24ceb12b54bb212b93a3ed512b2c27656a1aa4b21fd7d55d638ae15542e8d174ff2dcb00d2eccccc9f9a83915fec36c5f53bc712b0cf6485dd7e00e3e049377
7
+ data.tar.gz: bb8479e029d5abdc8b530f4e8f1276d978c87ebb3bec858d24f98e006ba0578021605eb035a92054818216a85a20ed89b3a3b9014e749b87e2af1b27209cbe83
data/CHANGES.rdoc CHANGED
@@ -3,6 +3,13 @@
3
3
  This document describes the relevant changes between releases of the
4
4
  _hawkular-client_ project.
5
5
 
6
+ === V 2.4.0
7
+
8
+ * Expose `metric.type.id` in metric definitions from Inventory, as the agent changed what it sends
9
+ * Fix the 'Undeploy' operation
10
+
11
+ Full list of items can be found at https://github.com/hawkular/hawkular-client-ruby/milestone/9?closed=1
12
+
6
13
  === V 2.3.0
7
14
 
8
15
  * Wrap connection errors in `HawkularConnectionException` (a subclass of `HawkularException`)
@@ -25,7 +25,7 @@ Gem::Specification.new do |gem|
25
25
  gem.add_runtime_dependency('websocket-client-simple', '~> 0.3.0')
26
26
  gem.add_runtime_dependency('addressable')
27
27
  gem.add_development_dependency('shoulda')
28
- gem.add_development_dependency('rspec-rails', '~> 3.0')
28
+ gem.add_development_dependency('rspec-rails', '~> 3.1')
29
29
  gem.add_development_dependency('rake', '< 11')
30
30
  gem.add_development_dependency('simple-websocket-vcr', '= 0.0.7')
31
31
  gem.add_development_dependency('yard')
@@ -101,10 +101,13 @@ module Hawkular::Inventory
101
101
  class Metric < BaseEntity
102
102
  include MetricFields
103
103
 
104
+ attr_reader :type_id
105
+
104
106
  def initialize(metric_hash)
105
107
  super(metric_hash)
106
108
  @type = metric_hash['type']['type']
107
109
  @type_path = metric_hash['type']['path']
110
+ @type_id = metric_hash['type']['id']
108
111
  @unit = metric_hash['type']['unit']
109
112
  @collection_interval = metric_hash['type']['collectionInterval']
110
113
  end
@@ -175,39 +178,39 @@ module Hawkular::Inventory
175
178
  @metric_id = hash[:metric_id]
176
179
  end
177
180
 
178
- # rubocop:disable Metrics/CyclomaticComplexity
179
181
  def self.parse(path)
180
182
  fail 'CanonicalPath must not be nil or empty' if path.to_s.strip.length == 0
181
- tmp = path.split('/')
182
- hash = {}
183
- tmp.each do |pair|
184
- (key, val) = pair.split(';')
185
- case key
186
- when 't'
187
- hash[:tenant_id] = val
188
- when 'f'
189
- hash[:feed_id] = val
190
- when 'e'
191
- hash[:environment_id] = val
192
- when 'm'
193
- hash[:metric_id] = val
194
- when 'r'
195
- hash[:resource_ids] = [] if hash[:resource_ids].nil?
196
- hash[:resource_ids].push(val)
197
- when 'mt'
198
- hash[:metric_type_id] = val
199
- when 'rt'
200
- hash[:resource_type_id] = val
201
- end
183
+ CanonicalPath.new(path_to_h path)
184
+ end
185
+
186
+ # Move up to the parent path of the resource. resource_ids set to empty array when there is no parent.
187
+ # @return CanonicalPath corresponding to the direct ancestor of the resource represented by this path object.
188
+ def up
189
+ hash = to_h
190
+ if hash[:resource_ids].nil?
191
+ hash[:resource_ids] = []
192
+ else
193
+ hash[:resource_ids].pop
202
194
  end
203
195
  CanonicalPath.new(hash)
204
196
  end
205
- # rubocop:enable Metrics/CyclomaticComplexity
206
197
 
207
198
  def ==(other)
208
199
  self.equal?(other) || other.class == self.class && other.state == state
209
200
  end
210
201
 
202
+ def to_h
203
+ {
204
+ tenant_id: @tenant_id,
205
+ feed_id: @feed_id,
206
+ environment_id: environment_id,
207
+ resource_type_id: resource_type_id,
208
+ metric_type_id: metric_type_id,
209
+ resource_ids: resource_ids,
210
+ metric_id: @metric_id
211
+ }
212
+ end
213
+
211
214
  def to_s
212
215
  ret = "/t;#{@tenant_id}"
213
216
  ret += "/f;#{@feed_id}" unless @feed_id.nil?
@@ -230,5 +233,31 @@ module Hawkular::Inventory
230
233
  def resources_chunk
231
234
  @resource_ids.map { |r| "/r;#{r}" }.join unless @resource_ids.nil?
232
235
  end
236
+
237
+ def self.path_to_h(path)
238
+ tmp = path.split('/')
239
+ hash = {}
240
+ tmp.each do |pair|
241
+ (key, val) = pair.split(';')
242
+ case key
243
+ when 't'
244
+ hash[:tenant_id] = val
245
+ when 'f'
246
+ hash[:feed_id] = val
247
+ when 'e'
248
+ hash[:environment_id] = val
249
+ when 'm'
250
+ hash[:metric_id] = val
251
+ when 'r'
252
+ hash[:resource_ids] = [] if hash[:resource_ids].nil?
253
+ hash[:resource_ids].push(val)
254
+ when 'mt'
255
+ hash[:metric_type_id] = val
256
+ when 'rt'
257
+ hash[:resource_type_id] = val
258
+ end
259
+ end
260
+ hash
261
+ end
233
262
  end
234
263
  end
@@ -2,6 +2,8 @@ require 'hawkular/base_client'
2
2
  require 'websocket-client-simple'
3
3
  require 'json'
4
4
 
5
+ require 'hawkular/inventory/entities'
6
+
5
7
  # Adding a method `perform` for each block so that we can write nice callbacks for this client
6
8
  class Proc
7
9
  class PerformMethodMissing
@@ -144,6 +146,28 @@ module Hawkular::Operations
144
146
  invoke_operation_helper(operation_payload, 'DeployApplication', hash[:binary_content], &callback)
145
147
  end
146
148
 
149
+ # Removes an existing deployment from WildFly
150
+ #
151
+ # @param [Hash] hash Arguments for deployment removal
152
+ # @option hash [String] :resource_path canonical path of the WildFly server from which to remove the deployment
153
+ # @option hash [String] :deployment_name name of deployment to remove
154
+ #
155
+ # @param callback [Block] callback that is run after the operation is done
156
+ def remove_deployment(hash, &callback)
157
+ required = [:resource_path, :deployment_name]
158
+ check_pre_conditions hash, required, &callback
159
+
160
+ cp = ::Hawkular::Inventory::CanonicalPath.parse hash[:resource_path]
161
+ server_path = cp.up.to_s
162
+
163
+ payload_hash = {
164
+ resource_path: server_path,
165
+ destination_file_name: hash[:deployment_name]
166
+ }
167
+ operation_payload = prepare_payload_hash([], payload_hash)
168
+ invoke_operation_helper(operation_payload, 'UndeployApplication', &callback)
169
+ end
170
+
147
171
  # Adds a new datasource
148
172
  #
149
173
  # @param [Hash] hash Arguments for the datasource
@@ -4,5 +4,5 @@
4
4
  # @see https://github.com/hawkular
5
5
  module Hawkular
6
6
  # Version of the Hawkular Ruby Gem
7
- VERSION = '2.3.0'.freeze
7
+ VERSION = '2.4.0'.freeze
8
8
  end
@@ -292,6 +292,15 @@ module Hawkular::Inventory::RSpec
292
292
  expect(metrics.size).to be(14)
293
293
  end
294
294
 
295
+ it 'Should have the same requested metric type id' do
296
+ metric_type_id = 'Server Availability~Server Availability'
297
+ type_path = CanonicalPath.new(feed_id: feed_id, metric_type_id: hawk_escape_id(metric_type_id))
298
+ metrics = @client.list_metrics_for_metric_type(type_path)
299
+
300
+ expect(metrics.size).to be > 0
301
+ expect(metrics).to all(have_attributes(type_id: metric_type_id))
302
+ end
303
+
295
304
  it 'Should return config data of given resource' do
296
305
  resource_path = CanonicalPath.new(feed_id: feed_id, resource_ids: [hawk_escape_id('Local~~')])
297
306
  config = @client.get_config_data_for_resource(resource_path)
@@ -327,11 +327,11 @@ module Hawkular::Operations::RSpec
327
327
  resource_ids: [wf_server_resource_id, alerts_war_resource_id])
328
328
 
329
329
  undeploy = {
330
- operationName: 'Undeploy',
331
- resourcePath: path.to_s
330
+ resource_path: path.to_s,
331
+ deployment_name: 'hawkular-alerts-actions-email.war'
332
332
  }
333
333
  actual_data = {}
334
- @client.invoke_generic_operation(undeploy) do |on|
334
+ @client.remove_deployment(undeploy) do |on|
335
335
  on.success do |data|
336
336
  actual_data[:data] = data
337
337
  end
@@ -37,6 +37,15 @@ describe 'CanonicalPath' do
37
37
  .to be == CanonicalPath.new(tenant_id: 't1', environment_id: 'e1', resource_ids: %w(r1 r2 r3))
38
38
  end
39
39
 
40
+ it 'with resource hierarchy should be upable' do
41
+ expect(CanonicalPath.parse('/t;t1/f;f1/r;r1/r;r2/r;r3/r;r4/r;r5').up)
42
+ .to be == CanonicalPath.new(tenant_id: 't1', feed_id: 'f1', resource_ids: %w(r1 r2 r3 r4))
43
+ expect(CanonicalPath.parse('/t;t1/e;e1/r;r1').up)
44
+ .to be == CanonicalPath.new(tenant_id: 't1', environment_id: 'e1', resource_ids: [])
45
+ expect(CanonicalPath.parse('/t;t1/e;e1').up)
46
+ .to be == CanonicalPath.new(tenant_id: 't1', environment_id: 'e1', resource_ids: [])
47
+ end
48
+
40
49
  it 'should be identity when calling parse and then to_s' do
41
50
  path_str = '/t;t1/e;e1/r;r1/r;r2'
42
51
  path1 = CanonicalPath.parse(path_str)
@@ -0,0 +1,73 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://jdoe:password@localhost:8080/hawkular/inventory/traversal/f;<%= feed_uuid %>/mt;Server%20Availability~Server%20Availability/rl;defines/type=m
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Accept-Encoding:
13
+ - identity
14
+ User-Agent:
15
+ - hawkular-client-ruby
16
+ Hawkular-Tenant:
17
+ - hawkular
18
+ Content-Type:
19
+ - application/json
20
+ Host:
21
+ - localhost:8080
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Expires:
28
+ - '0'
29
+ Cache-Control:
30
+ - no-cache, no-store, must-revalidate
31
+ X-Powered-By:
32
+ - Undertow/1
33
+ Server:
34
+ - WildFly/10
35
+ Pragma:
36
+ - no-cache
37
+ Date:
38
+ - Thu, 28 Jul 2016 00:09:29 GMT
39
+ X-Total-Count:
40
+ - '1'
41
+ Connection:
42
+ - keep-alive
43
+ Content-Type:
44
+ - application/json
45
+ Content-Length:
46
+ - '876'
47
+ Link:
48
+ - <http://localhost:8080/hawkular/inventory/traversal/f;<%= feed_uuid %>/mt;Server%20Availability~Server%20Availability/rl;defines/type=m>;
49
+ rel="current"
50
+ body:
51
+ encoding: UTF-8
52
+ string: |-
53
+ [ {
54
+ "path" : "/t;hawkular/f;<%= feed_uuid %>/m;AI~R~%5B<%= feed_uuid %>%2FLocal~~%5D~AT~Server%20Availability~Server%20Availability",
55
+ "properties" : {
56
+ "__identityHash" : "fa194dbc2719bcccbda7a8546db986adeff870df"
57
+ },
58
+ "name" : "Server Availability~Server Availability",
59
+ "identityHash" : "fa194dbc2719bcccbda7a8546db986adeff870df",
60
+ "type" : {
61
+ "path" : "/t;hawkular/f;<%= feed_uuid %>/mt;Server%20Availability~Server%20Availability",
62
+ "name" : "Server Availability~Server Availability",
63
+ "identityHash" : "69beedc2b0c5cf2f3d0484b9c1aa9e4cdcf93",
64
+ "unit" : "NONE",
65
+ "type" : "AVAILABILITY",
66
+ "collectionInterval" : 30,
67
+ "id" : "Server Availability~Server Availability"
68
+ },
69
+ "id" : "AI~R~[<%= feed_uuid %>/Local~~]~AT~Server Availability~Server Availability"
70
+ } ]
71
+ http_version:
72
+ recorded_at: Thu, 28 Jul 2016 00:09:29 GMT
73
+ recorded_with: VCR 3.0.3
@@ -7,7 +7,7 @@
7
7
  },
8
8
  {
9
9
  "operation": "write",
10
- "data": "ExecuteOperationRequest={\"operationName\":\"Undeploy\",\"resourcePath\":\"/t;hawkular/f;33f22c4a-445a-4f90-a25e-caeff9579a10/r;Local~~/r;Local~%2Fdeployment%3Dhawkular-alerts-actions-email.war\",\"authentication\":{\"username\":\"jdoe\",\"password\":\"password\"}}"
10
+ "data": "UndeployApplicationRequest={\"resourcePath\":\"/t;hawkular/f;33f22c4a-445a-4f90-a25e-caeff9579a10/r;Local~~\",\"destinationFileName\":\"\hawkular-alerts-actions-email.war\",\"authentication\":{\"username\":\"jdoe\",\"password\":\"password\"}}"
11
11
  },
12
12
  {
13
13
  "operation": "read",
@@ -17,7 +17,7 @@
17
17
  {
18
18
  "operation": "read",
19
19
  "type": "text",
20
- "data": "ExecuteOperationResponse={\"operationName\":\"Undeploy\",\"resourcePath\":\"/t;hawkular/f;33f22c4a-445a-4f90-a25e-caeff9579a10/r;Local~~/r;Local~%2Fdeployment%3Dhawkular-alerts-actions-email.war\",\"destinationSessionId\":\"1j9HQbWoBj9RMQZIR0BwpnU3IkxoMwQ-O9_Cr1Ds\",\"status\":\"OK\",\"message\":\"Performed [Undeploy] on a [DMR Node] given by Inventory path [/t;hawkular/f;33f22c4a-445a-4f90-a25e-caeff9579a10/r;Local~~/r;Local~%2Fdeployment%3Dhawkular-alerts-actions-email.war]\"}"
20
+ "data": "UndeployApplicationResponse={\"resourcePath\":\"/t;hawkular/f;33f22c4a-445a-4f90-a25e-caeff9579a10/r;Local~~\",\"destinationFileName\":\"\hawkular-alerts-actions-email.war\",\"destinationSessionId\":\"1j9HQbWoBj9RMQZIR0BwpnU3IkxoMwQ-O9_Cr1Ds\",\"status\":\"OK\",\"message\":\"Performed [Undeploy] on a [DMR Node] given by Inventory path [/t;hawkular/f;33f22c4a-445a-4f90-a25e-caeff9579a10/r;Local~~/r;Local~%2Fdeployment%3Dhawkular-alerts-actions-email.war]\"}"
21
21
  },
22
22
  {
23
23
  "operation": "close"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hawkular-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Libor Zoubek
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-07-26 00:00:00.000000000 Z
14
+ date: 2016-08-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client
@@ -75,14 +75,14 @@ dependencies:
75
75
  requirements:
76
76
  - - "~>"
77
77
  - !ruby/object:Gem::Version
78
- version: '3.0'
78
+ version: '3.1'
79
79
  type: :development
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
83
  - - "~>"
84
84
  - !ruby/object:Gem::Version
85
- version: '3.0'
85
+ version: '3.1'
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: rake
88
88
  requirement: !ruby/object:Gem::Requirement
@@ -309,6 +309,7 @@ files:
309
309
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_create_a_resourcetype.yml
310
310
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_create_and_delete_feed.yml
311
311
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_create_and_get_a_resource.yml
312
+ - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_have_the_same_requested_metric_type_id.yml
312
313
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_list_URLs.yml
313
314
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_list_WildFlys.yml
314
315
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_list_WildFlys_with_props.yml
@@ -545,6 +546,7 @@ test_files:
545
546
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_create_a_resourcetype.yml
546
547
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_create_and_delete_feed.yml
547
548
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_create_and_get_a_resource.yml
549
+ - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_have_the_same_requested_metric_type_id.yml
548
550
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_list_URLs.yml
549
551
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_list_WildFlys.yml
550
552
  - spec/vcr_cassettes/Inventory/inventory_0_17/Templates/Should_list_WildFlys_with_props.yml