ibm_power_hmc 0.5.0 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c866478ebd950e9570ce2983d62e90b15fdc27163ea77f3b3f5873138b57cf9
4
- data.tar.gz: c58488b78a699e4d0f1fc48c43d41db03f9df7c20f861d29e37d80375e8068a2
3
+ metadata.gz: 288ed57579492fd505491fe8e56f9dbd371cb6aaae118f98c14202fd20e8bf85
4
+ data.tar.gz: b21286ee62bfa69e14d609ad001b72f012ccbe3fdebc59f090320d03877e6d20
5
5
  SHA512:
6
- metadata.gz: 8201481418ec67876a0298d8785ca23a7f2e366a4765ddda8e98024fa71a97a79932661d920090b033da9958c3859460865bb56b7379058e02a9d4f688dab523
7
- data.tar.gz: cfee7c90c9c22149358b17cf861df4d31d757dde93cf5a30c1196f7957fe48d28bb636643bfbed99238b18215d2048d61c85067b66c8d481bc7678d3fe5ab112
6
+ metadata.gz: 7d5010709dd4a423ca131c99d3891ef78c4de8a479e87afe402eb554db660f03f2d85b24728d22773ff1681263f4346ff303e08078c4e9b91519e5ad6398a40a
7
+ data.tar.gz: fd6e00f6bb1039b0320d7fb7959f6a3a2206047fe6ebcb1cc795a6f0f37e92e8740cbe8d980d4fa496bfa6c00d3de6efeafba6f4136b7974630b5d187e4bbc7d
@@ -262,6 +262,44 @@ module IbmPowerHmc
262
262
  network_adapter("VirtualIOServer", vios_uuid, netadap_uuid)
263
263
  end
264
264
 
265
+ ##
266
+ # @!method sriov_elp_lpar(lpar_uuid, sriov_elp_uuid = nil)
267
+ # Retrieve one or all SR-IOV ethernet logical ports attached to a logical partition.
268
+ # @param lpar_uuid [String] UUID of the logical partition.
269
+ # @param netadap_uuid [String] UUID of the port to match (returns all ports if omitted).
270
+ # @return [Array<IbmPowerHmc::ClientNetworkAdapter>, IbmPowerHmc::ClientNetworkAdapter] The list of ports.
271
+ def sriov_elp_lpar(lpar_uuid, sriov_elp_uuid = nil)
272
+ sriov_ethernet_port("LogicalPartition", lpar_uuid, sriov_elp_uuid)
273
+ end
274
+
275
+ ##
276
+ # @!method network_adapter_vios(vios_uuid, netadap_uuid = nil)
277
+ # Retrieve one or all SR-IOV ethernet logical ports attached to a Virtual I/O Server.
278
+ # @param vios_uuid [String] UUID of the Virtual I/O Server.
279
+ # @param netadap_uuid [String] UUID of the port to match (returns all ports if omitted).
280
+ # @return [Array<IbmPowerHmc::ClientNetworkAdapter>, IbmPowerHmc::ClientNetworkAdapter] The list of ports.
281
+ def sriov_elp_vios(vios_uuid, sriov_elp_uuid = nil)
282
+ sriov_ethernet_port("VirtualIOServer", vios_uuid, sriov_elp_uuid)
283
+ end
284
+
285
+ ##
286
+ # @!method vnic_dedicated(lpar_uuid, vnic_uuid = nil)
287
+ # Retrieve one or all dedicated virtual network interface controller (vNIC) attached to a logical partition.
288
+ # @param lpar_uuid [String] UUID of the logical partition.
289
+ # @param netadap_uuid [String] UUID of the vNIC to match (returns all vNICs if omitted).
290
+ # @return [Array<IbmPowerHmc::ClientNetworkAdapter>, IbmPowerHmc::ClientNetworkAdapter] The list of vNICs.
291
+ def vnic_dedicated(lpar_uuid, vnic_uuid = nil)
292
+ if vnic_uuid.nil?
293
+ method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}/VirtualNICDedicated"
294
+ response = request(:get, method_url)
295
+ FeedParser.new(response.body).objects(:VirtualNICDedicated)
296
+ else
297
+ method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}/VirtualNICDedicated/#{vnic_uuid}"
298
+ response = request(:get, method_url)
299
+ Parser.new(response.body).object(:VirtualNICDedicated)
300
+ end
301
+ end
302
+
265
303
  ##
