ibm_power_hmc 0.4.0 → 0.5.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
  SHA256:
3
- metadata.gz: c19305b95374164ab2a6e6168a4a292ea0666065cbcbe8f05dea30483b622055
4
- data.tar.gz: be50d67e7c462cc17f20be3f643c6029e4f2ba7d43f872f1821bbe428f0e11fe
3
+ metadata.gz: 2c866478ebd950e9570ce2983d62e90b15fdc27163ea77f3b3f5873138b57cf9
4
+ data.tar.gz: c58488b78a699e4d0f1fc48c43d41db03f9df7c20f861d29e37d80375e8068a2
5
5
  SHA512:
6
- metadata.gz: 1191f64dd2f5c550d25a372b4a0502dd4e7b5a8e779a2dacdf079a22f3a8b8092af6e4ddff514b0e06dddf8239985033034959e385f951f2f535f092866cbd12
7
- data.tar.gz: d6af992547d99624f59e6eb5ec3404768c91d1b9c9809e9542966fee15b4a350e8b8803e6fd25a597c48699b630171b7cae8327108f0ec6616e2329c5441bf1c
6
+ metadata.gz: 8201481418ec67876a0298d8785ca23a7f2e366a4765ddda8e98024fa71a97a79932661d920090b033da9958c3859460865bb56b7379058e02a9d4f688dab523
7
+ data.tar.gz: cfee7c90c9c22149358b17cf861df4d31d757dde93cf5a30c1196f7957fe48d28bb636643bfbed99238b18215d2048d61c85067b66c8d481bc7678d3fe5ab112
@@ -157,7 +157,6 @@ module IbmPowerHmc
157
157
  # @param new_name [String] The new name of the logical partition.
158
158
  def rename_lpar(lpar_uuid, new_name)
159
159
  method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}"
160
-
161
160
  modify_object(method_url) { |lpar| lpar.name = new_name }
162
161
  end
163
162
 
@@ -197,12 +196,58 @@ module IbmPowerHmc
197
196
  Parser.new(response.body).object(:VirtualIOServer)
198
197
  end
199
198
 
199
+ ##
200
+ # @!method virtual_switches(sys_uuid)
201
+ # Retrieve the list of virtual switches from a specified managed system.
202
+ # @param sys_uuid [String] The UUID of the managed system.
203
+ # @return [Array<IbmPowerHmc::VirtualSwitch>] The list of virtual switches.
204
+ def virtual_switches(sys_uuid)
205
+ method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/VirtualSwitch"
206
+ response = request(:get, method_url)
207
+ FeedParser.new(response.body).objects(:VirtualSwitch)
208
+ end
209
+
210
+ ##
211
+ # @!method virtual_switch(vswitch_uuid, sys_uuid)
212
+ # Retrieve information about a virtual switch.
213
+ # @param vswitch_uuid [String] The UUID of the virtual switch.
214
+ # @param sys_uuid [String] The UUID of the managed system.
215
+ # @return [IbmPowerHmc::VirtualSwitch] The virtual switch.
216
+ def virtual_switch(vswitch_uuid, sys_uuid)
217
+ method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/VirtualSwitch/#{vswitch_uuid}"
218
+ response = request(:get, method_url)
219
+ Parser.new(response.body).object(:VirtualSwitch)
220
+ end
221
+
222
+ ##
223
+ # @!method virtual_networks(sys_uuid)
224
+ # Retrieve the list of virtual networks from a specified managed system.
225
+ # @param sys_uuid [String] The UUID of the managed system.
226
+ # @return [Array<IbmPowerHmc::VirtualNetwork>] The list of virtual networks.
227
+ def virtual_networks(sys_uuid)
228
+ method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/VirtualNetwork"
229
+ response = request(:get, method_url)
230
+ FeedParser.new(response.body).objects(:VirtualNetwork)
231
+ end
232
+
233
+ ##
234
+ # @!method virtual_network(vnet_uuid, sys_uuid)
235
+ # Retrieve information about a virtual network.
236
+ # @param vnet_uuid [String] The UUID of the virtual network.
237
+ # @param sys_uuid [String] The UUID of the managed system.
238
+ # @return [IbmPowerHmc::VirtualNetwork] The virtual network.
239
+ def virtual_network(vnet_uuid, sys_uuid)
240
+ method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/VirtualNetwork/#{vnet_uuid}"
241
+ response = request(:get, method_url)
242
+ Parser.new(response.body).object(:VirtualNetwork)
243
+ end
244
+
200
245
  ##
201
246
  # @!method network_adapter_lpar(lpar_uuid, netadap_uuid = nil)
202
247
  # Retrieve one or all virtual ethernet network adapters attached to a logical partition.
203
248
  # @param lpar_uuid [String] UUID of the logical partition.
204
249
  # @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.
250
+ # @return [Array<IbmPowerHmc::ClientNetworkAdapter>, IbmPowerHmc::ClientNetworkAdapter] The list of network adapters.
206
251
  def network_adapter_lpar(lpar_uuid, netadap_uuid = nil)
207
252
  network_adapter("LogicalPartition", lpar_uuid, netadap_uuid)
