ibm_power_hmc 0.12.2 → 0.14.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: af80f7c29ca2a209985e3b7f62604fc9ba962f2b0c2da10041fad1eb881f7d32
4
- data.tar.gz: 006f79fee2ae35c82ba612639662e85ed743753f74142b1054d7166a71e877f9
3
+ metadata.gz: 3162f83d1c3168407716f683401e5f3f1b3c49489728561e52ab49410209beaa
4
+ data.tar.gz: c50f1ac36cda911c01262b06762fd928c06790d4df116f020958edd10ca0713e
5
5
  SHA512:
6
- metadata.gz: 0ae3f9052998b99880aa096c0cdd13fca6c8112b6c80b93b51b64f2c9f22e07070b2cf100c61a06011086bd0a459f9ec843103c6c8568c02083dd18fbfd5ebd8
7
- data.tar.gz: a9ca88412d5554c3d3d5376c72447b90da0f940553fa83d4f5396a402413af3a411b0f51a105418c77a886260d16aff954029bd73e13ff5c2ce56cfa0e30375e
6
+ metadata.gz: 014ff944d75d5dccf07d894628a0b41c08fe99d3478558f57b22aff2a1e86cc9589368c3a55696dc0f196edabd59f0d9e47b0f2aa09f726b7d6b18c5d250e775
7
+ data.tar.gz: 68a388e0a6a75c9cc61e9befeca8644fa64f92e95ca8411948fe166ba81c44997bd67c0247d943567fb0f345671bb9164dbc77294bdeb153f534b394c4637334
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'erb'
4
+
3
5
  # Module for IBM HMC Rest API Client
4
6
  module IbmPowerHmc
5
7
  class Error < StandardError; end
@@ -77,13 +79,13 @@ module IbmPowerHmc
77
79
  end
78
80
 
79
81
  ##
80
- # @!method managed_systems(search = {})
82
+ # @!method managed_systems(search = nil)
81
83
  # Retrieve the list of systems managed by the HMC.
82
- # @param search [Hash] The optional property name and value to match.
84
+ # @param search [String] The optional search criteria.
83
85
  # @return [Array<IbmPowerHmc::ManagedSystem>] The list of managed systems.
84
- def managed_systems(search = {})
86
+ def managed_systems(search = nil)
85
87
  method_url = "/rest/api/uom/ManagedSystem"
86
- search.each { |key, value| method_url += "/search/(#{key}==#{value})" }
88
+ method_url += "/search/(#{ERB::Util.url_encode(search)})" unless search.nil?
87
89
  response = request(:get, method_url)
88
90
  FeedParser.new(response.body).objects(:ManagedSystem)
89
91
  end
@@ -103,15 +105,15 @@ module IbmPowerHmc
103
105
  end
104
106
 
105
107
  ##
106
- # @!method lpars(sys_uuid = nil, search = {})
108
+ # @!method lpars(sys_uuid = nil, search = nil)
107
109
  # Retrieve the list of logical partitions managed by the HMC.
108
110
  # @param sys_uuid [String] The UUID of the managed system.
109
- # @param search [Hash] The optional property name and value to match.
111
+ # @param search [String] The optional search criteria.
110
112
  # @return [Array<IbmPowerHmc::LogicalPartition>] The list of logical partitions.
111
- def lpars(sys_uuid = nil, search = {})
113
+ def lpars(sys_uuid = nil, search = nil)
112
114
  if sys_uuid.nil?
113
115
  method_url = "/rest/api/uom/LogicalPartition"
114
- search.each { |key, value| method_url += "/search/(#{key}==#{value})" }
116
+ method_url += "/search/(#{ERB::Util.url_encode(search)})" unless search.nil?
115
117
  else
116
118
  method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/LogicalPartition"
117
119
  end
@@ -162,20 +164,57 @@ module IbmPowerHmc
162
164
  end
163
165
 
164
166
  ##