266
304
  # @!method poweron_lpar(lpar_uuid, params = {}, sync = true)
267
305
  # Power on a logical partition.
@@ -518,5 +556,24 @@ module IbmPowerHmc
518
556
  Parser.new(response.body).object(:ClientNetworkAdapter)
519
557
  end
520
558
  end
559
+
560
+ ##
561
+ # @!method sriov_ethernet_port(vm_type, lpar_uuid, sriov_elp_uuid)
562
+ # Retrieve one or all SR-IOV Ethernet loical ports attached to a Logical Partition or a Virtual I/O Server.
563
+ # @param vm_type [String] "LogicalPartition" or "VirtualIOServer".
564
+ # @param lpar_uuid [String] UUID of the Logical Partition or the Virtual I/O Server.
565
+ # @param netadap_uuid [String] UUID of the port to match (returns all ports if nil).
566
+ # @return [Array<IbmPowerHmc::ClientNetworkAdapter>, IbmPowerHmc::ClientNetworkAdapter] The list of ports.
567
+ def sriov_ethernet_port(vm_type, lpar_uuid, sriov_elp_uuid)
568
+ if sriov_elp_uuid.nil?
569
+ method_url = "/rest/api/uom/#{vm_type}/#{lpar_uuid}/SRIOVEthernetLogicalPort"
570
+ response = request(:get, method_url)
571
+ FeedParser.new(response.body).objects(:SRIOVEthernetLogicalPort)
572
+ else
573
+ method_url = "/rest/api/uom/#{vm_type}/#{lpar_uuid}/SRIOVEthernetLogicalPort/#{sriov_elp_uuid}"
574
+ response = request(:get, method_url)
575
+ Parser.new(response.body).object(:SRIOVEthernetLogicalPort)
576
+ end
577
+ end
521
578
  end
522
579
  end
@@ -116,8 +116,14 @@ module IbmPowerHmc
116
116
  attr.nil? ? elem.text&.strip : elem.attributes[attr]
117
117
  end
118
118
 
119
- def extract_uuid_from_href(href)
120
- URI(href).path.split('/').last
119
+ def extract_uuid_from_href(href, index = -1)
120
+ URI(href).path.split('/')[index]
121
+ end
122
+
123
+ def uuids_from_links(elem, index = -1)
124
+ xml.get_elements("#{elem}/link[@href]").map do |link|
125
+ extract_uuid_from_href(link.attributes["href"], index)
126
+ end.compact
121
127
  end
122
128
  end
123
129
 
@@ -165,9 +171,7 @@ module IbmPowerHmc
165
171
  }.freeze
166
172
 
167
173
  def managed_systems_uuids
168
- xml.get_elements("ManagedSystems/link").map do |link|
169
- extract_uuid_from_href(link.attributes["href"])
170
- end.compact
174
+ uuids_from_links("ManagedSystems")
171
175
  end
172
176
  end
173
177
 
@@ -189,15 +193,19 @@ module IbmPowerHmc
189
193
  }.freeze
190
194
 
191
195
  def lpars_uuids
192
- xml.get_elements("AssociatedLogicalPartitions/link").map do |link|
193
- extract_uuid_from_href(link.attributes["href"])
194
- end.compact
196
+ uuids_from_links("AssociatedLogicalPartitions")
195
197
  end
196
198
 
197
199
  def vioses_uuids
