blob: a73a56cbc11f7c82227cf865172f514e739ef86e [file] [log] [blame]
Chris Austenb29d2e82016-06-07 12:25:35 -05001*** Settings ***
Steven Sombar0acb3412018-01-24 09:38:42 -06002
Steven Sombarf60cbcf2018-12-07 08:12:18 -06003Documentation Utilities for Robot keywords that use REST.
Steven Sombar0acb3412018-01-24 09:38:42 -06004
Sandhya Somashekar839a0c22019-01-31 05:05:43 -06005Resource ../lib/resource.robot
Chris Austenb29d2e82016-06-07 12:25:35 -05006Resource ../lib/rest_client.robot
George Keishing5e870cd2016-08-24 10:05:47 -05007Resource ../lib/connection_client.robot
Rahul Maheshwarid1f45f22018-10-26 05:16:39 -05008Resource ../lib/boot_utils.robot
Steven Sombarf60cbcf2018-12-07 08:12:18 -06009Resource ../lib/common_utils.robot
Michael Walsh391ba9b2017-08-24 11:36:24 -050010Library String
George Keishing30c12ff2016-09-02 10:25:29 -050011Library DateTime
12Library Process
Chris Austenb29d2e82016-06-07 12:25:35 -050013Library OperatingSystem
Michael Walsha6723f22016-11-22 11:12:01 -060014Library gen_print.py
Steven Sombaraaaab222018-12-19 13:16:23 -060015Library gen_misc.py
Michael Walsha6723f22016-11-22 11:12:01 -060016Library gen_robot_print.py
Michael Walsh5f3f4142017-05-22 17:09:47 -050017Library gen_cmd.py
Sunil Macd110a2017-05-23 04:14:32 -050018Library gen_robot_keyword.py
Michael Walshe53e47a2017-06-30 17:03:24 -050019Library bmc_ssh_utils.py
Michael Walshfdc5ced2017-08-17 13:15:15 -050020Library utils.py
Charles Paul Hofer35816152017-10-02 11:55:11 -050021Library var_funcs.py
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050022Library SCPLibrary WITH NAME scp
George Keishing61364e52019-10-01 12:01:19 -050023Library gen_robot_valid.py
Chris Austenb29d2e82016-06-07 12:25:35 -050024
Steven Sombarf60cbcf2018-12-07 08:12:18 -060025
Chris Austenb29d2e82016-06-07 12:25:35 -050026*** Variables ***
Steven Sombar0acb3412018-01-24 09:38:42 -060027
Steven Sombar0acb3412018-01-24 09:38:42 -060028${SYSTEM_SHUTDOWN_TIME} ${5}
29
Michael Walsha6723f22016-11-22 11:12:01 -060030# Assign default value to QUIET for programs which may not define it.
31${QUIET} ${0}
Steven Sombar0acb3412018-01-24 09:38:42 -060032
Sridevi Ramesh1699d372016-12-06 00:20:22 -060033${HOST_SETTING} ${SETTINGS_URI}host0
Steven Sombar0acb3412018-01-24 09:38:42 -060034
Steven Sombar0acb3412018-01-24 09:38:42 -060035${boot_prog_method} ${EMPTY}
Michael Walshfdc5ced2017-08-17 13:15:15 -050036${power_policy_setup} ${0}
37${bmc_power_policy_method} ${EMPTY}
Michael Walshfdc5ced2017-08-17 13:15:15 -050038
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -050039
Chris Austenb29d2e82016-06-07 12:25:35 -050040*** Keywords ***
Sridevi Ramesh1699d372016-12-06 00:20:22 -060041
Steven Sombar0acb3412018-01-24 09:38:42 -060042
George Keishing5e870cd2016-08-24 10:05:47 -050043Verify Ping and REST Authentication
Joy Onyerikwuf4a807b2018-06-20 08:43:54 -050044 [Documentation] Verify ping and rest authentication.
Michael Walsha6723f22016-11-22 11:12:01 -060045 ${l_ping}= Run Keyword And Return Status
George Keishing5e870cd2016-08-24 10:05:47 -050046 ... Ping Host ${OPENBMC_HOST}
George Keishingc4d3dc02016-09-19 03:45:55 -050047 Run Keyword If '${l_ping}' == '${False}'
48 ... Fail msg=Ping Failed
George Keishing5e870cd2016-08-24 10:05:47 -050049
Michael Walsha6723f22016-11-22 11:12:01 -060050 ${l_rest}= Run Keyword And Return Status
George Keishing5e870cd2016-08-24 10:05:47 -050051 ... Initialize OpenBMC
George Keishingc4d3dc02016-09-19 03:45:55 -050052 Run Keyword If '${l_rest}' == '${False}'
53 ... Fail msg=REST Authentication Failed
George Keishing5e870cd2016-08-24 10:05:47 -050054
55 # Just to make sure the SSH is working for SCP
56 Open Connection And Log In
57 ${system} ${stderr}= Execute Command hostname return_stderr=True
58 Should Be Empty ${stderr}
59
Steven Sombar0acb3412018-01-24 09:38:42 -060060
George Keishing90b555a2021-05-20 11:54:16 -050061Verify Ping SSH And Redfish Authentication
62 [Documentation] Verify ping, SSH and redfish authentication.
63
64 ${l_ping}= Run Keyword And Return Status Ping Host ${OPENBMC_HOST}
65 Run Keyword If '${l_ping}' == '${False}' Fail msg=Ping Failed
66
67 ${l_rest}= Run Keyword And Return Status Redfish.Login
68 Run Keyword If '${l_rest}' == '${False}' Fail msg=REST Authentication Failed
69
70 # Just to make sure the SSH is working.
71 Open Connection And Log In
72 ${system} ${stderr}= Execute Command hostname return_stderr=True
73 Should Be Empty ${stderr}
74
75
George Keishingc4d3dc02016-09-19 03:45:55 -050076Check If BMC is Up
77 [Documentation] Wait for Host to be online. Checks every X seconds
78 ... interval for Y minutes and fails if timed out.
79 ... Default MAX timedout is 10 min, interval 10 seconds.
Gunnar Mills38032802016-12-12 13:43:40 -060080 [Arguments] ${max_timeout}=${OPENBMC_REBOOT_TIMEOUT} min
George Keishingc4d3dc02016-09-19 03:45:55 -050081 ... ${interval}=10 sec
82
Steven Sombar0acb3412018-01-24 09:38:42 -060083 # Description of argument(s):
84 # max_timeout Maximum time to wait.
85 # This should be expressed in Robot Framework's time format
86 # (e.g. "10 minutes").
George Keishing16b3c7b2021-01-28 09:23:37 -060087 # interval Interval to wait between status checks.
Steven Sombar0acb3412018-01-24 09:38:42 -060088 # This should be expressed in Robot Framework's time format
89 # (e.g. "5 seconds").
90
George Keishingc4d3dc02016-09-19 03:45:55 -050091 Wait Until Keyword Succeeds
92 ... ${max_timeout} ${interval} Verify Ping and REST Authentication
93
George Keishingb3700812016-08-31 03:03:30 -050094
George Keishing06ae4aa2016-08-30 01:41:28 -050095Flush REST Sessions
96 [Documentation] Removes all the active session objects
97 Delete All Sessions
George Keishingb3700812016-08-31 03:03:30 -050098
Steven Sombar0acb3412018-01-24 09:38:42 -060099
Rahul Maheshwarie95622c2017-02-24 10:04:29 -0600100Trigger Host Watchdog Error
George Keishing37cfa6b2017-06-15 10:25:55 -0500101 [Documentation] Inject host watchdog timeout error via REST.
Rahul Maheshwarie95622c2017-02-24 10:04:29 -0600102 [Arguments] ${milliseconds}=1000 ${sleep_time}=5s
Steven Sombar0acb3412018-01-24 09:38:42 -0600103
Michael Walshb5839d02017-04-12 16:11:20 -0500104 # Description of argument(s):
105 # milliseconds The time watchdog timer value in milliseconds (e.g. 1000 =
106 # 1 second).
Rahul Maheshwarie95622c2017-02-24 10:04:29 -0600107 # sleep_time Time delay for host watchdog error to get injected.
108 # Default is 5 seconds.
109
Michael Walsh4ffd1a12018-03-14 10:35:44 -0500110 ${data}= Create Dictionary
111 ... data=xyz.openbmc_project.State.Watchdog.Action.PowerCycle
112 ${status} ${result}= Run Keyword And Ignore Error
113 ... Read Attribute ${HOST_WATCHDOG_URI} ExpireAction
114 Run Keyword If '${status}' == 'PASS'
115 ... Write Attribute ${HOST_WATCHDOG_URI} ExpireAction data=${data}
George Keishing37cfa6b2017-06-15 10:25:55 -0500116
Sridevi Ramesheadeef02019-01-17 08:56:18 -0600117 ${int_milliseconds}= Convert To Integer ${milliseconds}
118 ${data}= Create Dictionary data=${int_milliseconds}
Michael Walsh4ffd1a12018-03-14 10:35:44 -0500119 Write Attribute ${HOST_WATCHDOG_URI} Interval data=${data}
120
121 ${data}= Create Dictionary data=${True}
122 Write Attribute ${HOST_WATCHDOG_URI} Enabled data=${data}
George Keishing37cfa6b2017-06-15 10:25:55 -0500123
Rahul Maheshwarie95622c2017-02-24 10:04:29 -0600124 Sleep ${sleep_time}
Prashanth Kattiae7c2282017-03-15 07:43:46 -0500125
Steven Sombar0acb3412018-01-24 09:38:42 -0600126
Prashanth Kattiae7c2282017-03-15 07:43:46 -0500127Login To OS Host
Steven Sombar0acb3412018-01-24 09:38:42 -0600128 [Documentation] Login to OS Host and return the Login response code.
Prashanth Kattiae7c2282017-03-15 07:43:46 -0500129 [Arguments] ${os_host}=${OS_HOST} ${os_username}=${OS_USERNAME}
130 ... ${os_password}=${OS_PASSWORD}
Steven Sombar0acb3412018-01-24 09:38:42 -0600131
Gunnar Mills28e403b2017-10-25 16:16:38 -0500132 # Description of arguments:
Prashanth Kattiae7c2282017-03-15 07:43:46 -0500133 # ${os_host} IP address of the OS Host.
134 # ${os_username} OS Host Login user name.
135 # ${os_password} OS Host Login passwrd.
136
Rahul Maheshwarid1f45f22018-10-26 05:16:39 -0500137 REST Power On stack_mode=skip quiet=1
Prashanth Kattiae7c2282017-03-15 07:43:46 -0500138
George Keishing3f223b82017-06-28 03:50:35 -0500139 SSHLibrary.Open Connection ${os_host}
George Keishinge0030882019-02-21 03:48:27 -0600140 ${resp}= SSHLibrary.Login ${os_username} ${os_password}
Sridevi Rameshea36b412017-03-09 04:08:02 -0600141 [Return] ${resp}
Prashanth Katti884ee062017-03-16 05:05:03 -0500142
Steven Sombar0acb3412018-01-24 09:38:42 -0600143
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600144Initiate Auto Reboot
145 [Documentation] Initiate an auto reboot.
146 [Arguments] ${milliseconds}=5000
Sweta Potthurie5a9fc72017-05-03 07:02:46 -0500147
148 # Description of argument(s):
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600149 # milliseconds The number of milliseconds for the watchdog timer.
Sweta Potthurie5a9fc72017-05-03 07:02:46 -0500150
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600151 # Set the auto reboot policy.
152 Set Auto Reboot ${1}
153 # Set the watchdog timer.
154 Trigger Host Watchdog Error ${milliseconds}
155
156
157Initiate OS Host Reboot
158 [Documentation] Initiate an OS reboot.
159 [Arguments] ${os_host}=${OS_HOST} ${os_username}=${OS_USERNAME}
160 ... ${os_password}=${OS_PASSWORD}
161
162 # Description of argument(s):
163 # os_host The host name or IP address of the OS.
164 # os_username The username to be used to sign in to the OS.
165 # os_password The password to be used to sign in to the OS.
166
167 ${cmd_buf}= Run Keyword If '${os_username}' == 'root'
168 ... Set Variable reboot
169 ... ELSE
170 ... Set Variable echo ${os_password} | sudo -S reboot
171
172 ${output} ${stderr} ${rc}= OS Execute Command
173 ... ${cmd_buf} fork=${1}
174
175
176Initiate OS Host Power Off
177 [Documentation] Initiate an OS reboot.
178 [Arguments] ${os_host}=${OS_HOST} ${os_username}=${OS_USERNAME}
179 ... ${os_password}=${OS_PASSWORD} ${hard}=${0}
180
181 # Description of argument(s):
182 # os_host The DNS name or IP of the OS.
183 # os_username The username to be used to sign in to the OS.
184 # os_password The password to be used to sign in to the OS.
185 # hard Indicates whether to do a hard vs. soft power off.
186
187 ${time_string}= Run Keyword If ${hard} Set Variable ${SPACE}now
188 ... ELSE Set Variable ${EMPTY}
189
190 ${cmd_buf}= Run Keyword If '${os_username}' == 'root'
191 ... Set Variable shutdown${time_string}
192 ... ELSE
193 ... Set Variable echo ${os_password} | sudo -S shutdown${time_string}
194
195 ${output} ${stderr} ${rc}= OS Execute Command
196 ... ${cmd_buf} fork=${1}
Sweta Potthurie5a9fc72017-05-03 07:02:46 -0500197
George Keishing3987a1e2017-09-20 09:13:02 -0500198
Steven Sombar5f3af442018-02-14 08:30:15 -0600199Set System LED State
200 [Documentation] Set given system LED via REST.
201 [Arguments] ${led_name} ${led_state}
202 # Description of argument(s):
203 # led_name System LED name (e.g. heartbeat, identify, beep).
204 # led_state LED state to be set (e.g. On, Off).
205
206 ${args}= Create Dictionary
207 ... data=xyz.openbmc_project.Led.Physical.Action.${led_state}
208 Write Attribute ${LED_PHYSICAL_URI}${led_name} State data=${args}
209
210 Verify LED State ${led_name} ${led_state}
211
212
Steven Sombaraaf72c42017-09-05 12:02:00 -0500213Read Turbo Setting Via REST
214 [Documentation] Return turbo setting via REST.
Steven Sombarea79a492018-04-18 11:14:57 -0500215 # Returns 1 if TurboAllowed, 0 if not.
Steven Sombaraaf72c42017-09-05 12:02:00 -0500216
Steven Sombarea79a492018-04-18 11:14:57 -0500217 ${turbo_setting}= Read Attribute
218 ... ${CONTROL_HOST_URI}turbo_allowed TurboAllowed
219 [Return] ${turbo_setting}
220
Steven Sombaraaf72c42017-09-05 12:02:00 -0500221
Steven Sombaraaf72c42017-09-05 12:02:00 -0500222Set Turbo Setting Via REST
223 [Documentation] Set turbo setting via REST.
Steven Sombar80bc8592018-04-24 11:44:53 -0500224 [Arguments] ${setting} ${verify}=${False}
Steven Sombar0acb3412018-01-24 09:38:42 -0600225
Steven Sombaraaf72c42017-09-05 12:02:00 -0500226 # Description of argument(s):
Steven Sombar80bc8592018-04-24 11:44:53 -0500227 # setting State to set TurboAllowed, 1=allowed, 0=not allowed.
228 # verify If True, read the TurboAllowed setting to confirm.
Steven Sombaraaf72c42017-09-05 12:02:00 -0500229
Steven Sombarea79a492018-04-18 11:14:57 -0500230 ${data}= Create Dictionary data=${${setting}}
Steven Sombar80bc8592018-04-24 11:44:53 -0500231 Write Attribute ${CONTROL_HOST_URI}turbo_allowed TurboAllowed
232 ... verify=${verify} data=${data}
George Keishingef74a8c2017-10-20 10:23:52 -0500233
Steven Sombar0acb3412018-01-24 09:38:42 -0600234
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600235Set REST Logging Policy
236 [Documentation] Enable or disable REST logging setting.
237 [Arguments] ${policy_setting}=${True}
George Keishingef74a8c2017-10-20 10:23:52 -0500238
239 # Description of argument(s):
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600240 # policy_setting The policy setting value which can be either
241 # True or False.
George Keishingef74a8c2017-10-20 10:23:52 -0500242
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600243 ${log_dict}= Create Dictionary data=${policy_setting}
George Keishingdf3e65f2018-12-18 13:06:56 -0600244 Write Attribute ${BMC_LOGGING_URI}rest_api_logs Enabled
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600245 ... data=${log_dict} verify=${1} expected_value=${policy_setting}
Sridevi Ramesh0d88ab32017-09-21 11:07:28 -0500246
Steven Sombar0acb3412018-01-24 09:38:42 -0600247
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600248Old Get Boot Progress
249 [Documentation] Get the boot progress the old way (via org location).
250 [Arguments] ${quiet}=${QUIET}
George Keishing034902d2017-11-10 13:15:38 -0600251
252 # Description of argument(s):
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600253 # quiet Indicates whether this keyword should run without any output to
254 # the console.
255
256 ${state}= Read Attribute ${OPENBMC_BASE_URI}sensors/host/BootProgress
257 ... value quiet=${quiet}
258
259 [Return] ${state}
260
261
262Set Boot Progress Method
263 [Documentation] Set the boot_prog_method to either 'Old' or 'New'.
264
265 # The boot progress data has moved from an 'org' location to an 'xyz'
266 # location. This keyword will determine whether the new method of getting
267 # the boot progress is valid and will set the global boot_prog_method
268 # variable accordingly. If boot_prog_method is already set (either by a
269 # prior call to this function or via a -v parm), this keyword will simply
270 # return.
271
272 # Note: There are interim builds that contain boot_progress in both the
273 # old and the new location values. It is nearly impossible for this
274 # keyword to determine whether the old boot_progress or the new one is
275 # active. When using such builds where the old boot_progress is active,
276 # the only recourse users will have is that they may specify
277 # -v boot_prog_method:Old to force old behavior on such builds.
278
279 Run Keyword If '${boot_prog_method}' != '${EMPTY}' Return From Keyword
280
281 ${new_status} ${new_value}= Run Keyword And Ignore Error
282 ... New Get Boot Progress
283 # If the new style read fails, the method must necessarily be "Old".
284 Run Keyword If '${new_status}' == 'PASS'
285 ... Run Keywords
286 ... Set Global Variable ${boot_prog_method} New AND
287 ... Rqpvars boot_prog_method AND
288 ... Return From Keyword
289
290 # Default method is "Old".
291 Set Global Variable ${boot_prog_method} Old
292 Rqpvars boot_prog_method
293
294
295Initiate Power On
296 [Documentation] Initiates the power on and waits until the Is Power On
297 ... keyword returns that the power state has switched to on.
298 [Arguments] ${wait}=${1}
299
300 # Description of argument(s):
301 # wait Indicates whether to wait for a powered on state after issuing
302 # the power on command.
303
304 @{arglist}= Create List
305 ${args}= Create Dictionary data=@{arglist}
306 ${resp}= Call Method ${OPENBMC_BASE_URI}control/chassis0/ powerOn
307 ... data=${args}
308 should be equal as strings ${resp.status_code} ${HTTP_OK}
309
310 # Does caller want to wait for power on status?
311 Run Keyword If '${wait}' == '${0}' Return From Keyword
312 Wait Until Keyword Succeeds 3 min 10 sec Is Power On
313
314
315Initiate Power Off
316 [Documentation] Initiates the power off and waits until the Is Power Off
317 ... keyword returns that the power state has switched to off.
318
319 @{arglist}= Create List
320 ${args}= Create Dictionary data=@{arglist}
321 ${resp}= Call Method ${OPENBMC_BASE_URI}control/chassis0/ powerOff
322 ... data=${args}
323 should be equal as strings ${resp.status_code} ${HTTP_OK}
324 Wait Until Keyword Succeeds 1 min 10 sec Is Power Off
325
326
327Get Boot Progress
328 [Documentation] Get the boot progress and return it.
329 [Arguments] ${quiet}=${QUIET}
330
331 # Description of argument(s):
332 # quiet Indicates whether this keyword should run without any output to
333 # the console.
334
335 Set Boot Progress Method
336 ${state}= Run Keyword If '${boot_prog_method}' == 'New'
337 ... New Get Boot Progress quiet=${quiet}
338 ... ELSE
339 ... Old Get Boot Progress quiet=${quiet}
340
341 [Return] ${state}
342
343
344New Get Boot Progress
345 [Documentation] Get the boot progress the new way (via xyz location).
346 [Arguments] ${quiet}=${QUIET}
347
348 # Description of argument(s):
349 # quiet Indicates whether this keyword should run without any output to
350 # the console.
351
352 ${state}= Read Attribute ${HOST_STATE_URI} BootProgress quiet=${quiet}
353
354 [Return] ${state.rsplit('.', 1)[1]}
355
356
357New Get Power Policy
358 [Documentation] Returns the BMC power policy (new method).
359 ${currentPolicy}= Read Attribute ${POWER_RESTORE_URI} PowerRestorePolicy
360
361 [Return] ${currentPolicy}
362
363
364Old Get Power Policy
365 [Documentation] Returns the BMC power policy (old method).
366 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy
367
368 [Return] ${currentPolicy}
369
370
George Keishinga54e06f2020-06-12 10:42:41 -0500371Redfish Get Power Restore Policy
372 [Documentation] Returns the BMC power restore policy.
373
374 ${power_restore_policy}= Redfish.Get Attribute /redfish/v1/Systems/system PowerRestorePolicy
375 [Return] ${power_restore_policy}
376
377
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600378Get Auto Reboot
379 [Documentation] Returns auto reboot setting.
380 ${setting}= Read Attribute ${CONTROL_HOST_URI}/auto_reboot AutoReboot
381
382 [Return] ${setting}
383
384
George Keishingc8a6dd22020-06-12 12:01:33 -0500385Redfish Get Auto Reboot
386 [Documentation] Returns auto reboot setting.
387
George Keishinga8cb28d2020-06-15 03:10:29 -0500388 ${resp}= Redfish.Get Attribute /redfish/v1/Systems/system Boot
George Keishinga8cb28d2020-06-15 03:10:29 -0500389 [Return] ${resp["AutomaticRetryConfig"]}
George Keishingc8a6dd22020-06-12 12:01:33 -0500390
391
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600392Trigger Warm Reset
393 [Documentation] Initiate a warm reset.
394
395 log to console "Triggering warm reset"
396 ${data}= create dictionary data=@{EMPTY}
397 ${resp}= openbmc post request
398 ... ${OPENBMC_BASE_URI}control/bmc0/action/warmReset data=${data}
399 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
400 ${session_active}= Check If warmReset is Initiated
401 Run Keyword If '${session_active}' == '${True}'
402 ... Fail msg=warm reset didn't occur
403
404 Sleep ${SYSTEM_SHUTDOWN_TIME}min
405 Check If BMC Is Up
406
407
408Get Power State
409 [Documentation] Returns the power state as an integer. Either 0 or 1.
410 [Arguments] ${quiet}=${QUIET}
411
412 # Description of argument(s):
413 # quiet Indicates whether this keyword should run without any output to
414 # the console.
415
416 @{arglist}= Create List
417 ${args}= Create Dictionary data=@{arglist}
418
419 ${resp}= Call Method ${OPENBMC_BASE_URI}control/chassis0/ getPowerState
420 ... data=${args} quiet=${quiet}
421 Should be equal as strings ${resp.status_code} ${HTTP_OK}
422 ${content}= to json ${resp.content}
423
424 [Return] ${content["data"]}
425
426
427Clear BMC Gard Record
428 [Documentation] Clear gard records from the system.
429
430 @{arglist}= Create List
431 ${args}= Create Dictionary data=@{arglist}
432 ${resp}= Call Method
433 ... ${OPENPOWER_CONTROL}gard Reset data=${args}
434 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
435
436
437Flash PNOR
438 [Documentation] Calls flash bios update method to flash PNOR image
439 [Arguments] ${pnor_image}
440
441 # Description of argument(s):
442 # pnor_image The filename and path of the PNOR image
443 # (e.g. "/home/image/zaius.pnor").
444
445 @{arglist}= Create List ${pnor_image}
446 ${args}= Create Dictionary data=@{arglist}
447 ${resp}= Call Method /org/openbmc/control/flash/bios/ update
448 ... data=${args}
449 should be equal as strings ${resp.status_code} ${HTTP_OK}
450 Wait Until Keyword Succeeds 2 min 10 sec Is PNOR Flashing
451
452
453Get Flash BIOS Status
454 [Documentation] Returns the status of the flash BIOS API as a string. For
455 ... example 'Flashing', 'Flash Done', etc
456 ${data}= Read Properties /org/openbmc/control/flash/bios
457 [Return] ${data['status']}
458
459
460Is PNOR Flashing
461 [Documentation] Get BIOS 'Flashing' status. This indicates that PNOR
462 ... flashing has started.
463 ${status}= Get Flash BIOS Status
464 Should Contain ${status} Flashing
465
466
467Is PNOR Flash Done
468 [Documentation] Get BIOS 'Flash Done' status. This indicates that the
469 ... PNOR flashing has completed.
470 ${status}= Get Flash BIOS Status
471 should be equal as strings ${status} Flash Done
472
473
474Create OS Console File Path
475 [Documentation] Create OS console file path name and return it.
476 [Arguments] ${log_file_path}=${EMPTY}
477
478 # Description of arguments:
479 # file_path The caller's candidate value. If this value is ${EMPTY}, this
480 # keyword will compose a file path name. Otherwise, this
481 # keyword will use the caller's file_path value. In either
482 # case, the value will be returned.
483
484 ${status}= Run Keyword And Return Status Variable Should Exist
485 ... ${TEST_NAME}
486
487 ${default_file_path}= Set Variable If ${status} == ${TRUE}
488 ... /tmp/${OPENBMC_HOST}_${TEST_NAME.replace(' ', '')}_os_console.txt
489 ... /tmp/${OPENBMC_HOST}_os_console.txt
490
491 ${log_file_path}= Set Variable If '${log_file_path}' == '${EMPTY}'
492 ... ${default_file_path} ${log_file_path}
493
494 [Return] ${log_file_path}
495
496
497Get Endpoint Paths
498 [Documentation] Returns all url paths ending with given endpoint
499 ... Example:
500 ... Given the following endpoint: cpu
501 ... This keyword will return: list of all urls ending with
502 ... cpu -
503 ... /org/openbmc/inventory/system/chassis/motherboard/cpu0,
504 ... /org/openbmc/inventory/system/chassis/motherboard/cpu1
505 [Arguments] ${path} ${endpoint}
506
507 # Description of arguments:
508 # path URL path for enumeration.
509 # endpoint Endpoint string (url path ending).
510
Steven Sombaraaaab222018-12-19 13:16:23 -0600511 # Make sure path ends with slash.
512 ${path}= Add Trailing Slash ${path}
513
514 ${resp}= Read Properties ${path}enumerate timeout=30
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600515 Log Dictionary ${resp}
516
517 ${list}= Get Dictionary Keys ${resp}
518 # For a given string, look for prefix and suffix for matching expression.
519 # Start of string followed by zero or more of any character followed by
520 # any digit or lower case character.
George Keishing585afa32020-07-09 04:55:15 -0500521 ${resp}= Get Matches ${list} regexp=^.*[0-9a-z_].${endpoint}\[_0-9a-z]*$ case_insensitive=${True}
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600522
523 [Return] ${resp}
524
525
526Set BMC Power Policy
527 [Documentation] Set the given BMC power policy.
528 [Arguments] ${policy}
529
530 # Note that this function will translate the old style "RESTORE_LAST_STATE"
531 # policy to the new style "xyz.openbmc_project.Control.Power.RestorePolicy.
532 # Policy.Restore" for you.
533
534 # Description of argument(s):
535 # policy Power restore policy (e.g "RESTORE_LAST_STATE",
536 # ${RESTORE_LAST_STATE}).
537
538 # Set the bmc_power_policy_method to either 'Old' or 'New'.
539 Set Power Policy Method
540 # This translation helps bridge between old and new method for calling.
541 ${policy}= Translate Power Policy Value ${policy}
542 # Run the appropriate keyword.
543 Run Key ${bmc_power_policy_method} Set Power Policy \ ${policy}
544 ${currentPolicy}= Get System Power Policy
545 Should Be Equal ${currentPolicy} ${policy}
546
547
548Delete Error Logs
549 [Documentation] Delete error logs.
Michael Sheposcc490b42020-08-26 12:53:01 -0500550 [Arguments] ${quiet}=${0}
551 # Description of argument(s):
552 # quiet If enabled, turns off logging to console.
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600553
554 # Check if error logs entries exist, if not return.
Steven Sombara8800da2018-12-18 16:19:05 -0600555 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}list quiet=${1}
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600556 Return From Keyword If ${resp.status_code} == ${HTTP_NOT_FOUND}
557
558 # Get the list of error logs entries and delete them all.
559 ${elog_entries}= Get URL List ${BMC_LOGGING_ENTRY}
David Shaw79247e42020-06-18 17:16:02 -0500560 FOR ${entry} IN @{elog_entries}
Michael Sheposcc490b42020-08-26 12:53:01 -0500561 Delete Error Log Entry ${entry} quiet=${quiet}
David Shaw79247e42020-06-18 17:16:02 -0500562 END
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600563
564
565Delete All Error Logs
566 [Documentation] Delete all error log entries using "DeleteAll" interface.
567
568 ${data}= Create Dictionary data=@{EMPTY}
569 ${resp}= Openbmc Post Request ${BMC_LOGGING_URI}action/DeleteAll
570 ... data=${data}
571 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
572
573
574Get Elog URL List
575 [Documentation] Return error log entry list of URLs.
576
577 ${url_list}= Read Properties /xyz/openbmc_project/logging/entry/
578 Sort List ${url_list}
579 [Return] ${url_list}
580
581
582Get BMC Flash Chip Boot Side
583 [Documentation] Return the BMC flash chip boot side.
George Keishing034902d2017-11-10 13:15:38 -0600584
585 # Example:
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600586 # 0 - indicates chip select is current side.
587 # 32 - indicates chip select is alternate side.
George Keishing034902d2017-11-10 13:15:38 -0600588
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600589 ${boot_side} ${stderr} ${rc}= BMC Execute Command
590 ... cat /sys/class/watchdog/watchdog1/bootstatus
591
592 [Return] ${boot_side}
593
594
Sweta Potthuri7d3af3c2018-01-29 03:07:07 -0600595Watchdog Object Should Exist
596 [Documentation] Check that watchdog object exists.
597
598 ${resp}= OpenBMC Get Request ${WATCHDOG_URI}host0
599 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
600 ... msg=Expected watchdog object does not exist.
Sweta Potthurif39022d2018-02-06 03:40:07 -0600601
602
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600603Get System LED State
604 [Documentation] Return the state of given system LED.
605 [Arguments] ${led_name}
Sweta Potthurif39022d2018-02-06 03:40:07 -0600606
607 # Description of argument(s):
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600608 # led_name System LED name (e.g. heartbeat, identify, beep).
Sweta Potthurif39022d2018-02-06 03:40:07 -0600609
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600610 ${state}= Read Attribute ${LED_PHYSICAL_URI}${led_name} State
611 [Return] ${state.rsplit('.', 1)[1]}
George Keishingb9f407b2018-02-20 00:07:46 -0600612
613
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600614Verify LED State
615 [Documentation] Checks if LED is in given state.
616 [Arguments] ${led_name} ${led_state}
617 # Description of argument(s):
618 # led_name System LED name (e.g. heartbeat, identify, beep).
619 # led_state LED state to be verified (e.g. On, Off).
George Keishingb9f407b2018-02-20 00:07:46 -0600620
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600621 ${state}= Get System LED State ${led_name}
622 Should Be Equal ${state} ${led_state}
George Keishingb9f407b2018-02-20 00:07:46 -0600623
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600624
625Get LED State XYZ
626 [Documentation] Returns state of given LED.
627 [Arguments] ${led_name}
628
629 # Description of argument(s):
630 # led_name Name of LED.
631
632 ${state}= Read Attribute ${LED_GROUPS_URI}${led_name} Asserted
633 # Returns the state of the LED, either On or Off.
634 [Return] ${state}
George Keishingb9f407b2018-02-20 00:07:46 -0600635
George Keishing78ce8dc2018-03-30 11:49:06 -0500636
637Verify Identify LED State
Alvin Wang32f7b3d2019-07-25 02:05:39 -0500638 [Documentation] Verify that the identify state of the LED group matches caller's expectations.
George Keishing78ce8dc2018-03-30 11:49:06 -0500639 [Arguments] ${expected_state}
640
641 # Description of argument(s):
Alvin Wang32f7b3d2019-07-25 02:05:39 -0500642 # expected_state The expected LED asserted state (1 = asserted, 0 = not asserted).
George Keishing78ce8dc2018-03-30 11:49:06 -0500643
Alvin Wang32f7b3d2019-07-25 02:05:39 -0500644 ${led_state}= Get LED State XYZ enclosure_identify
645 Should Be Equal ${led_state} ${expected_state} msg=Unexpected LED state.
Sweta Potthuri39255032018-03-28 10:12:14 -0500646
647Verify The Attribute
Joy Onyerikwuf4a807b2018-06-20 08:43:54 -0500648 [Documentation] Verify the given attribute.
Sweta Potthuri39255032018-03-28 10:12:14 -0500649 [Arguments] ${uri} ${attribute_name} ${attribute_value}
650
651 # Description of argument(s):
652 # uri URI path
653 # (e.g. "/xyz/openbmc_project/control/host0/TPMEnable").
654 # attribute_name Name of attribute to be verified (e.g. "TPMEnable").
655 # attribute_value The expected value of attribute (e.g. "1", "0", etc.)
656
657 ${output}= Read Attribute ${uri} ${attribute_name}
658 Should Be Equal ${attribute_value} ${output}
659 ... msg=Attribute "${attribute_name} does not have the expected value.
George Keishingcf0d7772018-05-04 08:22:50 -0500660
661
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600662New Set Power Policy
663 [Documentation] Set the given BMC power policy (new method).
664 [Arguments] ${policy}
George Keishingb4adfc72018-10-26 09:39:32 -0500665
666 # Description of argument(s):
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600667 # policy Power restore policy (e.g. ${ALWAYS_POWER_OFF}).
George Keishingc5fef582018-07-18 08:41:28 -0500668
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600669 ${valueDict}= Create Dictionary data=${policy}
670 Write Attribute
671 ... ${POWER_RESTORE_URI} PowerRestorePolicy data=${valueDict}
George Keishing216e5842018-08-31 14:58:15 -0500672
673
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600674Old Set Power Policy
675 [Documentation] Set the given BMC power policy (old method).
676 [Arguments] ${policy}
George Keishing3c004dc2018-10-10 07:16:47 -0500677
678 # Description of argument(s):
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600679 # policy Power restore policy (e.g. "ALWAYS_POWER_OFF").
680
681 ${valueDict}= create dictionary data=${policy}
682 Write Attribute ${HOST_SETTING} power_policy data=${valueDict}
George Keishing3c004dc2018-10-10 07:16:47 -0500683
684
George Keishinga54e06f2020-06-12 10:42:41 -0500685Redfish Set Power Restore Policy
686 [Documentation] Set the BMC power restore policy.
687 [Arguments] ${power_restore_policy}
688
689 # Description of argument(s):
690 # power_restore_policy Power restore policy (e.g. "AlwaysOff", "AlwaysOn", "LastState").
691
692 Redfish.Patch /redfish/v1/Systems/system body={"PowerRestorePolicy": "${power_restore_policy}"}
693 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
694
695
George Keishinga5cedb32020-07-17 15:50:34 -0500696Set Auto Reboot Setting
697 [Documentation] Set the given auto reboot setting (REST or Redfish).
698 [Arguments] ${value}
699
700 # Description of argument(s):
701 # value The reboot setting, 1 for enabling and 0 for disabling.
702
703 # This is to cater to boot call points and plugin script which will always
704 # send using value 0 or 1. This dictionary maps to redfish string values.
705 ${rest_redfish_dict}= Create Dictionary
706 ... 1=RetryAttempts
707 ... 0=Disabled
708
George Keishinge1879642020-12-09 13:20:15 -0600709 Run Keyword If ${REDFISH_SUPPORT_TRANS_STATE} == ${1}
George Keishinga5cedb32020-07-17 15:50:34 -0500710 ... Redfish Set Auto Reboot ${rest_redfish_dict["${value}"]}
George Keishinge1879642020-12-09 13:20:15 -0600711 ... ELSE
712 ... Set Auto Reboot ${value}
George Keishinga5cedb32020-07-17 15:50:34 -0500713
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600714Set Auto Reboot
715 [Documentation] Set the given auto reboot setting.
716 [Arguments] ${setting}
George Keishing3c004dc2018-10-10 07:16:47 -0500717
718 # Description of argument(s):
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600719 # setting The reboot setting, 1 for enabling and 0 for disabling.
George Keishing3c004dc2018-10-10 07:16:47 -0500720
Sridevi Ramesh68d72ff2019-02-04 09:24:46 -0600721 ${valueDict}= Convert To Integer ${setting}
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600722 ${data}= Create Dictionary data=${valueDict}
723 Write Attribute ${CONTROL_HOST_URI}/auto_reboot AutoReboot data=${data}
724 ${current_setting}= Get Auto Reboot
725 Should Be Equal As Integers ${current_setting} ${setting}
George Keishing3c004dc2018-10-10 07:16:47 -0500726
George Keishingc25c55d2018-10-30 02:23:44 -0500727
George Keishingc8a6dd22020-06-12 12:01:33 -0500728Redfish Set Auto Reboot
729 [Documentation] Set the given auto reboot setting.
730 [Arguments] ${setting}
731
732 # Description of argument(s):
733 # setting The reboot setting, "RetryAttempts" and "Disabled".
734
George Keishinga8cb28d2020-06-15 03:10:29 -0500735 Redfish.Patch /redfish/v1/Systems/system body={"Boot": {"AutomaticRetryConfig": "${setting}"}}
736 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
George Keishinga8cb28d2020-06-15 03:10:29 -0500737
George Keishingc8a6dd22020-06-12 12:01:33 -0500738 ${current_setting}= Redfish Get Auto Reboot
739 Should Be Equal As Strings ${current_setting} ${setting}
740
741
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600742Set Control Boot Mode
743 [Documentation] Set given boot mode on the boot object path attribute.
744 [Arguments] ${boot_path} ${boot_mode}
George Keishingc25c55d2018-10-30 02:23:44 -0500745
746 # Description of argument(s):
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600747 # boot_path Boot object path.
748 # Example:
749 # /xyz/openbmc_project/control/host0/boot
750 # /xyz/openbmc_project/control/host0/boot/one_time
751 # boot_mode Boot mode which need to be set.
752 # Example:
753 # "xyz.openbmc_project.Control.Boot.Mode.Modes.Regular"
George Keishingc25c55d2018-10-30 02:23:44 -0500754
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600755 ${valueDict}= Create Dictionary data=${boot_mode}
756 Write Attribute ${boot_path} BootMode data=${valueDict}
George Keishingc25c55d2018-10-30 02:23:44 -0500757
Steven Sombarf60cbcf2018-12-07 08:12:18 -0600758
759Is Power On
760 [Documentation] Verify that the BMC chassis state is on.
761 ${state}= Get Power State
762 Should be equal ${state} ${1}
763
764
765Is Power Off
766 [Documentation] Verify that the BMC chassis state is off.
767 ${state}= Get Power State
768 Should be equal ${state} ${0}
Sivas SRR0e3bc6d2019-04-23 08:36:35 -0500769
770
771CLI Get BMC DateTime
772 [Documentation] Returns BMC date time from date command.
773
774 ${bmc_time_via_date} ${stderr} ${rc}= BMC Execute Command date +"%Y-%m-%d %H:%M:%S" print_err=1
775 [Return] ${bmc_time_via_date}
George Keishing61364e52019-10-01 12:01:19 -0500776
777
778Update Root Password
779 [Documentation] Update system "root" user password.
780 [Arguments] ${openbmc_password}=${OPENBMC_PASSWORD}
781
782 # Description of argument(s):
783 # openbmc_password The root password for the open BMC system.
784
785 @{password}= Create List ${openbmc_password}
786 ${data}= Create Dictionary data=@{password}
787
788 ${headers}= Create Dictionary Content-Type=application/json X-Auth-Token=${XAUTH_TOKEN}
789 ${resp}= Post Request openbmc ${BMC_USER_URI}root/action/SetPassword
790 ... data=${data} headers=${headers}
791 Valid Value resp.status_code [${HTTP_OK}]
Sushil Singh6624ce52020-01-22 00:53:41 -0600792
793
794Get Post Boot Action
795 [Documentation] Get post boot action.
796
George Keishing879f0842020-02-05 11:00:47 -0600797 # Post code update action dictionary.
Sushil Singh6624ce52020-01-22 00:53:41 -0600798 #
799 # {
800 # BMC image: {
801 # OnReset: Redfish OBMC Reboot (off),
802 # Immediate: Wait For Reboot start_boot_seconds=${state['epoch_seconds']}
803 # },
804 # Host image: {
George Keishinge523fc02020-03-23 12:28:01 -0500805 # OnReset: RF SYS GracefulRestart,
Sushil Singh6624ce52020-01-22 00:53:41 -0600806 # Immediate: Wait State os_running_match_state 10 mins
807 # }
808 # }
809
810 ${code_base_dir_path}= Get Code Base Dir Path
811 ${post_code_update_actions}= Evaluate
812 ... json.load(open('${code_base_dir_path}data/applytime_table.json')) modules=json
813 Rprint Vars post_code_update_actions
814
815 [Return] ${post_code_update_actions}
816
George Keishing1eeff9c2020-06-16 04:03:34 -0500817
818Redfish Set Boot Default
Konstantin Aladyshev0043fc52021-04-15 12:07:29 +0300819 [Documentation] Set and Verify Boot source override
820 [Arguments] ${override_enabled} ${override_target} ${override_mode}=UEFI
George Keishing1eeff9c2020-06-16 04:03:34 -0500821
822 # Description of argument(s):
Konstantin Aladyshev0043fc52021-04-15 12:07:29 +0300823 # override_enabled Boot source override enable type.
George Keishing1eeff9c2020-06-16 04:03:34 -0500824 # ('Once', 'Continuous', 'Disabled').
Konstantin Aladyshev0043fc52021-04-15 12:07:29 +0300825 # override_target Boot source override target.
George Keishing1eeff9c2020-06-16 04:03:34 -0500826 # ('Pxe', 'Cd', 'Hdd', 'Diags', 'BiosSetup', 'None').
Konstantin Aladyshev0043fc52021-04-15 12:07:29 +0300827 # override_mode Boot source override mode (relevant only for x86 arch).
828 # ('Legacy', 'UEFI').
George Keishing1eeff9c2020-06-16 04:03:34 -0500829
830 ${data}= Create Dictionary BootSourceOverrideEnabled=${override_enabled}
831 ... BootSourceOverrideTarget=${override_target}
Konstantin Aladyshev0043fc52021-04-15 12:07:29 +0300832
833 Run Keyword If '${PLATFORM_ARCH_TYPE}' == 'x86'
834 ... Set To Dictionary ${data} BootSourceOverrideMode ${override_mode}
835
George Keishing1eeff9c2020-06-16 04:03:34 -0500836 ${payload}= Create Dictionary Boot=${data}
837
838 Redfish.Patch /redfish/v1/Systems/system body=&{payload}
839 ... valid_status_codes=[${HTTP_OK},${HTTP_NO_CONTENT}]
840
841 ${resp}= Redfish.Get Attribute /redfish/v1/Systems/system Boot
842 Should Be Equal As Strings ${resp["BootSourceOverrideEnabled"]} ${override_enabled}
843 Should Be Equal As Strings ${resp["BootSourceOverrideTarget"]} ${override_target}
Konstantin Aladyshev0043fc52021-04-15 12:07:29 +0300844 Run Keyword If '${PLATFORM_ARCH_TYPE}' == 'x86'
845 ... Should Be Equal As Strings ${resp["BootSourceOverrideMode"]} ${override_mode}
George Keishinge1879642020-12-09 13:20:15 -0600846
847
848# Redfish state keywords.
849
850Redfish Get BMC State
851 [Documentation] Return BMC health state.
852
853 # "Enabled" -> BMC Ready, "Starting" -> BMC NotReady
854
855 # Example:
856 # "Status": {
857 # "Health": "OK",
858 # "HealthRollup": "OK",
859 # "State": "Enabled"
860 # },
861
862 ${status}= Redfish.Get Attribute /redfish/v1/Managers/bmc Status
863 [Return] ${status["State"]}
864
865
866Redfish Get Host State
867 [Documentation] Return host power and health state.
868
869 # Refer: http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status
870
871 # Example:
872 # "PowerState": "Off",
873 # "Status": {
874 # "Health": "OK",
875 # "HealthRollup": "OK",
876 # "State": "StandbyOffline"
877 # },
878
879 ${chassis}= Redfish.Get Properties /redfish/v1/Chassis/chassis
880 [Return] ${chassis["PowerState"]} ${chassis["Status"]["State"]}
881
882
883Redfish Get Boot Progress
884 [Documentation] Return boot progress state.
885
886 # Example: /redfish/v1/Systems/system/
887 # "BootProgress": {
888 # "LastState": "OSRunning"
889 # },
890
891 ${boot_progress}= Redfish.Get Properties /redfish/v1/Systems/system/
892 [Return] ${boot_progress["BootProgress"]["LastState"]} ${boot_progress["Status"]["State"]}
893
894
895Redfish Get States
896 [Documentation] Return all the BMC and host states in dictionary.
George Keishing366033f2021-04-01 13:49:06 -0500897 [Timeout] 120 Seconds
George Keishinge1879642020-12-09 13:20:15 -0600898
899 # Refer: openbmc/docs/designs/boot-progress.md
900
George Keishing205f95f2021-03-10 02:25:53 -0600901 Redfish.Login
George Keishinge1879642020-12-09 13:20:15 -0600902
903 ${bmc_state}= Redfish Get BMC State
904 ${chassis_state} ${chassis_status}= Redfish Get Host State
905 ${boot_progress} ${host_state}= Redfish Get Boot Progress
906
907 ${states}= Create Dictionary
908 ... bmc=${bmc_state}
909 ... chassis=${chassis_state}
910 ... host=${host_state}
911 ... boot_progress=${boot_progress}
912
George Keishing64293c52021-03-24 08:21:23 -0500913 # Disable loggoing state to prevent huge log.html record when boot
914 # test is run in loops.
915 #Log ${states}
George Keishing95cf8652021-02-08 11:32:33 -0600916
George Keishinge1879642020-12-09 13:20:15 -0600917 [Return] ${states}
George Keishing95cf8652021-02-08 11:32:33 -0600918
919
920Is BMC Standby
921 [Documentation] Check if BMC is ready and host at standby.
922
923 ${standby_states}= Create Dictionary
924 ... bmc=Enabled
925 ... chassis=Off
926 ... host=Disabled
927 ... boot_progress=None
928
929 Wait Until Keyword Succeeds 3 min 10 sec Redfish Get States
930
931 Wait Until Keyword Succeeds 1 min 10 sec Match State ${standby_states}
932
933
934Match State
935 [Documentation] Check if the expected and current states are matched.
936 [Arguments] ${match_state}
937
938 # Description of argument(s):
939 # match_state Expected states in dictionary.
940
941 ${current_state}= Redfish Get States
942 Dictionaries Should Be Equal ${match_state} ${current_state}