ilo-sdk 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +24 -0
- data/.rubocop.yml +57 -0
- data/.travis.yml +7 -0
- data/CHANGELOG.md +1 -0
- data/Gemfile +2 -0
- data/LICENSE +201 -0
- data/README.md +346 -0
- data/Rakefile +23 -0
- data/ilo-sdk.gemspec +29 -0
- data/lib/ilo-sdk.rb +15 -0
- data/lib/ilo-sdk/client.rb +65 -0
- data/lib/ilo-sdk/helpers/account_service_helper.rb +70 -0
- data/lib/ilo-sdk/helpers/bios_helper.rb +146 -0
- data/lib/ilo-sdk/helpers/boot_settings_helper.rb +74 -0
- data/lib/ilo-sdk/helpers/chassis_helper.rb +67 -0
- data/lib/ilo-sdk/helpers/computer_details_helper.rb +158 -0
- data/lib/ilo-sdk/helpers/computer_system_helper.rb +51 -0
- data/lib/ilo-sdk/helpers/date_time_helper.rb +72 -0
- data/lib/ilo-sdk/helpers/firmware_update.rb +32 -0
- data/lib/ilo-sdk/helpers/log_entry_helper.rb +53 -0
- data/lib/ilo-sdk/helpers/manager_network_protocol_helper.rb +32 -0
- data/lib/ilo-sdk/helpers/power_helper.rb +42 -0
- data/lib/ilo-sdk/helpers/secure_boot_helper.rb +32 -0
- data/lib/ilo-sdk/helpers/service_root_helper.rb +48 -0
- data/lib/ilo-sdk/helpers/snmp_service_helper.rb +41 -0
- data/lib/ilo-sdk/helpers/virtual_media_helper.rb +66 -0
- data/lib/ilo-sdk/rest.rb +165 -0
- data/lib/ilo-sdk/version.rb +13 -0
- metadata +162 -0
@@ -0,0 +1,158 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
4
|
+
#
|
5
|
+
# Unless required by applicable law or agreed to in writing,
|
6
|
+
# software distributed under the License is distributed on an "AS IS" BASIS,
|
7
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
8
|
+
# See the License for the specific language governing permissions and limitations under the License.
|
9
|
+
|
10
|
+
module ILO_SDK
|
11
|
+
# Contains helper methods for computer details actions
|
12
|
+
module ComputerDetailsHelper
|
13
|
+
# Get all of the computer details
|
14
|
+
# @raise [RuntimeError] if the request failed
|
15
|
+
# @return [Hash] computer_details
|
16
|
+
def get_computer_details
|
17
|
+
general_computer_details = get_general_computer_details
|
18
|
+
computer_network_details = get_computer_network_details
|
19
|
+
array_controller_details = get_array_controller_details
|
20
|
+
general_computer_details.merge(computer_network_details).merge(array_controller_details)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Get the general computer details
|
24
|
+
# @raise [RuntimeError] if the request failed
|
25
|
+
# @return [Fixnum] general_computer_details
|
26
|
+
def get_general_computer_details
|
27
|
+
response = rest_get('/redfish/v1/Systems/1/')
|
28
|
+
details = response_handler(response)
|
29
|
+
{
|
30
|
+
'GeneralDetails' => {
|
31
|
+
'manufacturer' => details['Manufacturer'],
|
32
|
+
'model' => details['Model'],
|
33
|
+
'AssetTag' => details['AssetTag'],
|
34
|
+
'bios_version' => details['Bios']['Current']['VersionString'],
|
35
|
+
'memory' => details['Memory']['TotalSystemMemoryGB'].to_s + ' GB',
|
36
|
+
'processors' => details['Processors']['Count'].to_s + ' x ' + details['Processors']['ProcessorFamily'].to_s
|
37
|
+
}
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
# Get the computer network details
|
42
|
+
# @raise [RuntimeError] if the request failed
|
43
|
+
# @return [Hash] computer_network_details
|
44
|
+
def get_computer_network_details
|
45
|
+
network_adapters = []
|
46
|
+
response = rest_get('/redfish/v1/Systems/1/NetworkAdapters/')
|
47
|
+
networks = response_handler(response)['links']['Member']
|
48
|
+
networks.each do |network|
|
49
|
+
response = rest_get(network['href'])
|
50
|
+
detail = response_handler(response)
|
51
|
+
physical_ports = []
|
52
|
+
detail['PhysicalPorts'].each do |port|
|
53
|
+
n = {
|
54
|
+
'Name' => port['Name'],
|
55
|
+
'StructuredName' => port['Oem']['Hp']['StructuredName'],
|
56
|
+
'MacAddress' => port['MacAddress'],
|
57
|
+
'State' => port['Status']['State']
|
58
|
+
}
|
59
|
+
physical_ports.push(n)
|
60
|
+
end
|
61
|
+
nets = {
|
62
|
+
'Name' => detail['Name'],
|
63
|
+
'StructuredName' => detail['StructuredName'],
|
64
|
+
'PartNumber' => detail['PartNumber'],
|
65
|
+
'State' => detail['Status']['State'],
|
66
|
+
'Health' => detail['Status']['Health'],
|
67
|
+
'PhysicalPorts' => physical_ports
|
68
|
+
}
|
69
|
+
network_adapters.push(nets)
|
70
|
+
end
|
71
|
+
{
|
72
|
+
'NetworkAdapters' => network_adapters
|
73
|
+
}
|
74
|
+
end
|
75
|
+
|
76
|
+
# Get the array controller details
|
77
|
+
# @raise [RuntimeError] if the request failed
|
78
|
+
# @return [Hash] array_controller_details
|
79
|
+
def get_array_controller_details
|
80
|
+
response = rest_get('/redfish/v1/Systems/1/SmartStorage/')
|
81
|
+
storages = response_handler(response)
|
82
|
+
array_controllers = []
|
83
|
+
response = rest_get(storages['links']['ArrayControllers']['href'])
|
84
|
+
array_ctrls = response_handler(response)
|
85
|
+
if array_ctrls['links'].key? 'Member'
|
86
|
+
array_ctrls['links']['Member'].each do |array_controller|
|
87
|
+
response = rest_get(array_controller['href'])
|
88
|
+
controller = response_handler(response)
|
89
|
+
storage_enclosures = []
|
90
|
+
response = rest_get(controller['links']['StorageEnclosures']['href'])
|
91
|
+
response_handler(response)['links']['Member'].each do |enclosure|
|
92
|
+
response = rest_get(enclosure['href'])
|
93
|
+
enclsr = response_handler(response)
|
94
|
+
enc = {
|
95
|
+
'Model' => enclsr['Model'],
|
96
|
+
'SerialNumber' => enclsr['SerialNumber'],
|
97
|
+
'DriveBayCount' => enclsr['DriveBayCount'],
|
98
|
+
'State' => enclsr['Status']['State'],
|
99
|
+
'Health' => enclsr['Status']['Health'],
|
100
|
+
'Location' => enclsr['Location'].to_s + ' (' + enclsr['LocationFormat'].to_s + ')',
|
101
|
+
'FirmwareVersion' => enclsr['FirmwareVersion']['Current']['VersionString']
|
102
|
+
}
|
103
|
+
storage_enclosures.push(enc)
|
104
|
+
end
|
105
|
+
|
106
|
+
logical_drives = []
|
107
|
+
response = rest_get(controller['links']['LogicalDrives']['href'])
|
108
|
+
response_handler(response)['links']['Member'].each do |logicaldrive|
|
109
|
+
response = rest_get(logicaldrive['href'])
|
110
|
+
lds = response_handler(response)
|
111
|
+
data_drives = []
|
112
|
+
response = rest_get(lds['links']['DataDrives']['href'])
|
113
|
+
response_handler(response)['links']['Member'].each do |datadrives|
|
114
|
+
response = rest_get(datadrives['href'])
|
115
|
+
disk_drive = response_handler(response)
|
116
|
+
dd = {
|
117
|
+
'Model' => disk_drive['Model'],
|
118
|
+
'Name' => disk_drive['Name'],
|
119
|
+
'RotationalSpeedRpm' => disk_drive['RotationalSpeedRpm'],
|
120
|
+
'SerialNumber' => disk_drive['SerialNumber'],
|
121
|
+
'State' => disk_drive['Status']['State'],
|
122
|
+
'Health' => disk_drive['Status']['Health'],
|
123
|
+
'CapacityMiB' => disk_drive['CapacityMiB'],
|
124
|
+
'CurrentTemperatureCelsius' => disk_drive['CurrentTemperatureCelsius']
|
125
|
+
}
|
126
|
+
data_drives.push(dd)
|
127
|
+
end
|
128
|
+
ld = {
|
129
|
+
'Size' => lds['CapacityMiB'],
|
130
|
+
'Raid' => lds['Raid'],
|
131
|
+
'Status' => lds['Status']['State'],
|
132
|
+
'Health' => lds['Status']['Health'],
|
133
|
+
'DataDrives' => data_drives
|
134
|
+
}
|
135
|
+
logical_drives.push(ld)
|
136
|
+
end
|
137
|
+
ac = {
|
138
|
+
'Model' => controller['Model'],
|
139
|
+
'SerialNumber' => controller['SerialNumber'],
|
140
|
+
'State' => controller['Status']['State'],
|
141
|
+
'Health' => controller['Status']['Health'],
|
142
|
+
'Location' => controller['Location'],
|
143
|
+
'FirmWareVersion' => controller['FirmwareVersion']['Current']['VersionString'],
|
144
|
+
'LogicalDrives' => logical_drives,
|
145
|
+
'Enclosures' => storage_enclosures
|
146
|
+
}
|
147
|
+
array_controllers.push(ac)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
{
|
151
|
+
'HPSmartStorage' => {
|
152
|
+
'Health' => storages['Status']['Health'],
|
153
|
+
'ArrayControllers' => array_controllers
|
154
|
+
}
|
155
|
+
}
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
4
|
+
#
|
5
|
+
# Unless required by applicable law or agreed to in writing,
|
6
|
+
# software distributed under the License is distributed on an "AS IS" BASIS,
|
7
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
8
|
+
# See the License for the specific language governing permissions and limitations under the License.
|
9
|
+
|
10
|
+
module ILO_SDK
|
11
|
+
# Contains helper methods for Computer System actions
|
12
|
+
module ComputerSystemHelper
|
13
|
+
# Get the Asset Tag
|
14
|
+
# @raise [RuntimeError] if the request failed
|
15
|
+
# @return [String] asset_tag
|
16
|
+
def get_asset_tag
|
17
|
+
response = rest_get('/redfish/v1/Systems/1/')
|
18
|
+
response_handler(response)['AssetTag']
|
19
|
+
end
|
20
|
+
|
21
|
+
# Set the Asset Tag
|
22
|
+
# @param [String, Symbol] asset_tag
|
23
|
+
# @raise [RuntimeError] if the request failed
|
24
|
+
# @return true
|
25
|
+
def set_asset_tag(asset_tag)
|
26
|
+
new_action = { 'AssetTag' => asset_tag }
|
27
|
+
response = rest_patch('/redfish/v1/Systems/1/', body: new_action)
|
28
|
+
response_handler(response)
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
32
|
+
# Get the UID indicator LED state
|
33
|
+
# @raise [RuntimeError] if the request failed
|
34
|
+
# @return [String] indicator_led
|
35
|
+
def get_indicator_led
|
36
|
+
response = rest_get('/redfish/v1/Systems/1/')
|
37
|
+
response_handler(response)['IndicatorLED']
|
38
|
+
end
|
39
|
+
|
40
|
+
# Set the UID indicator LED
|
41
|
+
# @param [String, Symbol] state
|
42
|
+
# @raise [RuntimeError] if the request failed
|
43
|
+
# @return true
|
44
|
+
def set_indicator_led(state)
|
45
|
+
new_action = { 'IndicatorLED' => state }
|
46
|
+
response = rest_patch('/redfish/v1/Systems/1/', body: new_action)
|
47
|
+
response_handler(response)
|
48
|
+
true
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
4
|
+
#
|
5
|
+
# Unless required by applicable law or agreed to in writing,
|
6
|
+
# software distributed under the License is distributed on an "AS IS" BASIS,
|
7
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
8
|
+
# See the License for the specific language governing permissions and limitations under the License.
|
9
|
+
|
10
|
+
module ILO_SDK
|
11
|
+
# Contains helper methods for Date and Time actions
|
12
|
+
module DateTimeHelper
|
13
|
+
# Get the Time Zone
|
14
|
+
# @raise [RuntimeError] if the request failed
|
15
|
+
# @return [String] time_zone
|
16
|
+
def get_time_zone
|
17
|
+
response = rest_get('/redfish/v1/Managers/1/DateTime/')
|
18
|
+
response_handler(response)['TimeZone']['Name']
|
19
|
+
end
|
20
|
+
|
21
|
+
# Set the Time Zone
|
22
|
+
# @param [Fixnum] time_zone
|
23
|
+
# @raise [RuntimeError] if the request failed
|
24
|
+
# @return true
|
25
|
+
def set_time_zone(time_zone)
|
26
|
+
time_response = rest_get('/redfish/v1/Managers/1/DateTime/')
|
27
|
+
new_time_zone = response_handler(time_response)['TimeZoneList'].select { |timezone| timezone['Name'] == time_zone }
|
28
|
+
new_action = { 'TimeZone' => { 'Index' => new_time_zone[0]['Index'] } }
|
29
|
+
response = rest_patch('/redfish/v1/Managers/1/DateTime/', body: new_action)
|
30
|
+
response_handler(response)
|
31
|
+
true
|
32
|
+
end
|
33
|
+
|
34
|
+
# Get whether or not ntp servers are being used
|
35
|
+
# @raise [RuntimeError] if the request failed
|
36
|
+
# @return [TrueClass, FalseClass] use_ntp
|
37
|
+
def get_ntp
|
38
|
+
response = rest_get('/redfish/v1/Managers/1/EthernetInterfaces/1/')
|
39
|
+
response_handler(response)['Oem']['Hp']['DHCPv4']['UseNTPServers']
|
40
|
+
end
|
41
|
+
|
42
|
+
# Set whether or not ntp servers are being used
|
43
|
+
# @param [TrueClass, FalseClass] use_ntp
|
44
|
+
# @raise [RuntimeError] if the request failed
|
45
|
+
# @return true
|
46
|
+
def set_ntp(use_ntp)
|
47
|
+
new_action = { 'Oem' => { 'Hp' => { 'DHCPv4' => { 'UseNTPServers' => use_ntp } } } }
|
48
|
+
response = rest_patch('/redfish/v1/Managers/1/EthernetInterfaces/1/', body: new_action)
|
49
|
+
response_handler(response)
|
50
|
+
true
|
51
|
+
end
|
52
|
+
|
53
|
+
# Get the NTP Servers
|
54
|
+
# @raise [RuntimeError] if the request failed
|
55
|
+
# @return [Array] ntp_servers
|
56
|
+
def get_ntp_servers
|
57
|
+
response = rest_get('/redfish/v1/Managers/1/DateTime/')
|
58
|
+
response_handler(response)['StaticNTPServers']
|
59
|
+
end
|
60
|
+
|
61
|
+
# Set the NTP Servers
|
62
|
+
# @param [Fixnum] ntp_servers
|
63
|
+
# @raise [RuntimeError] if the request failed
|
64
|
+
# @return true
|
65
|
+
def set_ntp_servers(ntp_servers)
|
66
|
+
new_action = { 'StaticNTPServers' => ntp_servers }
|
67
|
+
response = rest_patch('/redfish/v1/Managers/1/DateTime/', body: new_action)
|
68
|
+
response_handler(response)
|
69
|
+
true
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
4
|
+
#
|
5
|
+
# Unless required by applicable law or agreed to in writing,
|
6
|
+
# software distributed under the License is distributed on an "AS IS" BASIS,
|
7
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
8
|
+
# See the License for the specific language governing permissions and limitations under the License.
|
9
|
+
|
10
|
+
module ILO_SDK
|
11
|
+
# Contains helper methods for Firmware Update actions
|
12
|
+
module FirmwareUpdateHelper
|
13
|
+
# Get the Firmware Version
|
14
|
+
# @raise [RuntimeError] if the request failed
|
15
|
+
# @return [String] fw_version
|
16
|
+
def get_fw_version
|
17
|
+
response = rest_get('/redfish/v1/Systems/1/FirmWareInventory/')
|
18
|
+
response_handler(response)['Current']['SystemBMC'][0]['VersionString']
|
19
|
+
end
|
20
|
+
|
21
|
+
# Set the Firmware Upgrade
|
22
|
+
# @param [String, Symbol] uri
|
23
|
+
# @raise [RuntimeError] if the request failed
|
24
|
+
# @return true
|
25
|
+
def set_fw_upgrade(uri, tpm_override_flag = true)
|
26
|
+
new_action = { 'Action' => 'InstallFromURI', 'FirmwareURI' => uri, 'TPMOverrideFlag' => tpm_override_flag }
|
27
|
+
response = rest_post('/redfish/v1/Managers/1/UpdateService/', body: new_action)
|
28
|
+
response_handler(response)
|
29
|
+
true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
4
|
+
#
|
5
|
+
# Unless required by applicable law or agreed to in writing,
|
6
|
+
# software distributed under the License is distributed on an "AS IS" BASIS,
|
7
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
8
|
+
# See the License for the specific language governing permissions and limitations under the License.
|
9
|
+
|
10
|
+
module ILO_SDK
|
11
|
+
# Contains helper methods for Log Entry actions
|
12
|
+
module LogEntryHelper
|
13
|
+
# Clear the specified logs
|
14
|
+
# @param [String, Symbol] log_type
|
15
|
+
# @raise [RuntimeError] if the request failed
|
16
|
+
# @return true
|
17
|
+
def clear_logs(log_type)
|
18
|
+
new_action = { 'Action' => 'ClearLog' }
|
19
|
+
response = rest_post("/redfish/v1/Managers/1/LogServices/#{log_type}/", body: new_action)
|
20
|
+
response_handler(response)
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
# Check to see if the specified logs are empty
|
25
|
+
# @param [String, Symbol] log_type
|
26
|
+
# @raise [RuntimeError] if the request failed
|
27
|
+
# @return [TrueClass, FalseClass] logs_empty
|
28
|
+
def logs_empty?(log_type)
|
29
|
+
response = rest_get("/redfish/v1/Managers/1/LogServices/#{log_type}/Entries/")
|
30
|
+
response_handler(response)['Items'].empty?
|
31
|
+
end
|
32
|
+
|
33
|
+
# Get the specified logs
|
34
|
+
# @param [String, Symbol] severity_level
|
35
|
+
# @param [String, Symbol] duration
|
36
|
+
# @param [String, Symbol] log_type
|
37
|
+
# @raise [RuntimeError] if the request failed
|
38
|
+
# @return logs
|
39
|
+
def get_logs(severity_level, duration, log_type)
|
40
|
+
response = rest_get("/redfish/v1/Managers/1/LogServices/#{log_type}/Entries/")
|
41
|
+
entries = response_handler(response)['Items']
|
42
|
+
logs = []
|
43
|
+
entries.each do |e|
|
44
|
+
if severity_level.nil?
|
45
|
+
logs.push("#{e['Severity']} | #{e['Message']} | #{e['Created']}") if Time.parse(e['Created']) > (Time.now.utc - (duration * 3600))
|
46
|
+
elsif e['Severity'] == severity_level && Time.parse(e['Created']) > (Time.now.utc - (duration * 3600))
|
47
|
+
logs.push("#{e['Severity']} | #{e['Message']} | #{e['Created']}")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
logs
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
4
|
+
#
|
5
|
+
# Unless required by applicable law or agreed to in writing,
|
6
|
+
# software distributed under the License is distributed on an "AS IS" BASIS,
|
7
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
8
|
+
# See the License for the specific language governing permissions and limitations under the License.
|
9
|
+
|
10
|
+
module ILO_SDK
|
11
|
+
# Contains helper methods for Manager Network Protocol actions
|
12
|
+
module ManagerNetworkProtocolHelper
|
13
|
+
# Get the Session Timeout Minutes
|
14
|
+
# @raise [RuntimeError] if the request failed
|
15
|
+
# @return [Fixnum] timeout
|
16
|
+
def get_timeout
|
17
|
+
response = rest_get('/redfish/v1/Managers/1/NetworkService/')
|
18
|
+
response_handler(response)['SessionTimeoutMinutes']
|
19
|
+
end
|
20
|
+
|
21
|
+
# Set the Session Timeout Minutes
|
22
|
+
# @param [Fixnum] timeout
|
23
|
+
# @raise [RuntimeError] if the request failed
|
24
|
+
# @return true
|
25
|
+
def set_timeout(timeout)
|
26
|
+
new_action = { 'SessionTimeoutMinutes' => timeout }
|
27
|
+
response = rest_patch('/redfish/v1/Managers/1/NetworkService/', body: new_action)
|
28
|
+
response_handler(response)
|
29
|
+
true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
4
|
+
#
|
5
|
+
# Unless required by applicable law or agreed to in writing,
|
6
|
+
# software distributed under the License is distributed on an "AS IS" BASIS,
|
7
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
8
|
+
# See the License for the specific language governing permissions and limitations under the License.
|
9
|
+
|
10
|
+
module ILO_SDK
|
11
|
+
# Contains helper methods for Power actions
|
12
|
+
module PowerHelper
|
13
|
+
# Get the Power State
|
14
|
+
# @raise [RuntimeError] if the request failed
|
15
|
+
# @return [String] power_state
|
16
|
+
def get_power_state
|
17
|
+
response = rest_get('/redfish/v1/Systems/1/')
|
18
|
+
response_handler(response)['PowerState']
|
19
|
+
end
|
20
|
+
|
21
|
+
# Set the Power State
|
22
|
+
# @param [String, Symbol] state
|
23
|
+
# @raise [RuntimeError] if the request failed
|
24
|
+
# @return true
|
25
|
+
def set_power_state(state)
|
26
|
+
new_action = { 'Action' => 'Reset', 'ResetType' => state }
|
27
|
+
response = rest_post('/redfish/v1/Systems/1/', body: new_action)
|
28
|
+
response_handler(response)
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
32
|
+
# Reset the iLO
|
33
|
+
# @raise [RuntimeError] if the request failed
|
34
|
+
# @return true
|
35
|
+
def reset_ilo
|
36
|
+
new_action = { 'Action' => 'Reset' }
|
37
|
+
response = rest_post('/redfish/v1/Managers/1/', body: new_action)
|
38
|
+
response_handler(response)
|
39
|
+
true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|