208
253
  end
@@ -212,7 +257,7 @@ module IbmPowerHmc
212
257
  # Retrieve one or all virtual ethernet network adapters attached to a Virtual I/O Server.
213
258
  # @param vios_uuid [String] UUID of the Virtual I/O Server.
214
259
  # @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.
260
+ # @return [Array<IbmPowerHmc::ClientNetworkAdapter>, IbmPowerHmc::ClientNetworkAdapter] The list of network adapters.
216
261
  def network_adapter_vios(vios_uuid, netadap_uuid = nil)
217
262
  network_adapter("VirtualIOServer", vios_uuid, netadap_uuid)
218
263
  end
@@ -335,29 +380,6 @@ module IbmPowerHmc
335
380
  job
336
381
  end
337
382
 
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
-
361
383
  ##
362
384
  # @!method next_events(wait = true)
363
385
  # Retrieve a list of events that occured since last call.
@@ -479,21 +501,22 @@ module IbmPowerHmc
479
501
  end
480
502
 
481
503
  ##
482
- # @!method network_adapter_lpar(lpar_uuid, netadap_uuid = nil)
504
+ # @!method network_adapter(vm_type, lpar_uuid, netadap_uuid)
483
505
  # 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".
506
+ # @param vm_type [String] "LogicalPartition" or "VirtualIOServer".
485
507
  # @param lpar_uuid [String] UUID of the Logical Partition or the Virtual I/O Server.
486
508
  # @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.
509
+ # @return [Array<IbmPowerHmc::ClientNetworkAdapter>, IbmPowerHmc::ClientNetworkAdapter] The list of network adapters.
488
510
  def network_adapter(vm_type, lpar_uuid, netadap_uuid)
489
511
  if netadap_uuid.nil?
490
512
  method_url = "/rest/api/uom/#{vm_type}/#{lpar_uuid}/ClientNetworkAdapter"
513
+ response = request(:get, method_url)
514
+ FeedParser.new(response.body).objects(:ClientNetworkAdapter)
491
515
  else
492
516
  method_url = "/rest/api/uom/#{vm_type}/#{lpar_uuid}/ClientNetworkAdapter/#{netadap_uuid}"
517
+ response = request(:get, method_url)
518
+ Parser.new(response.body).object(:ClientNetworkAdapter)
493
519
  end
494
-
495
- response = request(:get, method_url)
496
- Parser.new(response.body).object(:ClientNetworkAdapter)
497
520
  end
498
521
  end
499
522
  end
@@ -78,39 +78,16 @@ module IbmPowerHmc
78
78
  private_constant :FeedParser
79
79
 
80
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
- #
81
+ # HMC generic K2 non-REST object.
93
82
  # @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
83
  # @attr_reader [REXML::Document] xml The XML document representing this object.
100
- class AbstractRest
84
+ class AbstractNonRest
101
85
  ATTRS = {}.freeze
102
- attr_reader :uuid, :href, :published, :etag, :content_type, :xml
86
+ attr_reader :xml
103
87
 
104
- def initialize(doc)
105
- @uuid = doc.elements["id"]&.text
106
- link = doc.elements["link[@rel='SELF']"]
107
- @href = URI(link.attributes["href"]) unless link.nil?
108
- @published = Time.xmlschema(doc.elements["published"]&.text)
109
- @etag = doc.elements["etag:etag"]&.text&.strip
110
- content = doc.elements["content"]
111
- @content_type = content.attributes["type"]
112
- @xml = content.elements.first
113
- define_attrs(self.class::ATTRS)
88
+ def initialize(xml)
89
+ @xml = xml
90
+ self.class::ATTRS.each { |varname, xpath| define_attr(varname, xpath) }
114
91
  end
115
92
 
116
93
  ##
@@ -123,17 +100,7 @@ module IbmPowerHmc
123
100
  self.class.__send__(:attr_reader, varname)
124
101
  instance_variable_set("@#{varname}", value)
125
102
  end
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.
132
- def define_attrs(hash)
133
- hash.each do |key, value|
134
- define_attr(key, value)
135
- end
136
- end
103
+ private :define_attr
137
104
 
138
105
  ##
139
106
  # @!method singleton(xpath, attr = nil)
@@ -154,6 +121,41 @@ module IbmPowerHmc
154
121
  end
155
122
  end
156
123
 
