ibm_power_hmc 0.19.0 → 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +8 -0
- data/lib/ibm_power_hmc/apis/connection.rb +1 -1
- data/lib/ibm_power_hmc/apis/uom.rb +66 -10
- data/lib/ibm_power_hmc/schema/uom.rb +43 -0
- data/lib/ibm_power_hmc/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49c35a3e54753bb8c31a1eafc7c6e98e0ad2a662d4d24c284e873ec3d30aa144
|
4
|
+
data.tar.gz: 8429c8a52729102cfcdd2294fc25a2a27dd3f01b0ba9f3f0e46ebbea931903ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b0cdb3f5348b221cd5fd147e63d391719b06324a49eec554fd1820d90f8000fb4000e005d5e638e6445be0608f7ea30a3a1db1d1345ac1cbf32526fd428f01f
|
7
|
+
data.tar.gz: 06d590cf0b6f2d92fbdd685d511ebd499597a285a248807cbe2814e5d569ad237753c7b2196c03b40d9f4be25d08071f990dc3d9d3fad0b20e4f5a8ef7a64438
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## v0.20.0
|
2
|
+
* Add permissive option (`ignoreError=true`) for cluster APIs
|
3
|
+
* Fix `modify_object` method when URI has a query part
|
4
|
+
* Add `chcomgmt` method
|
5
|
+
* Add `grow_lu` method
|
6
|
+
* Add `shared_memory_pool` method
|
7
|
+
* Improve schema definitions for CPU and memory
|
8
|
+
* Add schema definition for shared memory pool
|
1
9
|
## v0.19.0
|
2
10
|
* Major code refactoring
|
3
11
|
* Add `serviceable_events` method
|
data/README.md
CHANGED
@@ -70,6 +70,14 @@ Shutting down a logical partition:
|
|
70
70
|
hc.poweroff_lpar(lpar_uuid, { "operation" => "shutdown" })
|
71
71
|
```
|
72
72
|
|
73
|
+
Setting the memory of a logical partition to 32GB:
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
hc.modify_object do
|
77
|
+
hc.lpar(lpar_uuid).tap { |lpar| lpar.desired_memory = 32_768 }
|
78
|
+
end
|
79
|
+
```
|
80
|
+
|
73
81
|
Listing serviceable events:
|
74
82
|
|
75
83
|
```ruby
|
@@ -184,7 +184,7 @@ module IbmPowerHmc
|
|
184
184
|
# Use ETag to ensure object has not changed.
|
185
185
|
headers = headers.merge("If-Match" => obj.etag, :content_type => obj.content_type)
|
186
186
|
begin
|
187
|
-
request(:post, method_url.nil? ? obj.href.
|
187
|
+
request(:post, method_url.nil? ? obj.href.to_s : method_url, headers, obj.xml.to_s)
|
188
188
|
break
|
189
189
|
rescue HttpError => e
|
190
190
|
attempts -= 1
|
@@ -193,8 +193,8 @@ module IbmPowerHmc
|
|
193
193
|
method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/VirtualIOServer"
|
194
194
|
end
|
195
195
|
query = {}
|
196
|
-
query["ignoreError"] = "true" if permissive
|
197
196
|
query["group"] = group_name unless group_name.nil?
|
197
|
+
query["ignoreError"] = "true" if permissive
|
198
198
|
method_url += "?" + query.map { |h| h.join("=") }.join("&") unless query.empty?
|
199
199
|
|
200
200
|
response = request(:get, method_url)
|
@@ -413,11 +413,12 @@ module IbmPowerHmc
|
|
413
413
|
end
|
414
414
|
|
415
415
|
##
|
416
|
-
# @!method clusters
|
416
|
+
# @!method clusters(permissive = true)
|
417
417
|
# Retrieve the list of clusters managed by the HMC.
|
418
|
+
# @param permissive [Boolean] Ignore errors generated from bad clusters.
|
418
419
|
# @return [Array<IbmPowerHmc::Cluster>] The list of clusters.
|
419
|
-
def clusters
|
420
|
-
method_url = "/rest/api/uom/Cluster"
|
420
|
+
def clusters(permissive = true)
|
421
|
+
method_url = "/rest/api/uom/Cluster#{'?ignoreError=true' if permissive}"
|
421
422
|
response = request(:get, method_url)
|
422
423
|
FeedParser.new(response.body).objects(:Cluster)
|
423
424
|
end
|
@@ -434,11 +435,12 @@ module IbmPowerHmc
|
|
434
435
|
end
|
435
436
|
|
436
437
|
##
|
437
|
-
# @!method ssps
|
438
|
+
# @!method ssps(permissive = true)
|
438
439
|
# Retrieve the list of shared storage pools managed by the HMC.
|
440
|
+
# @param permissive [Boolean] Ignore errors generated from bad clusters.
|
439
441
|
# @return [Array<IbmPowerHmc::SharedStoragePool>] The list of shared storage pools.
|
440
|
-
def ssps
|
441
|
-
method_url = "/rest/api/uom/SharedStoragePool"
|
442
|
+
def ssps(permissive = true)
|
443
|
+
method_url = "/rest/api/uom/SharedStoragePool#{'?ignoreError=true' if permissive}"
|
442
444
|
response = request(:get, method_url)
|
443
445
|
FeedParser.new(response.body).objects(:SharedStoragePool)
|
444
446
|
end
|
@@ -455,13 +457,17 @@ module IbmPowerHmc
|
|
455
457
|
end
|
456
458
|
|
457
459
|
##
|
458
|
-
# @!method tiers(group_name = nil)
|
460
|
+
# @!method tiers(group_name = nil, permissive = true)
|
459
461
|
# Retrieve the list of tiers that are part of shared storage pools managed by the HMC.
|
460
462
|
# @param group_name [String] The extended group attributes.
|
463
|
+
# @param permissive [Boolean] Ignore errors generated from bad clusters.
|
461
464
|
# @return [Array<IbmPowerHmc::Tier>] The list of tiers.
|
462
|
-
def tiers(group_name = nil)
|
465
|
+
def tiers(group_name = nil, permissive = true)
|
463
466
|
method_url = "/rest/api/uom/Tier"
|
464
|
-
|
467
|
+
query = {}
|
468
|
+
query["group"] = group_name unless group_name.nil?
|
469
|
+
query["ignoreError"] = "true" if permissive
|
470
|
+
method_url += "?" + query.map { |h| h.join("=") }.join("&") unless query.empty?
|
465
471
|
response = request(:get, method_url)
|
466
472
|
FeedParser.new(response.body).objects(:Tier)
|
467
473
|
end
|
@@ -503,6 +509,24 @@ module IbmPowerHmc
|
|
503
509
|
end
|
504
510
|
end
|
505
511
|
|
512
|
+
##
|
513
|
+
# @!method shared_memory_pool(sys_uuid, pool_uuid = nil)
|
514
|
+
# Retrieve information about Shared Memory Pools.
|
515
|
+
# @param sys_uuid [String] The UUID of the managed system.
|
516
|
+
# @param pool_uuid [String] The UUID of the shared memory pool (return all pools if omitted)
|
517
|
+
# @return [Array<IbmPowerHmc::SharedMemoryPool>, IbmPowerHmc::SharedMemoryPool] The list of shared memory pools.
|
518
|
+
def shared_memory_pool(sys_uuid, pool_uuid = nil)
|
519
|
+
if pool_uuid.nil?
|
520
|
+
method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/SharedMemoryPool"
|
521
|
+
response = request(:get, method_url)
|
522
|
+
FeedParser.new(response.body).objects(:SharedMemoryPool)
|
523
|
+
else
|
524
|
+
method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/SharedMemoryPool/#{pool_uuid}"
|
525
|
+
response = request(:get, method_url)
|
526
|
+
Parser.new(response.body).object(:SharedMemoryPool)
|
527
|
+
end
|
528
|
+
end
|
529
|
+
|
506
530
|
##
|
507
531
|
# @!method poweron_lpar(lpar_uuid, params = {}, sync = true)
|
508
532
|
# Power on a logical partition.
|
@@ -602,6 +626,21 @@ module IbmPowerHmc
|
|
602
626
|
job
|
603
627
|
end
|
604
628
|
|
629
|
+
##
|
630
|
+
# @!method chcomgmt(sys_uuid, status)
|
631
|
+
# Change the co-management settings for a managed system.
|
632
|
+
# @param sys_uuid [String] The UUID of the managed system.
|
633
|
+
# @param status [String] The new co-management status ("rel", "norm", "keep").
|
634
|
+
# @return [IbmPowerHmc::HmcJob] The HMC job.
|
635
|
+
def chcomgmt(sys_uuid, status)
|
636
|
+
operation = status == "rel" ? "ReleaseController" : "RequestController"
|
637
|
+
method_url = "/rest/api/uom/ManagedSystem/#{sys_uuid}/do/#{operation}"
|
638
|
+
|
639
|
+
params = {}
|
640
|
+
params["coManagementControllerStatus"] = status unless status == "rel"
|
641
|
+
HmcJob.new(self, method_url, operation, "ManagedSystem", params).tap(&:run)
|
642
|
+
end
|
643
|
+
|
605
644
|
##
|
606
645
|
# @!method cli_run(hmc_uuid, cmd, sync = true)
|
607
646
|
# Run a CLI command on the HMC as a job.
|
@@ -621,6 +660,23 @@ module IbmPowerHmc
|
|
621
660
|
job
|
622
661
|
end
|
623
662
|
|
663
|
+
##
|
664
|
+
# @!method grow_lu(cl_uuid, lu_uuid, capacity)
|
665
|
+
# Increase the size of a logical unit in a cluster.
|
666
|
+
# @param cl_uuid [String] The UUID of the cluster.
|
667
|
+
# @param lu_uuid [String] The UUID of the logical unit.
|
668
|
+
# @param capacity [Float] The new logical unit size (in GB).
|
669
|
+
# @return [IbmPowerHmc::HmcJob] The HMC job.
|
670
|
+
def grow_lu(cl_uuid, lu_uuid, capacity)
|
671
|
+
method_url = "/rest/api/uom/Cluster/#{cl_uuid}/do/GrowLogicalUnit"
|
672
|
+
|
673
|
+
params = {
|
674
|
+
"LogicalUnitUDID" => lu_uuid,
|
675
|
+
"Capacity" => capacity
|
676
|
+
}
|
677
|
+
HmcJob.new(self, method_url, "GrowLogicalUnit", "Cluster", params).tap(&:run)
|
678
|
+
end
|
679
|
+
|
624
680
|
##
|
625
681
|
# @!method next_events(wait = true)
|
626
682
|
# Retrieve a list of events that occured since last call.
|
@@ -129,8 +129,13 @@ module IbmPowerHmc
|
|
129
129
|
:state => "PartitionState",
|
130
130
|
:type => "PartitionType",
|
131
131
|
:memory => "PartitionMemoryConfiguration/CurrentMemory",
|
132
|
+
:desired_memory => "PartitionMemoryConfiguration/DesiredMemory",
|
133
|
+
:min_memory => "PartitionMemoryConfiguration/MinimumMemory",
|
134
|
+
:max_memory => "PartitionMemoryConfiguration/MaximumMemory",
|
132
135
|
:dedicated => "PartitionProcessorConfiguration/CurrentHasDedicatedProcessors",
|
133
136
|
:sharing_mode => "PartitionProcessorConfiguration/CurrentSharingMode",
|
137
|
+
:uncapped_weight => "PartitionProcessorConfiguration/CurrentSharedProcessorConfiguration/CurrentUncappedWeight",
|
138
|
+
:desired_uncapped_weight => "PartitionProcessorConfiguration/SharedProcessorConfiguration/UncappedWeight",
|
134
139
|
:rmc_state => "ResourceMonitoringControlState",
|
135
140
|
:rmc_ipaddr => "ResourceMonitoringIPAddress",
|
136
141
|
:os => "OperatingSystemVersion",
|
@@ -138,6 +143,12 @@ module IbmPowerHmc
|
|
138
143
|
:procs => "PartitionProcessorConfiguration/CurrentDedicatedProcessorConfiguration/CurrentProcessors",
|
139
144
|
:proc_units => "PartitionProcessorConfiguration/CurrentSharedProcessorConfiguration/CurrentProcessingUnits",
|
140
145
|
:vprocs => "PartitionProcessorConfiguration/CurrentSharedProcessorConfiguration/AllocatedVirtualProcessors",
|
146
|
+
:desired_proc_units => "PartitionProcessorConfiguration/SharedProcessorConfiguration/DesiredProcessingUnits",
|
147
|
+
:desired_vprocs => "PartitionProcessorConfiguration/SharedProcessorConfiguration/DesiredVirtualProcessors",
|
148
|
+
:minimum_proc_units => "PartitionProcessorConfiguration/SharedProcessorConfiguration/MinimumProcessingUnits",
|
149
|
+
:minimum_vprocs => "PartitionProcessorConfiguration/SharedProcessorConfiguration/MinimumVirtualProcessors",
|
150
|
+
:maximum_proc_units => "PartitionProcessorConfiguration/SharedProcessorConfiguration/MaximumProcessingUnits",
|
151
|
+
:maximum_vprocs => "PartitionProcessorConfiguration/SharedProcessorConfiguration/MaximumVirtualProcessors",
|
141
152
|
:cpu_compat_mode => "CurrentProcessorCompatibilityMode",
|
142
153
|
:description => "Description"
|
143
154
|
}.freeze
|
@@ -795,6 +806,38 @@ module IbmPowerHmc
|
|
795
806
|
end
|
796
807
|
end
|
797
808
|
|
809
|
+
# Shared Memory Pool
|
810
|
+
class SharedMemoryPool < AbstractRest
|
811
|
+
ATTRS = {
|
812
|
+
:pool_mb => "CurrentPoolMemory",
|
813
|
+
:available_mb => "CurrentAvailablePoolMemory",
|
814
|
+
:max_mb => "CurrentMaximumPoolMemory",
|
815
|
+
:sys_mb =>"SystemFirmwarePoolMemory",
|
816
|
+
:pool_id => "PoolID",
|
817
|
+
:dedup => "MemoryDeduplicationEnabled"
|
818
|
+
}.freeze
|
819
|
+
|
820
|
+
def paging_vios_uuids
|
821
|
+
["PagingServicePartitionOne", "PagingServicePartitionTwo"].map do |attr|
|
822
|
+
if (vios_href = singleton(attr, "href"))
|
823
|
+
uuid_from_href(vios_href)
|
824
|
+
end
|
825
|
+
end
|
826
|
+
end
|
827
|
+
|
828
|
+
def lpar_uuids
|
829
|
+
REXML::XPath.match(xml, "PagingDevices/ReservedStorageDevice").map do |dev|
|
830
|
+
if (lpar = dev.elements["AssociatedLogicalPartition"])
|
831
|
+
uuid_from_href(lpar.attributes["href"])
|
832
|
+
end
|
833
|
+
end.compact
|
834
|
+
end
|
835
|
+
|
836
|
+
def sys_uuid
|
837
|
+
uuid_from_href(href, -3)
|
838
|
+
end
|
839
|
+
end
|
840
|
+
|
798
841
|
# HMC Event
|
799
842
|
class Event < AbstractRest
|
800
843
|
attr_accessor :usertask
|
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.20.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-10-
|
11
|
+
date: 2022-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|