ibm_power_hmc 0.3.0 → 0.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/.gitignore +0 -0
- data/.rubocop.yml +0 -0
- data/.rubocop_local.yml +2 -0
- data/CHANGELOG.md +0 -0
- data/Gemfile +0 -0
- data/LICENSE +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/ibm_power_hmc.gemspec +0 -0
- data/lib/ibm_power_hmc/connection.rb +81 -23
- data/lib/ibm_power_hmc/job.rb +0 -0
- data/lib/ibm_power_hmc/parser.rb +117 -18
- data/lib/ibm_power_hmc/pcm.rb +0 -0
- data/lib/ibm_power_hmc/version.rb +1 -1
- data/lib/ibm_power_hmc.rb +4 -4
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c19305b95374164ab2a6e6168a4a292ea0666065cbcbe8f05dea30483b622055
|
4
|
+
data.tar.gz: be50d67e7c462cc17f20be3f643c6029e4f2ba7d43f872f1821bbe428f0e11fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1191f64dd2f5c550d25a372b4a0502dd4e7b5a8e779a2dacdf079a22f3a8b8092af6e4ddff514b0e06dddf8239985033034959e385f951f2f535f092866cbd12
|
7
|
+
data.tar.gz: d6af992547d99624f59e6eb5ec3404768c91d1b9c9809e9542966fee15b4a350e8b8803e6fd25a597c48699b630171b7cae8327108f0ec6616e2329c5441bf1c
|
data/.gitignore
CHANGED
File without changes
|
data/.rubocop.yml
CHANGED
File without changes
|
data/.rubocop_local.yml
CHANGED
data/CHANGELOG.md
CHANGED
File without changes
|
data/Gemfile
CHANGED
File without changes
|
data/LICENSE
CHANGED
File without changes
|
data/README.md
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
data/ibm_power_hmc.gemspec
CHANGED
File without changes
|
@@ -8,15 +8,15 @@ module IbmPowerHmc
|
|
8
8
|
# HMC REST Client connection.
|
9
9
|
class Connection
|
10
10
|
##
|
11
|
-
# @!method initialize(host:, username: "hscroot",
|
11
|
+
# @!method initialize(host:, password:, username: "hscroot", port: 12_443, validate_ssl: true)
|
12
12
|
# Create a new HMC connection.
|
13
13
|
#
|
14
14
|
# @param host [String] Hostname of the HMC.
|
15
|
-
# @param username [String] User name.
|
16
15
|
# @param password [String] Password.
|
16
|
+
# @param username [String] User name.
|
17
17
|
# @param port [Integer] TCP port number.
|
18
18
|
# @param validate_ssl [Boolean] Verify SSL certificates.
|
19
|
-
def initialize(host:, username: "hscroot",
|
19
|
+
def initialize(host:, password:, username: "hscroot", port: 12_443, validate_ssl: true)
|
20
20
|
@hostname = "#{host}:#{port}"
|
21
21
|
@username = username
|
22
22
|
@password = password
|
@@ -151,18 +151,14 @@ module IbmPowerHmc
|
|
151
151
|
end
|
152
152
|
|
153
153
|
##
|
154
|
-
# @!method rename_lpar(lpar_uuid,
|
154
|
+
# @!method rename_lpar(lpar_uuid, new_name)
|
155
155
|
# Rename a logical partition.
|
156
156
|
# @param lpar_uuid [String] The UUID of the logical partition.
|
157
|
-
# @param
|
158
|
-
def rename_lpar(lpar_uuid,
|
157
|
+
# @param new_name [String] The new name of the logical partition.
|
158
|
+
def rename_lpar(lpar_uuid, new_name)
|
159
159
|
method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}"
|
160
|
-
|
161
|
-
|
162
|
-
}
|
163
|
-
modify_object(method_url, headers) do |lpar|
|
164
|
-
lpar.xml.elements["PartitionName"].text = newname
|
165
|
-
end
|
160
|
+
|
161
|
+
modify_object(method_url) { |lpar| lpar.name = new_name }
|
166
162
|
end
|
167
163
|
|
168
164
|
##
|
@@ -201,6 +197,26 @@ module IbmPowerHmc
|
|
201
197
|
Parser.new(response.body).object(:VirtualIOServer)
|
202
198
|
end
|
203
199
|
|
200
|
+
##
|
201
|
+
# @!method network_adapter_lpar(lpar_uuid, netadap_uuid = nil)
|
202
|
+
# Retrieve one or all virtual ethernet network adapters attached to a logical partition.
|
203
|
+
# @param lpar_uuid [String] UUID of the logical partition.
|
204
|
+
# @param netadap_uuid [String] UUID of the adapter to match (returns all adapters if omitted).
|
205
|
+
# @return [Array<IbmPowerHmc::ClientNetworkAdapter>] The list of network adapters.
|
206
|
+
def network_adapter_lpar(lpar_uuid, netadap_uuid = nil)
|
207
|
+
network_adapter("LogicalPartition", lpar_uuid, netadap_uuid)
|
208
|
+
end
|
209
|
+
|
210
|
+
##
|
211
|
+
# @!method network_adapter_vios(vios_uuid, netadap_uuid = nil)
|
212
|
+
# Retrieve one or all virtual ethernet network adapters attached to a Virtual I/O Server.
|
213
|
+
# @param vios_uuid [String] UUID of the Virtual I/O Server.
|
214
|
+
# @param netadap_uuid [String] UUID of the adapter to match (returns all adapters if omitted).
|
215
|
+
# @return [Array<IbmPowerHmc::ClientNetworkAdapter>] The list of network adapters.
|
216
|
+
def network_adapter_vios(vios_uuid, netadap_uuid = nil)
|
217
|
+
network_adapter("VirtualIOServer", vios_uuid, netadap_uuid)
|
218
|
+
end
|
219
|
+
|
204
220
|
##
|
205
221
|
# @!method poweron_lpar(lpar_uuid, params = {}, sync = true)
|
206
222
|
# Power on a logical partition.
|
@@ -219,9 +235,7 @@ module IbmPowerHmc
|
|
219
235
|
##
|
220
236
|
# @!method poweroff_lpar(lpar_uuid, params = {}, sync = true)
|
221
237
|
# Power off a logical partition.
|
222
|
-
# @param
|
223
|
-
# @param params [Hash] Job parameters.
|
224
|
-
# @param sync [Boolean] Start the job and wait for its completion.
|
238
|
+
# @param (see #poweron_lpar)
|
225
239
|
# @return [IbmPowerHmc::HmcJob] The HMC job.
|
226
240
|
def poweroff_lpar(lpar_uuid, params = {}, sync = true)
|
227
241
|
method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}/do/PowerOff"
|
@@ -249,9 +263,7 @@ module IbmPowerHmc
|
|
249
263
|
##
|
250
264
|
# @!method poweroff_vios(vios_uuid, params = {}, sync = true)
|
251
265
|
# Power off a virtual I/O server.
|
252
|
-
# @param
|
253
|
-
# @param params [Hash] Job parameters.
|
254
|
-
# @param sync [Boolean] Start the job and wait for its completion.
|
266
|
+
# @param (see #poweron_vios)
|
255
267
|
# @return [IbmPowerHmc::HmcJob] The HMC job.
|
256
268
|
def poweroff_vios(vios_uuid, params = {}, sync = true)
|
257
269
|
method_url = "/rest/api/uom/VirtualIOServer/#{vios_uuid}/do/PowerOff"
|
@@ -279,9 +291,7 @@ module IbmPowerHmc
|
|
279
291
|
##
|
280
292
|
# @!method poweroff_managed_system(sys_uuid, params = {}, sync = true)
|
281
293
|
# Power off a managed system.
|
282
|
-
# @param
|
283
|
-
# @param params [Hash] Job parameters.
|
284
|
-
# @param sync [Boolean] Start the job and wait for its completion.
|
294
|
+
# @param (see #poweron_managed_system)
|
285
295
|
# @return [IbmPowerHmc::HmcJob] The HMC job.
|
286
296
|
def poweroff_managed_system(sys_uuid, params = {}, sync = true)
|
287
297
|
method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/do/PowerOff"
|
@@ -325,6 +335,29 @@ module IbmPowerHmc
|
|
325
335
|
job
|
326
336
|
end
|
327
337
|
|
338
|
+
##
|
339
|
+
# @!method virtual_switches(sys_uuid)
|
340
|
+
# Retrieve the list of virtual switches from a specified managed system.
|
341
|
+
# @param sys_uuid [String] The UUID of the managed system.
|
342
|
+
# @return [Array<IbmPowerHmc::VirtualSwitch>] The list of virtual switches.
|
343
|
+
def virtual_switches(sys_uuid)
|
344
|
+
method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/VirtualSwitch"
|
345
|
+
response = request(:get, method_url)
|
346
|
+
FeedParser.new(response.body).objects(:VirtualSwitch)
|
347
|
+
end
|
348
|
+
|
349
|
+
##
|
350
|
+
# @!method virtual_switch(vswitch_uuid, sys_uuid)
|
351
|
+
# Retrieve information about a virtual switch.
|
352
|
+
# @param vswitch_uuid [String] The UUID of the virtual switch.
|
353
|
+
# @param sys_uuid [String] The UUID of the managed system.
|
354
|
+
# @return [IbmPowerHmc::VirtualSwitch] The virtual switch.
|
355
|
+
def virtual_switch(vswitch_uuid, sys_uuid)
|
356
|
+
method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/VirtualSwitch/#{vswitch_uuid}"
|
357
|
+
response = request(:get, method_url)
|
358
|
+
Parser.new(response.body).object(:VirtualSwitch)
|
359
|
+
end
|
360
|
+
|
328
361
|
##
|
329
362
|
# @!method next_events(wait = true)
|
330
363
|
# Retrieve a list of events that occured since last call.
|
@@ -418,6 +451,13 @@ module IbmPowerHmc
|
|
418
451
|
|
419
452
|
private
|
420
453
|
|
454
|
+
# @!method modify_object(method_url, headers = {}, attempts = 5)
|
455
|
+
# Modify an object at a specified URI.
|
456
|
+
# @param method_url [String] The URL of the object to modify.
|
457
|
+
# @param headers [Hash] HTTP headers.
|
458
|
+
# @param attempts [Integer] Maximum number of retries.
|
459
|
+
# @yield [obj] The object to modify.
|
460
|
+
# @yieldparam obj [IbmPowerHmc::AbstractRest] The object to modify.
|
421
461
|
def modify_object(method_url, headers = {}, attempts = 5)
|
422
462
|
while attempts > 0
|
423
463
|
response = request(:get, method_url)
|
@@ -426,16 +466,34 @@ module IbmPowerHmc
|
|
426
466
|
yield obj
|
427
467
|
|
428
468
|
# Use ETag to ensure object has not changed.
|
429
|
-
headers = headers.merge("If-Match" => obj.etag)
|
469
|
+
headers = headers.merge("If-Match" => obj.etag, :content_type => obj.content_type)
|
430
470
|
begin
|
431
471
|
request(:post, method_url, headers, obj.xml.to_s)
|
432
472
|
break
|
433
473
|
rescue HttpError => e
|
434
474
|
attempts -= 1
|
435
|
-
# Will get 412 ("Precondition Failed" if ETag mismatches
|
475
|
+
# Will get 412 ("Precondition Failed") if ETag mismatches
|
436
476
|
raise if e.status != 412 || attempts == 0
|
437
477
|
end
|
438
478
|
end
|
439
479
|
end
|
480
|
+
|
481
|
+
##
|
482
|
+
# @!method network_adapter_lpar(lpar_uuid, netadap_uuid = nil)
|
483
|
+
# Retrieve one or all virtual ethernet network adapters attached to a Logical Partition or a Virtual I/O Server.
|
484
|
+
# @param vm_type [String] "Logical Partition" or "VirtualIOServer".
|
485
|
+
# @param lpar_uuid [String] UUID of the Logical Partition or the Virtual I/O Server.
|
486
|
+
# @param netadap_uuid [String] UUID of the adapter to match (returns all adapters if nil).
|
487
|
+
# @return [Array<IbmPowerHmc::ClientNetworkAdapter>] The list of network adapters.
|
488
|
+
def network_adapter(vm_type, lpar_uuid, netadap_uuid)
|
489
|
+
if netadap_uuid.nil?
|
490
|
+
method_url = "/rest/api/uom/#{vm_type}/#{lpar_uuid}/ClientNetworkAdapter"
|
491
|
+
else
|
492
|
+
method_url = "/rest/api/uom/#{vm_type}/#{lpar_uuid}/ClientNetworkAdapter/#{netadap_uuid}"
|
493
|
+
end
|
494
|
+
|
495
|
+
response = request(:get, method_url)
|
496
|
+
Parser.new(response.body).object(:ClientNetworkAdapter)
|
497
|
+
end
|
440
498
|
end
|
441
499
|
end
|
data/lib/ibm_power_hmc/job.rb
CHANGED
File without changes
|
data/lib/ibm_power_hmc/parser.rb
CHANGED
@@ -4,16 +4,26 @@ require 'time'
|
|
4
4
|
require 'uri'
|
5
5
|
|
6
6
|
module IbmPowerHmc
|
7
|
-
|
7
|
+
##
|
8
|
+
# Generic parser for HMC K2 XML responses.
|
8
9
|
class Parser
|
9
10
|
def initialize(body)
|
10
11
|
@doc = REXML::Document.new(body)
|
11
12
|
end
|
12
13
|
|
14
|
+
##
|
15
|
+
# @!method entry
|
16
|
+
# Return the first K2 entry element in the response.
|
17
|
+
# @return [REXML::Element, nil] The first entry element.
|
13
18
|
def entry
|
14
19
|
@doc.elements["entry"]
|
15
20
|
end
|
16
21
|
|
22
|
+
##
|
23
|
+
# @!method object(filter_type = nil)
|
24
|
+
# Parse the first K2 entry element into an object.
|
25
|
+
# @param filter_type [String] Entry type must match the specified type.
|
26
|
+
# @return [IbmPowerHmc::AbstractRest, nil] The parsed object.
|
17
27
|
def object(filter_type = nil)
|
18
28
|
self.class.to_obj(entry, filter_type)
|
19
29
|
end
|
@@ -21,19 +31,28 @@ module IbmPowerHmc
|
|
21
31
|
def self.to_obj(entry, filter_type = nil)
|
22
32
|
return if entry.nil?
|
23
33
|
|
24
|
-
content = entry.elements["content"]
|
34
|
+
content = entry.elements["content[@type]"]
|
25
35
|
return if content.nil?
|
26
36
|
|
27
|
-
type = content.attributes["type"]
|
28
|
-
return if type.nil?
|
29
|
-
|
30
|
-
type = type.split("=").last
|
37
|
+
type = content.attributes["type"].split("=").last
|
31
38
|
return unless filter_type.nil? || filter_type.to_s == type
|
32
39
|
|
33
40
|
Module.const_get("IbmPowerHmc::#{type}").new(entry)
|
34
41
|
end
|
35
42
|
end
|
36
43
|
|
44
|
+
##
|
45
|
+
# Parser for HMC K2 feeds.
|
46
|
+
# A feed encapsulates a list of entries like this:
|
47
|
+
# <feed>
|
48
|
+
# <entry>
|
49
|
+
# <!-- entry #1 -->
|
50
|
+
# </entry>
|
51
|
+
# <entry>
|
52
|
+
# <!-- entry #2 -->
|
53
|
+
# </entry>
|
54
|
+
# ...
|
55
|
+
# </feed>
|
37
56
|
class FeedParser < Parser
|
38
57
|
def entries
|
39
58
|
objs = []
|
@@ -43,6 +62,11 @@ module IbmPowerHmc
|
|
43
62
|
objs
|
44
63
|
end
|
45
64
|
|
65
|
+
##
|
66
|
+
# @!method objects(filter_type = nil)
|
67
|
+
# Parse feed entries into objects.
|
68
|
+
# @param filter_type [String] Filter entries based on content type.
|
69
|
+
# @return [Array<IbmPowerHmc::AbstractRest>] The list of objects.
|
46
70
|
def objects(filter_type = nil)
|
47
71
|
entries do |entry|
|
48
72
|
self.class.to_obj(entry, filter_type)
|
@@ -53,34 +77,76 @@ module IbmPowerHmc
|
|
53
77
|
private_constant :Parser
|
54
78
|
private_constant :FeedParser
|
55
79
|
|
56
|
-
|
80
|
+
##
|
81
|
+
# HMC generic K2 XML entry.
|
82
|
+
# Encapsulate data for a single object.
|
83
|
+
# The XML looks like this:
|
84
|
+
# <entry>
|
85
|
+
# <id>uuid</id>
|
86
|
+
# <published>timestamp</published>
|
87
|
+
# <etag:etag>ETag</etag:etag>
|
88
|
+
# <content type="type">
|
89
|
+
# <!-- actual content here -->
|
90
|
+
# </content>
|
91
|
+
# </entry>
|
92
|
+
#
|
93
|
+
# @abstract
|
94
|
+
# @attr_reader [String] uuid The UUID of the object contained in the entry.
|
95
|
+
# @attr_reader [URI::HTTPS] href The URL of the object itself.
|
96
|
+
# @attr_reader [Time] published The time at which the entry was published.
|
97
|
+
# @attr_reader [String] etag The entity tag of the entry.
|
98
|
+
# @attr_reader [String] content_type The content type of the object contained in the entry.
|
99
|
+
# @attr_reader [REXML::Document] xml The XML document representing this object.
|
57
100
|
class AbstractRest
|
58
101
|
ATTRS = {}.freeze
|
59
|
-
attr_reader :uuid, :published, :etag, :xml
|
102
|
+
attr_reader :uuid, :href, :published, :etag, :content_type, :xml
|
60
103
|
|
61
104
|
def initialize(doc)
|
62
105
|
@uuid = doc.elements["id"]&.text
|
106
|
+
link = doc.elements["link[@rel='SELF']"]
|
107
|
+
@href = URI(link.attributes["href"]) unless link.nil?
|
63
108
|
@published = Time.xmlschema(doc.elements["published"]&.text)
|
64
109
|
@etag = doc.elements["etag:etag"]&.text&.strip
|
65
|
-
|
66
|
-
@
|
110
|
+
content = doc.elements["content"]
|
111
|
+
@content_type = content.attributes["type"]
|
112
|
+
@xml = content.elements.first
|
67
113
|
define_attrs(self.class::ATTRS)
|
68
114
|
end
|
69
115
|
|
116
|
+
##
|
117
|
+
# @!method define_attr(varname, xpath)
|
118
|
+
# Define an instance variable using the text of an XML element as value.
|
119
|
+
# @param varname [String] The name of the instance variable.
|
120
|
+
# @param xpath [String] The XPath of the XML element containing the text.
|
70
121
|
def define_attr(varname, xpath)
|
71
|
-
value =
|
122
|
+
value = singleton(xpath)
|
72
123
|
self.class.__send__(:attr_reader, varname)
|
73
124
|
instance_variable_set("@#{varname}", value)
|
74
125
|
end
|
75
126
|
|
127
|
+
##
|
128
|
+
# @!method define_attrs(hash)
|
129
|
+
# Define instance variables using the texts of XML elements as values.
|
130
|
+
# @param hash [Hash] The name of the instance variables and the XPaths
|
131
|
+
# of the XML elements containing the values.
|
76
132
|
def define_attrs(hash)
|
77
133
|
hash.each do |key, value|
|
78
134
|
define_attr(key, value)
|
79
135
|
end
|
80
136
|
end
|
81
137
|
|
82
|
-
|
83
|
-
|
138
|
+
##
|
139
|
+
# @!method singleton(xpath, attr = nil)
|
140
|
+
# Get the text (or the value of a specified attribute) of an XML element.
|
141
|
+
# @param xpath [String] The XPath of the XML element.
|
142
|
+
# @param attr [String] The name of the attribute.
|
143
|
+
# @return [String, nil] The text or attribute value of the XML element or nil.
|
144
|
+
# @example lpar.singleton("PartitionProcessorConfiguration/*/MaximumVirtualProcessors").to_i
|
145
|
+
def singleton(xpath, attr = nil)
|
146
|
+
elem = xml.elements[xpath]
|
147
|
+
return if elem.nil?
|
148
|
+
|
149
|
+
attr.nil? ? elem.text&.strip : elem.attributes[attr]
|
84
150
|
end
|
85
151
|
|
86
152
|
def extract_uuid_from_href(href)
|
@@ -136,7 +202,6 @@ module IbmPowerHmc
|
|
136
202
|
# Common class for LPAR and VIOS
|
137
203
|
class BasePartition < AbstractRest
|
138
204
|
ATTRS = {
|
139
|
-
:os => "OperatingSystemVersion",
|
140
205
|
:name => "PartitionName",
|
141
206
|
:id => "PartitionID",
|
142
207
|
:state => "PartitionState",
|
@@ -145,13 +210,25 @@ module IbmPowerHmc
|
|
145
210
|
:dedicated => "PartitionProcessorConfiguration/HasDedicatedProcessors",
|
146
211
|
:rmc_state => "ResourceMonitoringControlState",
|
147
212
|
:rmc_ipaddr => "ResourceMonitoringIPAddress",
|
213
|
+
:os => "OperatingSystemVersion",
|
148
214
|
:ref_code => "ReferenceCode"
|
149
215
|
}.freeze
|
150
216
|
|
151
217
|
def sys_uuid
|
152
|
-
sys_href =
|
218
|
+
sys_href = singleton("AssociatedManagedSystem", "href")
|
153
219
|
extract_uuid_from_href(sys_href)
|
154
220
|
end
|
221
|
+
|
222
|
+
def net_adap_uuids
|
223
|
+
xml.get_elements("ClientNetworkAdapters/link").map do |link|
|
224
|
+
extract_uuid_from_href(link.attributes["href"])
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
def name=(name)
|
229
|
+
xml.elements[ATTRS[:name]].text = name
|
230
|
+
@name = name
|
231
|
+
end
|
155
232
|
end
|
156
233
|
|
157
234
|
# Logical Partition information
|
@@ -162,6 +239,19 @@ module IbmPowerHmc
|
|
162
239
|
class VirtualIOServer < BasePartition
|
163
240
|
end
|
164
241
|
|
242
|
+
# Virtual Switch information
|
243
|
+
class VirtualSwitch < AbstractRest
|
244
|
+
ATTRS = {
|
245
|
+
:id => "SwitchID",
|
246
|
+
:mode => "SwitchMode",
|
247
|
+
:name => "SwitchName"
|
248
|
+
}.freeze
|
249
|
+
|
250
|
+
def sys_uuid
|
251
|
+
href.path.split('/')[-3]
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
165
255
|
# HMC Event
|
166
256
|
class Event < AbstractRest
|
167
257
|
ATTRS = {
|
@@ -172,6 +262,15 @@ module IbmPowerHmc
|
|
172
262
|
}.freeze
|
173
263
|
end
|
174
264
|
|
265
|
+
# Network adapter information
|
266
|
+
class ClientNetworkAdapter < AbstractRest
|
267
|
+
ATTRS = {
|
268
|
+
:macaddr => "MACAddress",
|
269
|
+
:vswitch_id => "VirtualSwitchID",
|
270
|
+
:vlan_id => "PortVLANID"
|
271
|
+
}.freeze
|
272
|
+
end
|
273
|
+
|
175
274
|
# Error response from HMC
|
176
275
|
class HttpErrorResponse < AbstractRest
|
177
276
|
ATTRS = {
|
@@ -192,9 +291,9 @@ module IbmPowerHmc
|
|
192
291
|
|
193
292
|
def results
|
194
293
|
results = {}
|
195
|
-
xml.each_element("Results/JobParameter") do |
|
196
|
-
name =
|
197
|
-
value =
|
294
|
+
xml.each_element("Results/JobParameter") do |jobparam|
|
295
|
+
name = jobparam.elements["ParameterName"]&.text&.strip
|
296
|
+
value = jobparam.elements["ParameterValue"]&.text&.strip
|
198
297
|
results[name] = value unless name.nil?
|
199
298
|
end
|
200
299
|
results
|
data/lib/ibm_power_hmc/pcm.rb
CHANGED
File without changes
|
data/lib/ibm_power_hmc.rb
CHANGED
@@ -7,8 +7,8 @@ require "ibm_power_hmc/version"
|
|
7
7
|
|
8
8
|
# Module for IBM HMC Rest API Client
|
9
9
|
module IbmPowerHmc
|
10
|
-
require_relative "./ibm_power_hmc/parser
|
11
|
-
require_relative "./ibm_power_hmc/job
|
12
|
-
require_relative "./ibm_power_hmc/connection
|
13
|
-
require_relative "./ibm_power_hmc/pcm
|
10
|
+
require_relative "./ibm_power_hmc/parser"
|
11
|
+
require_relative "./ibm_power_hmc/job"
|
12
|
+
require_relative "./ibm_power_hmc/connection"
|
13
|
+
require_relative "./ibm_power_hmc/pcm"
|
14
14
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibm_power_hmc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- IBM Power
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.1'
|
27
27
|
description: A Ruby gem for interacting with the IBM Hardware Management Console (HMC).
|
28
|
-
email:
|
28
|
+
email:
|
29
29
|
executables: []
|
30
30
|
extensions: []
|
31
31
|
extra_rdoc_files: []
|
@@ -55,7 +55,7 @@ metadata:
|
|
55
55
|
homepage_uri: http://github.com/IBM/ibm_power_hmc_sdk_ruby
|
56
56
|
source_code_uri: http://github.com/IBM/ibm_power_hmc_sdk_ruby
|
57
57
|
changelog_uri: http://github.com/IBM/ibm_power_hmc_sdk_ruby/blob/master/CHANGELOG.md
|
58
|
-
post_install_message:
|
58
|
+
post_install_message:
|
59
59
|
rdoc_options: []
|
60
60
|
require_paths:
|
61
61
|
- lib
|
@@ -70,8 +70,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '0'
|
72
72
|
requirements: []
|
73
|
-
rubygems_version: 3.1.
|
74
|
-
signing_key:
|
73
|
+
rubygems_version: 3.1.4
|
74
|
+
signing_key:
|
75
75
|
specification_version: 4
|
76
76
|
summary: IBM Power HMC Ruby gem.
|
77
77
|
test_files: []
|