124
+ ##
125
+ # HMC generic K2 REST object.
126
+ # Encapsulate data for a single REST object.
127
+ # The XML looks like this:
128
+ # <entry>
129
+ # <id>uuid</id>
130
+ # <published>timestamp</published>
131
+ # <link rel="SELF" href="https://..."/>
132
+ # <etag:etag>ETag</etag:etag>
133
+ # <content type="type">
134
+ # <!-- actual content here -->
135
+ # </content>
136
+ # </entry>
137
+ #
138
+ # @abstract
139
+ # @attr_reader [String] uuid The UUID of the object contained in the entry.
140
+ # @attr_reader [Time] published The time at which the entry was published.
141
+ # @attr_reader [URI::HTTPS] href The URL of the object itself.
142
+ # @attr_reader [String] etag The entity tag of the entry.
143
+ # @attr_reader [String] content_type The content type of the object contained in the entry.
144
+ class AbstractRest < AbstractNonRest
145
+ attr_reader :uuid, :published, :href, :etag, :content_type
146
+
147
+ def initialize(entry)
148
+ @uuid = entry.elements["id"]&.text
149
+ @published = Time.xmlschema(entry.elements["published"]&.text)
150
+ link = entry.elements["link[@rel='SELF']"]
151
+ @href = URI(link.attributes["href"]) unless link.nil?
152
+ @etag = entry.elements["etag:etag"]&.text&.strip
153
+ content = entry.elements["content"]
154
+ @content_type = content.attributes["type"]
155
+ super(content.elements.first)
156
+ end
157
+ end
158
+
157
159
  # HMC information
158
160
  class ManagementConsole < AbstractRest
159
161
  ATTRS = {
@@ -211,7 +213,10 @@ module IbmPowerHmc
211
213
  :rmc_state => "ResourceMonitoringControlState",
212
214
  :rmc_ipaddr => "ResourceMonitoringIPAddress",
213
215
  :os => "OperatingSystemVersion",
214
- :ref_code => "ReferenceCode"
216
+ :ref_code => "ReferenceCode",
217
+ :procs => "PartitionProcessorConfiguration/CurrentDedicatedProcessorConfiguration/CurrentProcessors",
218
+ :proc_units => "PartitionProcessorConfiguration/CurrentSharedProcessorConfiguration/CurrentProcessingUnits",
219
+ :vprocs => "PartitionProcessorConfiguration/CurrentSharedProcessorConfiguration/AllocatedVirtualProcessors"
215
220
  }.freeze
216
221
 
217
222
  def sys_uuid
@@ -222,7 +227,7 @@ module IbmPowerHmc
222
227
  def net_adap_uuids
223
228
  xml.get_elements("ClientNetworkAdapters/link").map do |link|
224
229
  extract_uuid_from_href(link.attributes["href"])
225
- end
230
+ end.compact
226
231
  end
227
232
 
228
233
  def name=(name)
@@ -250,6 +255,66 @@ module IbmPowerHmc
250
255
  def sys_uuid
251
256
  href.path.split('/')[-3]
252
257
  end
258
+
259
+ def networks_uuids
260
+ xml.get_elements("VirtualNetworks/link").map do |link|
261
+ extract_uuid_from_href(link.attributes["href"])
262
+ end.compact
263
+ end
264
+ end
265
+
266
+ # Virtual Network information
267
+ class VirtualNetwork < AbstractRest
268
+ ATTRS = {
269
+ :name => "NetworkName",
270
+ :vlan_id => "NetworkVLANID",
271
+ :vswitch_id => "VswitchID",
272
+ :tagged => "TaggedNetwork"
273
+ }.freeze
274
+
275
+ def vswitch_uuid
276
+ href = singleton("AssociatedSwitch", "href")
277
+ extract_uuid_from_href(href)
278
+ end
279
+
280
+ def lpars_uuids
281
+ xml.get_elements("ConnectedPartitions/link").map do |link|
282
+ extract_uuid_from_href(link.attributes["href"])
283
+ end.compact
284
+ end
285
+ end
286
+
287
+ # Virtual I/O Adapter information
288
+ class VirtualIOAdapter < AbstractRest
289
+ ATTRS = {
290
+ :type => "AdapterType", # "Server", "Client", "Unknown"
291
+ :location => "LocationCode",
292
+ :slot => "VirtualSlotNumber",
293
+ :required => "RequiredAdapter"
294
+ }.freeze
295
+ end
296
+
297
+ # Virtual Ethernet Adapter information
298
+ class VirtualEthernetAdapter < VirtualIOAdapter
299
+ ATTRS = ATTRS.merge({
300
+ :macaddr => "MACAddress",
301
+ :vswitch_id => "VirtualSwitchID",
302
+ :vlan_id => "PortVLANID"
303
+ }.freeze)
304
+
305
+ def vswitch_uuid
306
+ href = singleton("AssociatedVirtualSwitch/link", "href")
307
+ extract_uuid_from_href(href)
308
+ end
309
+ end
310
+
311
+ # Client Network Adapter information
312
+ class ClientNetworkAdapter < VirtualEthernetAdapter
313
+ def networks_uuids
314
+ xml.get_elements("VirtualNetworks/link").map do |link|
315
+ extract_uuid_from_href(link.attributes["href"])
316
+ end.compact
317
+ end
253
318
  end
254
319
 
255
320
  # HMC Event
@@ -262,15 +327,6 @@ module IbmPowerHmc
262
327
  }.freeze
263
328
  end
264
329
 
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
-
274
330
  # Error response from HMC
275
331
  class HttpErrorResponse < AbstractRest
276
332
  ATTRS = {
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IbmPowerHmc
4
- VERSION = "0.4.0"
4
+ VERSION = "0.5.0"
5
5
  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.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - IBM Power
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-26 00:00:00.000000000 Z
11
+ date: 2021-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client