165
- # @!method vioses(sys_uuid = nil, search = {}, permissive = true)
167
+ # @!method lpar_migrate_validate(lpar_uuid, target_sys_name, sync = true)
168
+ # Validate if a logical partition can be migrated to another managed system.
169
+ # @raise [IbmPowerHmc::JobFailed] if validation fails
170
+ # @param lpar_uuid [String] The UUID of the logical partition to migrate.
171
+ # @param target_sys_name [String] The managed system to migrate partition to.
172
+ # @param sync [Boolean] Start the job and wait for its completion.
173
+ def lpar_migrate_validate(lpar_uuid, target_sys_name, sync = true)
174
+ # Need to include session token in payload so make sure we are logged in
175
+ logon if @api_session_token.nil?
176
+ method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}/do/MigrateValidate"
177
+ params = {
178
+ "TargetManagedSystemName" => target_sys_name
179
+ }
180
+ HmcJob.new(self, method_url, "MigrateValidate", "LogicalPartition", params).tap do |job|
181
+ job.run if sync
182
+ end
183
+ end
184
+
185
+ ##
186
+ # @!method lpar_migrate(lpar_uuid, target_sys_name, sync = true)
187
+ # Migrate a logical partition to another managed system.
188
+ # @param lpar_uuid [String] The UUID of the logical partition to migrate.
189
+ # @param target_sys_name [String] The managed system to migrate partition to.
190
+ # @param sync [Boolean] Start the job and wait for its completion.
191
+ def lpar_migrate(lpar_uuid, target_sys_name, sync = true)
192
+ # Need to include session token in payload so make sure we are logged in
193
+ logon if @api_session_token.nil?
194
+ method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}/do/Migrate"
195
+ params = {
196
+ "TargetManagedSystemName" => target_sys_name
197
+ }
198
+ HmcJob.new(self, method_url, "Migrate", "LogicalPartition", params).tap do |job|
199
+ job.run if sync
200
+ end
201
+ end
202
+
203
+ ##
204
+ # @!method vioses(sys_uuid = nil, search = nil, permissive = true)
166
205
  # Retrieve the list of virtual I/O servers managed by the HMC.
167
206
  # @param sys_uuid [String] The UUID of the managed system.
168
- # @param search [Hash] The optional property name and value to match.
207
+ # @param search [String] The optional search criteria.
169
208
  # @param permissive [Boolean] Skip virtual I/O servers that have error conditions.
170
209
  # @return [Array<IbmPowerHmc::VirtualIOServer>] The list of virtual I/O servers.
171
- def vioses(sys_uuid = nil, search = {}, permissive = true)
210
+ def vioses(sys_uuid = nil, search = nil, permissive = true)
172
211
  if sys_uuid.nil?
173
212
  method_url = "/rest/api/uom/VirtualIOServer"
174
- search.each { |key, value| method_url += "/search/(#{key}==#{value})" }
175
- method_url += "?ignoreError=true" if permissive
213
+ method_url += "/search/(#{ERB::Util.url_encode(search)})" unless search.nil?
176
214
  else
177
215
  method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/VirtualIOServer"
178
216
  end
217
+ method_url += "?ignoreError=true" if permissive
179
218
  response = request(:get, method_url)
180
219
  FeedParser.new(response.body).objects(:VirtualIOServer)
181
220
  end
@@ -315,6 +354,42 @@ module IbmPowerHmc
315
354
  end
316
355
  end
317
356
 
357
+ ##
358
+ # @!method vscsi_client_adapter(lpar_uuid, adap_uuid = nil)
359
+ # Retrieve one or all virtual SCSI storage client adapters attached to a logical partition.
360
+ # @param lpar_uuid [String] UUID of the logical partition.
361
+ # @param adap_uuid [String] UUID of the adapter to match (returns all adapters if omitted).
362
+ # @return [Array<IbmPowerHmc::VirtualSCSIClientAdapter>, IbmPowerHmc::VirtualSCSIClientAdapter] The list of storage adapters.
363
+ def vscsi_client_adapter(lpar_uuid, adap_uuid = nil)
364
+ if adap_uuid.nil?
365
+ method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}/VirtualSCSIClientAdapter"
366
+ response = request(:get, method_url)
367
+ FeedParser.new(response.body).objects(:VirtualSCSIClientAdapter)
368
+ else
369
+ method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}/VirtualSCSIClientAdapter/#{adap_uuid}"
370
+ response = request(:get, method_url)
371
+ Parser.new(response.body).object(:VirtualSCSIClientAdapter)
372
+ end
373
+ end
374
+
375
+ ##
376
+ # @!method vfc_client_adapter(lpar_uuid, adap_uuid = nil)
377
+ # Retrieve one or all virtual Fibre Channel storage client adapters attached to a logical partition.
378
+ # @param lpar_uuid [String] UUID of the logical partition.
379
+ # @param adap_uuid [String] UUID of the adapter to match (returns all adapters if omitted).
380
+ # @return [Array<IbmPowerHmc::VirtualFibreChannelClientAdapter>, IbmPowerHmc::VirtualFibreChannelClientAdapter] The list of storage adapters.
381
+ def vfc_client_adapter(lpar_uuid, adap_uuid = nil)
382
+ if adap_uuid.nil?
383
+ method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}/VirtualFibreChannelClientAdapter"
384
+ response = request(:get, method_url)
385
+ FeedParser.new(response.body).objects(:VirtualFibreChannelClientAdapter)
386
+ else
387
+ method_url = "/rest/api/uom/LogicalPartition/#{lpar_uuid}/VirtualFibreChannelClientAdapter/#{adap_uuid}"
388
+ response = request(:get, method_url)
389
+ Parser.new(response.body).object(:VirtualFibreChannelClientAdapter)
390
+ end
391
+ end
392
+
318
393
  ##