198
- xml.get_elements("AssociatedVirtualIOServers/link").map do |link|
199
- extract_uuid_from_href(link.attributes["href"])
200
- end.compact
200
+ uuids_from_links("AssociatedVirtualIOServers")
201
+ end
202
+
203
+ def vswitches_uuids
204
+ uuids_from_links("AssociatedSystemIOConfiguration/AssociatedSystemVirtualNetwork/VirtualSwitches")
205
+ end
206
+
207
+ def networks_uuids
208
+ uuids_from_links("AssociatedSystemIOConfiguration/AssociatedSystemVirtualNetwork/VirtualNetworks")
201
209
  end
202
210
  end
203
211
 
@@ -225,9 +233,11 @@ module IbmPowerHmc
225
233
  end
226
234
 
227
235
  def net_adap_uuids
228
- xml.get_elements("ClientNetworkAdapters/link").map do |link|
229
- extract_uuid_from_href(link.attributes["href"])
230
- end.compact
236
+ uuids_from_links("ClientNetworkAdapters")
237
+ end
238
+
239
+ def sriov_elp_uuids
240
+ uuids_from_links("SRIOVEthernetLogicalPorts")
231
241
  end
232
242
 
233
243
  def name=(name)
@@ -238,6 +248,9 @@ module IbmPowerHmc
238
248
 
239
249
  # Logical Partition information
240
250
  class LogicalPartition < BasePartition
251
+ def vnic_dedicated_uuids
252
+ uuids_from_links("DedicatedVirtualNICs")
253
+ end
241
254
  end
242
255
 
243
256
  # VIOS information
@@ -257,9 +270,7 @@ module IbmPowerHmc
257
270
  end
258
271
 
259
272
  def networks_uuids
260
- xml.get_elements("VirtualNetworks/link").map do |link|
261
- extract_uuid_from_href(link.attributes["href"])
262
- end.compact
273
+ uuids_from_links("VirtualNetworks")
263
274
  end
264
275
  end
265
276
 
@@ -278,9 +289,7 @@ module IbmPowerHmc
278
289
  end
279
290
 
280
291
  def lpars_uuids
281
- xml.get_elements("ConnectedPartitions/link").map do |link|
282
- extract_uuid_from_href(link.attributes["href"])
283
- end.compact
292
+ uuids_from_links("ConnectedPartitions")
284
293
  end
285
294
  end
286
295
 
@@ -299,24 +308,37 @@ module IbmPowerHmc
299
308
  ATTRS = ATTRS.merge({
300
309
  :macaddr => "MACAddress",
301
310
  :vswitch_id => "VirtualSwitchID",
302
- :vlan_id => "PortVLANID"
311
+ :vlan_id => "PortVLANID",
312
+ :location => "LocationCode"
303
313
  }.freeze)
304
314
 
305
315
  def vswitch_uuid
306
- href = singleton("AssociatedVirtualSwitch/link", "href")
307
- extract_uuid_from_href(href)
316
+ uuids_from_links("AssociatedVirtualSwitch").first
308
317
  end
309
318
  end
310
319
 
311
320
  # Client Network Adapter information
312
321
  class ClientNetworkAdapter < VirtualEthernetAdapter
313
322
  def networks_uuids
314
- xml.get_elements("VirtualNetworks/link").map do |link|
315
- extract_uuid_from_href(link.attributes["href"])
316
- end.compact
323
+ uuids_from_links("VirtualNetworks")
317
324
  end
318
325
  end
319
326
 
327
+ class SRIOVEthernetLogicalPort < AbstractRest
328
+ ATTRS = {
329
+ :macaddr => "MACAddress",
330
+ :location => "LocationCode"
331
+ }.freeze
332
+ end
333
+
334
+ class VirtualNICDedicated < AbstractRest
335
+ ATTRS = {
336
+ :macaddr => "Details/MACAddress",
337
+ :slot => "VirtualSlotNumber",
338
+ :location => "DynamicReconfigurationConnectorName"
339
+ }.freeze
340
+ end
341
+
320
342
  # HMC Event
321
343
  class Event < AbstractRest
322
344
  ATTRS = {
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IbmPowerHmc
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.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.5.0
4
+ version: 0.6.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-11-08 00:00:00.000000000 Z
11
+ date: 2021-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client