ibm_power_hmc 0.8.0 → 0.8.5
Sign up to get free protection for your applications and to get access to all the features.
- 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 +4 -0
- data/ibm_power_hmc.gemspec +2 -0
- data/lib/ibm_power_hmc/connection.rb +15 -3
- data/lib/ibm_power_hmc/job.rb +0 -0
- data/lib/ibm_power_hmc/parser.rb +102 -54
- data/lib/ibm_power_hmc/pcm.rb +0 -0
- data/lib/ibm_power_hmc/version.rb +1 -1
- data/lib/ibm_power_hmc.rb +0 -0
- metadata +21 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f3a1da6b15a6562c060f770de48558912255e5c842d11596a09490e2de98dd7
|
4
|
+
data.tar.gz: c38e2a93f8256de626de729ad0b6f044f0d9dca4d9f7c32c579de8129f857ab3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a975a0b0ff53dd9dbee3e6484b38b76199faaff9e6faba8051fe7dd99b28ac9bd47c1e12cfcf219d1d51ea96f5f1351e41c4116cee28570df4b5bebfaf8cea14
|
7
|
+
data.tar.gz: 12a5f47ceb5594e154f861f6d155be076588e4ea0bf03f8b98a57990ee0206dad283d427fedd4481d1a3920880aead0a26e48a8ac8146293fae30e0de4490ede
|
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
data/ibm_power_hmc.gemspec
CHANGED
@@ -196,6 +196,18 @@ module IbmPowerHmc
|
|
196
196
|
Parser.new(response.body).object(:VirtualIOServer)
|
197
197
|
end
|
198
198
|
|
199
|
+
##
|
200
|
+
# @!method groups
|
201
|
+
# Retrieve the list of groups defined on the HMC.
|
202
|
+
# A logical partition, a virtual I/O server or a managed system can be
|
203
|
+
# associated with multiple group tags.
|
204
|
+
# @return [Array<IbmPowerHmc::Group>] The list of groups.
|
205
|
+
def groups
|
206
|
+
method_url = "/rest/api/uom/Group"
|
207
|
+
response = request(:get, method_url)
|
208
|
+
FeedParser.new(response.body).objects(:Group)
|
209
|
+
end
|
210
|
+
|
199
211
|
##
|
200
212
|
# @!method virtual_switches(sys_uuid)
|
201
213
|
# Retrieve the list of virtual switches from a specified managed system.
|
@@ -560,8 +572,8 @@ module IbmPowerHmc
|
|
560
572
|
break if response.code != 204 || !wait
|
561
573
|
end
|
562
574
|
FeedParser.new(response.body).objects(:Event).map do |e|
|
563
|
-
data = e.data.split("/")
|
564
|
-
if data[-2].eql?("UserTask")
|
575
|
+
data = e.data.split("/") unless e.data.nil?
|
576
|
+
if !data.nil? && data.length >= 2 && data[-2].eql?("UserTask")
|
565
577
|
e.usertask = usertask(data.last)
|
566
578
|
end
|
567
579
|
e
|
@@ -580,7 +592,7 @@ module IbmPowerHmc
|
|
580
592
|
if j['status'].eql?("Completed")
|
581
593
|
case j['key']
|
582
594
|
when "TEMPLATE_PARTITION_SAVE", "TEMPLATE_PARTITION_SAVE_AS", "TEMPLATE_PARTITION_CAPTURE"
|
583
|
-
j['template_uuid'] = templates_summary.
|
595
|
+
j['template_uuid'] = templates_summary.find { |t| t.name.eql?(j['labelParams'].first) }&.uuid
|
584
596
|
end
|
585
597
|
end
|
586
598
|
j
|
data/lib/ibm_power_hmc/job.rb
CHANGED
File without changes
|
data/lib/ibm_power_hmc/parser.rb
CHANGED
@@ -74,9 +74,6 @@ module IbmPowerHmc
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
private_constant :Parser
|
78
|
-
private_constant :FeedParser
|
79
|
-
|
80
77
|
##
|
81
78
|
# HMC generic K2 non-REST object.
|
82
79
|
# @abstract
|
@@ -135,6 +132,15 @@ module IbmPowerHmc
|
|
135
132
|
uuid_from_href(link.attributes["href"], index)
|
136
133
|
end.compact
|
137
134
|
end
|
135
|
+
|
136
|
+
def collection_of(name, type)
|
137
|
+
objtype = Module.const_get("IbmPowerHmc::#{type}")
|
138
|
+
xml.get_elements("#{name}/#{type}").map do |elem|
|
139
|
+
objtype.new(elem)
|
140
|
+
end
|
141
|
+
rescue
|
142
|
+
[]
|
143
|
+
end
|
138
144
|
end
|
139
145
|
|
140
146
|
##
|
@@ -190,12 +196,20 @@ module IbmPowerHmc
|
|
190
196
|
ATTRS = {
|
191
197
|
:name => "ManagementConsoleName",
|
192
198
|
:build_level => "VersionInfo/BuildLevel",
|
193
|
-
:version => "BaseVersion"
|
199
|
+
:version => "BaseVersion",
|
200
|
+
:ssh_pubkey => "PublicSSHKeyValue",
|
201
|
+
:uvmid => "UVMID"
|
194
202
|
}.freeze
|
195
203
|
|
196
204
|
def managed_systems_uuids
|
197
205
|
uuids_from_links("ManagedSystems")
|
198
206
|
end
|
207
|
+
|
208
|
+
def ssh_authkeys
|
209
|
+
xml.get_elements("AuthorizedKeysValue/AuthorizedKey").map do |elem|
|
210
|
+
elem.text&.strip
|
211
|
+
end.compact
|
212
|
+
end
|
199
213
|
end
|
200
214
|
|
201
215
|
# Managed System information
|
@@ -205,6 +219,9 @@ module IbmPowerHmc
|
|
205
219
|
:state => "State",
|
206
220
|
:hostname => "Hostname",
|
207
221
|
:ipaddr => "PrimaryIPAddress",
|
222
|
+
:description => "Description",
|
223
|
+
:location => "SystemLocation", # Rack/Unit
|
224
|
+
:ref_code => "ReferenceCode",
|
208
225
|
:fwversion => "SystemFirmware",
|
209
226
|
:memory => "AssociatedSystemMemoryConfiguration/InstalledSystemMemory",
|
210
227
|
:avail_mem => "AssociatedSystemMemoryConfiguration/CurrentAvailableSystemMemory",
|
@@ -217,6 +234,20 @@ module IbmPowerHmc
|
|
217
234
|
:vtpm_lpars => "AssociatedSystemSecurity/AvailableVirtualTrustedPlatformModulePartitions"
|
218
235
|
}.freeze
|
219
236
|
|
237
|
+
def group_uuids
|
238
|
+
uuids_from_links("AssociatedGroups")
|
239
|
+
end
|
240
|
+
|
241
|
+
def time
|
242
|
+
Time.at(0, singleton("SystemTime").to_i, :millisecond).utc
|
243
|
+
end
|
244
|
+
|
245
|
+
def capabilities
|
246
|
+
xml.get_elements("AssociatedSystemCapabilities/*").map do |elem|
|
247
|
+
elem.name unless elem.text&.strip != "true"
|
248
|
+
end.compact
|
249
|
+
end
|
250
|
+
|
220
251
|
def cpu_compat_modes
|
221
252
|
xml.get_elements("AssociatedSystemProcessorConfiguration/SupportedPartitionProcessorCompatibilityModes").map do |elem|
|
222
253
|
elem.text&.strip
|
@@ -232,9 +263,7 @@ module IbmPowerHmc
|
|
232
263
|
end
|
233
264
|
|
234
265
|
def io_adapters
|
235
|
-
|
236
|
-
IOAdapter.new(elem)
|
237
|
-
end
|
266
|
+
collection_of("AssociatedSystemIOConfiguration/IOSlots/IOSlot/RelatedIOAdapter", "IOAdapter")
|
238
267
|
end
|
239
268
|
|
240
269
|
def vswitches_uuids
|
@@ -266,19 +295,25 @@ module IbmPowerHmc
|
|
266
295
|
:state => "PartitionState",
|
267
296
|
:type => "PartitionType",
|
268
297
|
:memory => "PartitionMemoryConfiguration/CurrentMemory",
|
269
|
-
:dedicated => "PartitionProcessorConfiguration/
|
298
|
+
:dedicated => "PartitionProcessorConfiguration/CurrentHasDedicatedProcessors",
|
299
|
+
:sharing_mode => "PartitionProcessorConfiguration/CurrentSharingMode",
|
270
300
|
:rmc_state => "ResourceMonitoringControlState",
|
271
301
|
:rmc_ipaddr => "ResourceMonitoringIPAddress",
|
272
302
|
:os => "OperatingSystemVersion",
|
273
303
|
:ref_code => "ReferenceCode",
|
274
304
|
:procs => "PartitionProcessorConfiguration/CurrentDedicatedProcessorConfiguration/CurrentProcessors",
|
275
305
|
:proc_units => "PartitionProcessorConfiguration/CurrentSharedProcessorConfiguration/CurrentProcessingUnits",
|
276
|
-
:vprocs => "PartitionProcessorConfiguration/CurrentSharedProcessorConfiguration/AllocatedVirtualProcessors"
|
306
|
+
:vprocs => "PartitionProcessorConfiguration/CurrentSharedProcessorConfiguration/AllocatedVirtualProcessors",
|
307
|
+
:description => "Description"
|
277
308
|
}.freeze
|
278
309
|
|
279
310
|
def sys_uuid
|
280
|
-
|
281
|
-
uuid_from_href(
|
311
|
+
href = singleton("AssociatedManagedSystem", "href")
|
312
|
+
uuid_from_href(href) unless href.nil?
|
313
|
+
end
|
314
|
+
|
315
|
+
def group_uuids
|
316
|
+
uuids_from_links("AssociatedGroups")
|
282
317
|
end
|
283
318
|
|
284
319
|
def net_adap_uuids
|
@@ -286,9 +321,7 @@ module IbmPowerHmc
|
|
286
321
|
end
|
287
322
|
|
288
323
|
def lhea_ports
|
289
|
-
|
290
|
-
HostEthernetAdapterLogicalPort.new(elem)
|
291
|
-
end
|
324
|
+
collection_of("HostEthernetAdapterLogicalPorts", "HostEthernetAdapterLogicalPort")
|
292
325
|
end
|
293
326
|
|
294
327
|
def sriov_elp_uuids
|
@@ -321,9 +354,7 @@ module IbmPowerHmc
|
|
321
354
|
# VIOS information
|
322
355
|
class VirtualIOServer < BasePartition
|
323
356
|
def pvs
|
324
|
-
|
325
|
-
PhysicalVolume.new(elem)
|
326
|
-
end
|
357
|
+
collection_of("PhysicalVolumes", "PhysicalVolume")
|
327
358
|
end
|
328
359
|
|
329
360
|
def rep
|
@@ -332,15 +363,32 @@ module IbmPowerHmc
|
|
332
363
|
end
|
333
364
|
|
334
365
|
def vscsi_mappings
|
335
|
-
|
336
|
-
VirtualSCSIMapping.new(elem)
|
337
|
-
end
|
366
|
+
collection_of("VirtualSCSIMappings", "VirtualSCSIMapping")
|
338
367
|
end
|
339
368
|
|
340
369
|
def vfc_mappings
|
341
|
-
|
342
|
-
|
343
|
-
|
370
|
+
collection_of("VirtualFibreChannelMappings", "VirtualFibreChannelMapping")
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
# Group information
|
375
|
+
class Group < AbstractRest
|
376
|
+
ATTRS = {
|
377
|
+
:name => "GroupName",
|
378
|
+
:description => "GroupDescription",
|
379
|
+
:color => "GroupColor"
|
380
|
+
}.freeze
|
381
|
+
|
382
|
+
def sys_uuids
|
383
|
+
uuids_from_links("AssociatedManagedSystems")
|
384
|
+
end
|
385
|
+
|
386
|
+
def lpar_uuids
|
387
|
+
uuids_from_links("AssociatedLogicalPartitions")
|
388
|
+
end
|
389
|
+
|
390
|
+
def vios_uuids
|
391
|
+
uuids_from_links("AssociatedVirtualIOServers")
|
344
392
|
end
|
345
393
|
end
|
346
394
|
|
@@ -390,9 +438,7 @@ module IbmPowerHmc
|
|
390
438
|
}.freeze
|
391
439
|
|
392
440
|
def vopts
|
393
|
-
|
394
|
-
VirtualOpticalMedia.new(elem)
|
395
|
-
end
|
441
|
+
collection_of("OpticalMedia", "VirtualOpticalMedia")
|
396
442
|
end
|
397
443
|
end
|
398
444
|
|
@@ -424,7 +470,7 @@ module IbmPowerHmc
|
|
424
470
|
|
425
471
|
def vswitch_uuid
|
426
472
|
href = singleton("AssociatedSwitch", "href")
|
427
|
-
uuid_from_href(href)
|
473
|
+
uuid_from_href(href) unless href.nil?
|
428
474
|
end
|
429
475
|
|
430
476
|
def lpars_uuids
|
@@ -465,6 +511,7 @@ module IbmPowerHmc
|
|
465
511
|
|
466
512
|
# LP-HEA information
|
467
513
|
class EthernetBackingDevice < IOAdapter; end
|
514
|
+
|
468
515
|
class HostEthernetAdapterLogicalPort < EthernetBackingDevice
|
469
516
|
ATTRS = ATTRS.merge({
|
470
517
|
:macaddr => "MACAddress",
|
@@ -511,7 +558,7 @@ module IbmPowerHmc
|
|
511
558
|
class VirtualSCSIMapping < AbstractNonRest
|
512
559
|
def lpar_uuid
|
513
560
|
href = singleton("AssociatedLogicalPartition", "href")
|
514
|
-
uuid_from_href(href)
|
561
|
+
uuid_from_href(href) unless href.nil?
|
515
562
|
end
|
516
563
|
|
517
564
|
def client
|
@@ -562,7 +609,7 @@ module IbmPowerHmc
|
|
562
609
|
|
563
610
|
def vios_uuid
|
564
611
|
href = singleton("ConnectingPartition", "href")
|
565
|
-
uuid_from_href(href)
|
612
|
+
uuid_from_href(href) unless href.nil?
|
566
613
|
end
|
567
614
|
end
|
568
615
|
|
@@ -606,7 +653,7 @@ module IbmPowerHmc
|
|
606
653
|
class VirtualFibreChannelMapping < AbstractNonRest
|
607
654
|
def lpar_uuid
|
608
655
|
href = singleton("AssociatedLogicalPartition", "href")
|
609
|
-
uuid_from_href(href)
|
656
|
+
uuid_from_href(href) unless href.nil?
|
610
657
|
end
|
611
658
|
|
612
659
|
def client
|
@@ -636,16 +683,14 @@ module IbmPowerHmc
|
|
636
683
|
|
637
684
|
def lpar_uuid
|
638
685
|
href = singleton("ConnectingPartition", "href")
|
639
|
-
uuid_from_href(href)
|
686
|
+
uuid_from_href(href) unless href.nil?
|
640
687
|
end
|
641
688
|
end
|
642
689
|
|
643
690
|
# VFC client information
|
644
691
|
class VirtualFibreChannelClientAdapter < VirtualFibreChannelAdapter
|
645
692
|
def nport_loggedin
|
646
|
-
|
647
|
-
VirtualFibreChannelNPortLoginStatus.new(elem)
|
648
|
-
end
|
693
|
+
collection_of("NportLoggedInStatus", "VirtualFibreChannelNPortLoginStatus")
|
649
694
|
end
|
650
695
|
|
651
696
|
def server
|
@@ -699,9 +744,7 @@ module IbmPowerHmc
|
|
699
744
|
}.freeze
|
700
745
|
|
701
746
|
def pvs
|
702
|
-
|
703
|
-
PhysicalVolume.new(elem)
|
704
|
-
end
|
747
|
+
collection_of("PhysicalVolumes", "PhysicalVolume")
|
705
748
|
end
|
706
749
|
end
|
707
750
|
|
@@ -713,15 +756,17 @@ module IbmPowerHmc
|
|
713
756
|
:tier_capable => "ClusterCapabilities/IsTierCapable"
|
714
757
|
}.freeze
|
715
758
|
|
759
|
+
def repopvs
|
760
|
+
collection_of("RepositoryDisk", "PhysicalVolume")
|
761
|
+
end
|
762
|
+
|
716
763
|
def ssp_uuid
|
717
764
|
href = singleton("ClusterSharedStoragePool", "href")
|
718
|
-
uuid_from_href(href)
|
765
|
+
uuid_from_href(href) unless href.nil?
|
719
766
|
end
|
720
767
|
|
721
768
|
def nodes
|
722
|
-
|
723
|
-
Node.new(elem)
|
724
|
-
end
|
769
|
+
collection_of("Node", "Node")
|
725
770
|
end
|
726
771
|
end
|
727
772
|
|
@@ -736,13 +781,14 @@ module IbmPowerHmc
|
|
736
781
|
|
737
782
|
def vios_uuid
|
738
783
|
href = singleton("VirtualIOServer", "href")
|
739
|
-
uuid_from_href(href)
|
784
|
+
uuid_from_href(href) unless href.nil?
|
740
785
|
end
|
741
786
|
end
|
742
787
|
|
743
788
|
# SSP information
|
744
789
|
class SharedStoragePool < AbstractRest
|
745
790
|
ATTRS = {
|
791
|
+
:id => "SharedStoragePoolID",
|
746
792
|
:name => "StoragePoolName",
|
747
793
|
:udid => "UniqueDeviceID",
|
748
794
|
:capacity => "Capacity",
|
@@ -754,13 +800,11 @@ module IbmPowerHmc
|
|
754
800
|
|
755
801
|
def cluster_uuid
|
756
802
|
href = singleton("AssociatedCluster", "href")
|
757
|
-
uuid_from_href(href)
|
803
|
+
uuid_from_href(href) unless href.nil?
|
758
804
|
end
|
759
805
|
|
760
806
|
def pvs
|
761
|
-
|
762
|
-
PhysicalVolume.new(elem)
|
763
|
-
end
|
807
|
+
collection_of("PhysicalVolumes", "PhysicalVolume")
|
764
808
|
end
|
765
809
|
|
766
810
|
def tiers_uuids
|
@@ -768,9 +812,7 @@ module IbmPowerHmc
|
|
768
812
|
end
|
769
813
|
|
770
814
|
def lus
|
771
|
-
|
772
|
-
LogicalUnit.new(elem)
|
773
|
-
end
|
815
|
+
collection_of("LogicalUnits", "LogicalUnit")
|
774
816
|
end
|
775
817
|
end
|
776
818
|
|
@@ -788,7 +830,7 @@ module IbmPowerHmc
|
|
788
830
|
|
789
831
|
def ssp_uuid
|
790
832
|
href = singleton("AssociatedSharedStoragePool", "href")
|
791
|
-
uuid_from_href(href)
|
833
|
+
uuid_from_href(href) unless href.nil?
|
792
834
|
end
|
793
835
|
|
794
836
|
def lus_uuids
|
@@ -816,16 +858,22 @@ module IbmPowerHmc
|
|
816
858
|
|
817
859
|
class PartitionTemplate < AbstractRest
|
818
860
|
ATTRS = {
|
819
|
-
:name
|
820
|
-
:description
|
821
|
-
:os
|
822
|
-
:memory
|
861
|
+
:name => "partitionTemplateName",
|
862
|
+
:description => "description",
|
863
|
+
:os => "logicalPartitionConfig/osVersion",
|
864
|
+
:memory => "logicalPartitionConfig/memoryConfiguration/currMemory",
|
865
|
+
:dedicated => "logicalPartitionConfig/processorConfiguration/hasDedicatedProcessors",
|
866
|
+
:sharing_mode => "logicalPartitionConfig/processorConfiguration/sharingMode",
|
867
|
+
:vprocs => "logicalPartitionConfig/processorConfiguration/sharedProcessorConfiguration/desiredVirtualProcessors",
|
868
|
+
:proc_units => "logicalPartitionConfig/processorConfiguration/sharedProcessorConfiguration/desiredProcessingUnits",
|
869
|
+
:procs => "logicalPartitionConfig/processorConfiguration/dedicatedProcessorConfiguration/desiredProcessors"
|
823
870
|
}.freeze
|
824
871
|
end
|
825
872
|
|
826
873
|
# HMC Event
|
827
874
|
class Event < AbstractRest
|
828
875
|
attr_accessor :usertask
|
876
|
+
|
829
877
|
ATTRS = {
|
830
878
|
:id => "EventID",
|
831
879
|
:type => "EventType",
|
data/lib/ibm_power_hmc/pcm.rb
CHANGED
File without changes
|
data/lib/ibm_power_hmc.rb
CHANGED
File without changes
|
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.8.
|
4
|
+
version: 0.8.5
|
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:
|
11
|
+
date: 2022-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -24,8 +24,22 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: manageiq-style
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
27
41
|
description: A Ruby gem for interacting with the IBM Hardware Management Console (HMC).
|
28
|
-
email:
|
42
|
+
email:
|
29
43
|
executables: []
|
30
44
|
extensions: []
|
31
45
|
extra_rdoc_files: []
|
@@ -55,7 +69,7 @@ metadata:
|
|
55
69
|
homepage_uri: http://github.com/IBM/ibm_power_hmc_sdk_ruby
|
56
70
|
source_code_uri: http://github.com/IBM/ibm_power_hmc_sdk_ruby
|
57
71
|
changelog_uri: http://github.com/IBM/ibm_power_hmc_sdk_ruby/blob/master/CHANGELOG.md
|
58
|
-
post_install_message:
|
72
|
+
post_install_message:
|
59
73
|
rdoc_options: []
|
60
74
|
require_paths:
|
61
75
|
- lib
|
@@ -70,8 +84,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
84
|
- !ruby/object:Gem::Version
|
71
85
|
version: '0'
|
72
86
|
requirements: []
|
73
|
-
rubygems_version: 3.1.
|
74
|
-
signing_key:
|
87
|
+
rubygems_version: 3.1.2
|
88
|
+
signing_key:
|
75
89
|
specification_version: 4
|
76
90
|
summary: IBM Power HMC Ruby gem.
|
77
91
|
test_files: []
|