319
394
  # @!method clusters
320
395
  # Retrieve the list of clusters managed by the HMC.
@@ -388,6 +463,24 @@ module IbmPowerHmc
388
463
  Parser.new(response.body).object(:Tier)
389
464
  end
390
465
 
466
+ ##
467
+ # @!method shared_processor_pool(sys_uuid, pool_uuid = nil)
468
+ # Retrieve information about Shared Processor Pools.
469
+ # @param sys_uuid [String] The UUID of the managed system.
470
+ # @param pool_uuid [String] The UUID of the shared storage pool (return all pools if omitted)
471
+ # @return [Array<IbmPowerHmc::SharedProcessorPool>, IbmPowerHmc::SharedProcessorPool] The list of shared processor pools.
472
+ def shared_processor_pool(sys_uuid, pool_uuid = nil)
473
+ if pool_uuid.nil?
474
+ method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/SharedProcessorPool"
475
+ response = request(:get, method_url)
476
+ FeedParser.new(response.body).objects(:SharedProcessorPool)
477
+ else
478
+ method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/SharedProcessorPool/#{pool_uuid}"
479
+ response = request(:get, method_url)
480
+ Parser.new(response.body).object(:SharedProcessorPool)
481
+ end
482
+ end
483
+
391
484
  ##
392
485
  # @!method templates_summary(draft = false)
393
486
  # Retrieve the list of partition template summaries.
@@ -262,7 +262,9 @@ module IbmPowerHmc
262
262
  :model => "MachineTypeModelAndSerialNumber/Model",
263
263
  :serial => "MachineTypeModelAndSerialNumber/SerialNumber",
264
264
  :vtpm_version => "AssociatedSystemSecurity/VirtualTrustedPlatformModuleVersion",
265
- :vtpm_lpars => "AssociatedSystemSecurity/AvailableVirtualTrustedPlatformModulePartitions"
265
+ :vtpm_lpars => "AssociatedSystemSecurity/AvailableVirtualTrustedPlatformModulePartitions",
266
+ :is_classic_hmc_mgmt => "IsClassicHMCManagement",
267
+ :is_hmc_mgmt_master => "IsHMCPowerVMManagementMaster"
266
268
  }.freeze
267
269
 
268
270
  def group_uuids
@@ -517,7 +519,9 @@ module IbmPowerHmc
517
519
  :type => "AdapterType", # "Server", "Client", "Unknown"
518
520
  :location => "LocationCode",
519
521
  :slot => "VirtualSlotNumber",
520
- :required => "RequiredAdapter"
522
+ :required => "RequiredAdapter",
523
+ :lpar_id => "LocalPartitionID",
524
+ :dr_name => "DynamicReconfigurationConnectorName"
521
525
  }.freeze
522
526
  end
523
527
 
@@ -896,6 +900,22 @@ module IbmPowerHmc
896
900
  }.freeze
897
901
  end
898
902
 
903
+ # Shared Processor Pool
904
+ class SharedProcessorPool < AbstractRest
905
+ ATTRS = {
906
+ :name => "PoolName",
907
+ :available => "AvailableProcUnits",
908
+ :max => "MaximumProcessingUnits",
909
+ :reserved => "CurrentReservedProcessingUnits",
910
+ :pending_reserved => "PendingReservedProcessingUnits",
911
+ :pool_id => "PoolID"
912
+ }.freeze
913
+
914
+ def lpar_uuids
915
+ uuids_from_links("AssignedPartitions")
916
+ end
917
+ end
918
+
899
919
  class PartitionTemplateSummary < AbstractRest
900
920
  ATTRS = {
901
921
  :name => "partitionTemplateName"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IbmPowerHmc
4
- VERSION = "0.12.2"
4
+ VERSION = "0.14.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.12.2
4
+ version: 0.14.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: 2022-09-20 00:00:00.000000000 Z
11
+ date: 2022-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client