1*** Settings *** 2 3Documentation Utilities for Robot keywords that use REST. 4 5Resource ../lib/resource.txt 6Resource ../lib/rest_client.robot 7Resource ../lib/connection_client.robot 8Resource ../lib/boot_utils.robot 9Resource ../lib/common_utils.robot 10Library String 11Library DateTime 12Library Process 13Library OperatingSystem 14Library gen_print.py 15Library gen_robot_print.py 16Library gen_cmd.py 17Library gen_robot_keyword.py 18Library bmc_ssh_utils.py 19Library utils.py 20Library var_funcs.py 21Library SCPLibrary WITH NAME scp 22 23 24*** Variables *** 25 26${SYSTEM_SHUTDOWN_TIME} ${5} 27 28# Assign default value to QUIET for programs which may not define it. 29${QUIET} ${0} 30 31${HOST_SETTING} ${SETTINGS_URI}host0 32 33${boot_prog_method} ${EMPTY} 34${power_policy_setup} ${0} 35${bmc_power_policy_method} ${EMPTY} 36 37 38*** Keywords *** 39 40 41Verify Ping and REST Authentication 42 [Documentation] Verify ping and rest authentication. 43 ${l_ping}= Run Keyword And Return Status 44 ... Ping Host ${OPENBMC_HOST} 45 Run Keyword If '${l_ping}' == '${False}' 46 ... Fail msg=Ping Failed 47 48 ${l_rest}= Run Keyword And Return Status 49 ... Initialize OpenBMC 50 Run Keyword If '${l_rest}' == '${False}' 51 ... Fail msg=REST Authentication Failed 52 53 # Just to make sure the SSH is working for SCP 54 Open Connection And Log In 55 ${system} ${stderr}= Execute Command hostname return_stderr=True 56 Should Be Empty ${stderr} 57 58 59Check If BMC is Up 60 [Documentation] Wait for Host to be online. Checks every X seconds 61 ... interval for Y minutes and fails if timed out. 62 ... Default MAX timedout is 10 min, interval 10 seconds. 63 [Arguments] ${max_timeout}=${OPENBMC_REBOOT_TIMEOUT} min 64 ... ${interval}=10 sec 65 66 # Description of argument(s): 67 # max_timeout Maximum time to wait. 68 # This should be expressed in Robot Framework's time format 69 # (e.g. "10 minutes"). 70 # interfal Interval to wait between status checks. 71 # This should be expressed in Robot Framework's time format 72 # (e.g. "5 seconds"). 73 74 Wait Until Keyword Succeeds 75 ... ${max_timeout} ${interval} Verify Ping and REST Authentication 76 77 78Flush REST Sessions 79 [Documentation] Removes all the active session objects 80 Delete All Sessions 81 82 83Trigger Host Watchdog Error 84 [Documentation] Inject host watchdog timeout error via REST. 85 [Arguments] ${milliseconds}=1000 ${sleep_time}=5s 86 87 # Description of argument(s): 88 # milliseconds The time watchdog timer value in milliseconds (e.g. 1000 = 89 # 1 second). 90 # sleep_time Time delay for host watchdog error to get injected. 91 # Default is 5 seconds. 92 93 ${data}= Create Dictionary 94 ... data=xyz.openbmc_project.State.Watchdog.Action.PowerCycle 95 ${status} ${result}= Run Keyword And Ignore Error 96 ... Read Attribute ${HOST_WATCHDOG_URI} ExpireAction 97 Run Keyword If '${status}' == 'PASS' 98 ... Write Attribute ${HOST_WATCHDOG_URI} ExpireAction data=${data} 99 100 ${data}= Create Dictionary data=${milliseconds} 101 Write Attribute ${HOST_WATCHDOG_URI} Interval data=${data} 102 103 ${data}= Create Dictionary data=${True} 104 Write Attribute ${HOST_WATCHDOG_URI} Enabled data=${data} 105 106 Sleep ${sleep_time} 107 108 109Login To OS Host 110 [Documentation] Login to OS Host and return the Login response code. 111 [Arguments] ${os_host}=${OS_HOST} ${os_username}=${OS_USERNAME} 112 ... ${os_password}=${OS_PASSWORD} 113 114 # Description of arguments: 115 # ${os_host} IP address of the OS Host. 116 # ${os_username} OS Host Login user name. 117 # ${os_password} OS Host Login passwrd. 118 119 REST Power On stack_mode=skip quiet=1 120 121 SSHLibrary.Open Connection ${os_host} 122 ${resp}= Login ${os_username} ${os_password} 123 [Return] ${resp} 124 125 126Initiate Auto Reboot 127 [Documentation] Initiate an auto reboot. 128 [Arguments] ${milliseconds}=5000 129 130 # Description of argument(s): 131 # milliseconds The number of milliseconds for the watchdog timer. 132 133 # Set the auto reboot policy. 134 Set Auto Reboot ${1} 135 # Set the watchdog timer. 136 Trigger Host Watchdog Error ${milliseconds} 137 138 139Initiate OS Host Reboot 140 [Documentation] Initiate an OS reboot. 141 [Arguments] ${os_host}=${OS_HOST} ${os_username}=${OS_USERNAME} 142 ... ${os_password}=${OS_PASSWORD} 143 144 # Description of argument(s): 145 # os_host The host name or IP address of the OS. 146 # os_username The username to be used to sign in to the OS. 147 # os_password The password to be used to sign in to the OS. 148 149 ${cmd_buf}= Run Keyword If '${os_username}' == 'root' 150 ... Set Variable reboot 151 ... ELSE 152 ... Set Variable echo ${os_password} | sudo -S reboot 153 154 ${output} ${stderr} ${rc}= OS Execute Command 155 ... ${cmd_buf} fork=${1} 156 157 158Initiate OS Host Power Off 159 [Documentation] Initiate an OS reboot. 160 [Arguments] ${os_host}=${OS_HOST} ${os_username}=${OS_USERNAME} 161 ... ${os_password}=${OS_PASSWORD} ${hard}=${0} 162 163 # Description of argument(s): 164 # os_host The DNS name or IP of the OS. 165 # os_username The username to be used to sign in to the OS. 166 # os_password The password to be used to sign in to the OS. 167 # hard Indicates whether to do a hard vs. soft power off. 168 169 ${time_string}= Run Keyword If ${hard} Set Variable ${SPACE}now 170 ... ELSE Set Variable ${EMPTY} 171 172 ${cmd_buf}= Run Keyword If '${os_username}' == 'root' 173 ... Set Variable shutdown${time_string} 174 ... ELSE 175 ... Set Variable echo ${os_password} | sudo -S shutdown${time_string} 176 177 ${output} ${stderr} ${rc}= OS Execute Command 178 ... ${cmd_buf} fork=${1} 179 180 181Set System LED State 182 [Documentation] Set given system LED via REST. 183 [Arguments] ${led_name} ${led_state} 184 # Description of argument(s): 185 # led_name System LED name (e.g. heartbeat, identify, beep). 186 # led_state LED state to be set (e.g. On, Off). 187 188 ${args}= Create Dictionary 189 ... data=xyz.openbmc_project.Led.Physical.Action.${led_state} 190 Write Attribute ${LED_PHYSICAL_URI}${led_name} State data=${args} 191 192 Verify LED State ${led_name} ${led_state} 193 194 195Read Turbo Setting Via REST 196 [Documentation] Return turbo setting via REST. 197 # Returns 1 if TurboAllowed, 0 if not. 198 199 ${turbo_setting}= Read Attribute 200 ... ${CONTROL_HOST_URI}turbo_allowed TurboAllowed 201 [Return] ${turbo_setting} 202 203 204Set Turbo Setting Via REST 205 [Documentation] Set turbo setting via REST. 206 [Arguments] ${setting} ${verify}=${False} 207 208 # Description of argument(s): 209 # setting State to set TurboAllowed, 1=allowed, 0=not allowed. 210 # verify If True, read the TurboAllowed setting to confirm. 211 212 ${data}= Create Dictionary data=${${setting}} 213 Write Attribute ${CONTROL_HOST_URI}turbo_allowed TurboAllowed 214 ... verify=${verify} data=${data} 215 216 217Set REST Logging Policy 218 [Documentation] Enable or disable REST logging setting. 219 [Arguments] ${policy_setting}=${True} 220 221 # Description of argument(s): 222 # policy_setting The policy setting value which can be either 223 # True or False. 224 225 ${log_dict}= Create Dictionary data=${policy_setting} 226 Write Attribute ${BMC_LOGGING_URI}${/}rest_api_logs Enabled 227 ... data=${log_dict} verify=${1} expected_value=${policy_setting} 228 229 230Old Get Boot Progress 231 [Documentation] Get the boot progress the old way (via org location). 232 [Arguments] ${quiet}=${QUIET} 233 234 # Description of argument(s): 235 # quiet Indicates whether this keyword should run without any output to 236 # the console. 237 238 ${state}= Read Attribute ${OPENBMC_BASE_URI}sensors/host/BootProgress 239 ... value quiet=${quiet} 240 241 [Return] ${state} 242 243 244Set Boot Progress Method 245 [Documentation] Set the boot_prog_method to either 'Old' or 'New'. 246 247 # The boot progress data has moved from an 'org' location to an 'xyz' 248 # location. This keyword will determine whether the new method of getting 249 # the boot progress is valid and will set the global boot_prog_method 250 # variable accordingly. If boot_prog_method is already set (either by a 251 # prior call to this function or via a -v parm), this keyword will simply 252 # return. 253 254 # Note: There are interim builds that contain boot_progress in both the 255 # old and the new location values. It is nearly impossible for this 256 # keyword to determine whether the old boot_progress or the new one is 257 # active. When using such builds where the old boot_progress is active, 258 # the only recourse users will have is that they may specify 259 # -v boot_prog_method:Old to force old behavior on such builds. 260 261 Run Keyword If '${boot_prog_method}' != '${EMPTY}' Return From Keyword 262 263 ${new_status} ${new_value}= Run Keyword And Ignore Error 264 ... New Get Boot Progress 265 # If the new style read fails, the method must necessarily be "Old". 266 Run Keyword If '${new_status}' == 'PASS' 267 ... Run Keywords 268 ... Set Global Variable ${boot_prog_method} New AND 269 ... Rqpvars boot_prog_method AND 270 ... Return From Keyword 271 272 # Default method is "Old". 273 Set Global Variable ${boot_prog_method} Old 274 Rqpvars boot_prog_method 275 276 277Initiate Power On 278 [Documentation] Initiates the power on and waits until the Is Power On 279 ... keyword returns that the power state has switched to on. 280 [Arguments] ${wait}=${1} 281 282 # Description of argument(s): 283 # wait Indicates whether to wait for a powered on state after issuing 284 # the power on command. 285 286 @{arglist}= Create List 287 ${args}= Create Dictionary data=@{arglist} 288 ${resp}= Call Method ${OPENBMC_BASE_URI}control/chassis0/ powerOn 289 ... data=${args} 290 should be equal as strings ${resp.status_code} ${HTTP_OK} 291 292 # Does caller want to wait for power on status? 293 Run Keyword If '${wait}' == '${0}' Return From Keyword 294 Wait Until Keyword Succeeds 3 min 10 sec Is Power On 295 296 297Initiate Power Off 298 [Documentation] Initiates the power off and waits until the Is Power Off 299 ... keyword returns that the power state has switched to off. 300 301 @{arglist}= Create List 302 ${args}= Create Dictionary data=@{arglist} 303 ${resp}= Call Method ${OPENBMC_BASE_URI}control/chassis0/ powerOff 304 ... data=${args} 305 should be equal as strings ${resp.status_code} ${HTTP_OK} 306 Wait Until Keyword Succeeds 1 min 10 sec Is Power Off 307 308 309Get Boot Progress 310 [Documentation] Get the boot progress and return it. 311 [Arguments] ${quiet}=${QUIET} 312 313 # Description of argument(s): 314 # quiet Indicates whether this keyword should run without any output to 315 # the console. 316 317 Set Boot Progress Method 318 ${state}= Run Keyword If '${boot_prog_method}' == 'New' 319 ... New Get Boot Progress quiet=${quiet} 320 ... ELSE 321 ... Old Get Boot Progress quiet=${quiet} 322 323 [Return] ${state} 324 325 326New Get Boot Progress 327 [Documentation] Get the boot progress the new way (via xyz location). 328 [Arguments] ${quiet}=${QUIET} 329 330 # Description of argument(s): 331 # quiet Indicates whether this keyword should run without any output to 332 # the console. 333 334 ${state}= Read Attribute ${HOST_STATE_URI} BootProgress quiet=${quiet} 335 336 [Return] ${state.rsplit('.', 1)[1]} 337 338 339New Get Power Policy 340 [Documentation] Returns the BMC power policy (new method). 341 ${currentPolicy}= Read Attribute ${POWER_RESTORE_URI} PowerRestorePolicy 342 343 [Return] ${currentPolicy} 344 345 346Old Get Power Policy 347 [Documentation] Returns the BMC power policy (old method). 348 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy 349 350 [Return] ${currentPolicy} 351 352 353Get Auto Reboot 354 [Documentation] Returns auto reboot setting. 355 ${setting}= Read Attribute ${CONTROL_HOST_URI}/auto_reboot AutoReboot 356 357 [Return] ${setting} 358 359 360Trigger Warm Reset 361 [Documentation] Initiate a warm reset. 362 363 log to console "Triggering warm reset" 364 ${data}= create dictionary data=@{EMPTY} 365 ${resp}= openbmc post request 366 ... ${OPENBMC_BASE_URI}control/bmc0/action/warmReset data=${data} 367 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 368 ${session_active}= Check If warmReset is Initiated 369 Run Keyword If '${session_active}' == '${True}' 370 ... Fail msg=warm reset didn't occur 371 372 Sleep ${SYSTEM_SHUTDOWN_TIME}min 373 Check If BMC Is Up 374 375 376Get Power State 377 [Documentation] Returns the power state as an integer. Either 0 or 1. 378 [Arguments] ${quiet}=${QUIET} 379 380 # Description of argument(s): 381 # quiet Indicates whether this keyword should run without any output to 382 # the console. 383 384 @{arglist}= Create List 385 ${args}= Create Dictionary data=@{arglist} 386 387 ${resp}= Call Method ${OPENBMC_BASE_URI}control/chassis0/ getPowerState 388 ... data=${args} quiet=${quiet} 389 Should be equal as strings ${resp.status_code} ${HTTP_OK} 390 ${content}= to json ${resp.content} 391 392 [Return] ${content["data"]} 393 394 395Clear BMC Gard Record 396 [Documentation] Clear gard records from the system. 397 398 @{arglist}= Create List 399 ${args}= Create Dictionary data=@{arglist} 400 ${resp}= Call Method 401 ... ${OPENPOWER_CONTROL}gard Reset data=${args} 402 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 403 404 405Flash PNOR 406 [Documentation] Calls flash bios update method to flash PNOR image 407 [Arguments] ${pnor_image} 408 409 # Description of argument(s): 410 # pnor_image The filename and path of the PNOR image 411 # (e.g. "/home/image/zaius.pnor"). 412 413 @{arglist}= Create List ${pnor_image} 414 ${args}= Create Dictionary data=@{arglist} 415 ${resp}= Call Method /org/openbmc/control/flash/bios/ update 416 ... data=${args} 417 should be equal as strings ${resp.status_code} ${HTTP_OK} 418 Wait Until Keyword Succeeds 2 min 10 sec Is PNOR Flashing 419 420 421Get Flash BIOS Status 422 [Documentation] Returns the status of the flash BIOS API as a string. For 423 ... example 'Flashing', 'Flash Done', etc 424 ${data}= Read Properties /org/openbmc/control/flash/bios 425 [Return] ${data['status']} 426 427 428Is PNOR Flashing 429 [Documentation] Get BIOS 'Flashing' status. This indicates that PNOR 430 ... flashing has started. 431 ${status}= Get Flash BIOS Status 432 Should Contain ${status} Flashing 433 434 435Is PNOR Flash Done 436 [Documentation] Get BIOS 'Flash Done' status. This indicates that the 437 ... PNOR flashing has completed. 438 ${status}= Get Flash BIOS Status 439 should be equal as strings ${status} Flash Done 440 441 442Create OS Console File Path 443 [Documentation] Create OS console file path name and return it. 444 [Arguments] ${log_file_path}=${EMPTY} 445 446 # Description of arguments: 447 # file_path The caller's candidate value. If this value is ${EMPTY}, this 448 # keyword will compose a file path name. Otherwise, this 449 # keyword will use the caller's file_path value. In either 450 # case, the value will be returned. 451 452 ${status}= Run Keyword And Return Status Variable Should Exist 453 ... ${TEST_NAME} 454 455 ${default_file_path}= Set Variable If ${status} == ${TRUE} 456 ... /tmp/${OPENBMC_HOST}_${TEST_NAME.replace(' ', '')}_os_console.txt 457 ... /tmp/${OPENBMC_HOST}_os_console.txt 458 459 ${log_file_path}= Set Variable If '${log_file_path}' == '${EMPTY}' 460 ... ${default_file_path} ${log_file_path} 461 462 [Return] ${log_file_path} 463 464 465Get Endpoint Paths 466 [Documentation] Returns all url paths ending with given endpoint 467 ... Example: 468 ... Given the following endpoint: cpu 469 ... This keyword will return: list of all urls ending with 470 ... cpu - 471 ... /org/openbmc/inventory/system/chassis/motherboard/cpu0, 472 ... /org/openbmc/inventory/system/chassis/motherboard/cpu1 473 [Arguments] ${path} ${endpoint} 474 475 # Description of arguments: 476 # path URL path for enumeration. 477 # endpoint Endpoint string (url path ending). 478 479 ${resp}= Read Properties ${path}/enumerate timeout=30 480 Log Dictionary ${resp} 481 482 ${list}= Get Dictionary Keys ${resp} 483 # For a given string, look for prefix and suffix for matching expression. 484 # Start of string followed by zero or more of any character followed by 485 # any digit or lower case character. 486 ${resp}= Get Matches ${list} regexp=^.*[0-9a-z_].${endpoint}\[0-9a-z]*$ 487 488 [Return] ${resp} 489 490 491Set BMC Power Policy 492 [Documentation] Set the given BMC power policy. 493 [Arguments] ${policy} 494 495 # Note that this function will translate the old style "RESTORE_LAST_STATE" 496 # policy to the new style "xyz.openbmc_project.Control.Power.RestorePolicy. 497 # Policy.Restore" for you. 498 499 # Description of argument(s): 500 # policy Power restore policy (e.g "RESTORE_LAST_STATE", 501 # ${RESTORE_LAST_STATE}). 502 503 # Set the bmc_power_policy_method to either 'Old' or 'New'. 504 Set Power Policy Method 505 # This translation helps bridge between old and new method for calling. 506 ${policy}= Translate Power Policy Value ${policy} 507 # Run the appropriate keyword. 508 Run Key ${bmc_power_policy_method} Set Power Policy \ ${policy} 509 ${currentPolicy}= Get System Power Policy 510 Should Be Equal ${currentPolicy} ${policy} 511 512 513Delete Error Logs 514 [Documentation] Delete error logs. 515 516 # Check if error logs entries exist, if not return. 517 ${resp}= OpenBMC Get Request ${BMC_LOGGING_ENTRY}${/}list quiet=${1} 518 Return From Keyword If ${resp.status_code} == ${HTTP_NOT_FOUND} 519 520 # Get the list of error logs entries and delete them all. 521 ${elog_entries}= Get URL List ${BMC_LOGGING_ENTRY} 522 :FOR ${entry} IN @{elog_entries} 523 \ Delete Error Log Entry ${entry} 524 525 526Delete All Error Logs 527 [Documentation] Delete all error log entries using "DeleteAll" interface. 528 529 ${data}= Create Dictionary data=@{EMPTY} 530 ${resp}= Openbmc Post Request ${BMC_LOGGING_URI}action/DeleteAll 531 ... data=${data} 532 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 533 534 535Get Elog URL List 536 [Documentation] Return error log entry list of URLs. 537 538 ${url_list}= Read Properties /xyz/openbmc_project/logging/entry/ 539 Sort List ${url_list} 540 [Return] ${url_list} 541 542 543Get BMC Flash Chip Boot Side 544 [Documentation] Return the BMC flash chip boot side. 545 546 # Example: 547 # 0 - indicates chip select is current side. 548 # 32 - indicates chip select is alternate side. 549 550 ${boot_side} ${stderr} ${rc}= BMC Execute Command 551 ... cat /sys/class/watchdog/watchdog1/bootstatus 552 553 [Return] ${boot_side} 554 555 556Update Root Password 557 [Documentation] Update system "root" user password. 558 [Arguments] ${openbmc_password}=${OPENBMC_PASSWORD} 559 560 # Description of argument(s): 561 # openbmc_password The root password for the open BMC system. 562 563 @{password}= Create List ${openbmc_password} 564 ${data}= Create Dictionary data=@{password} 565 566 ${headers}= Create Dictionary Content-Type=application/json 567 ${resp}= Post Request openbmc ${BMC_USER_URI}root/action/SetPassword 568 ... data=${data} headers=${headers} 569 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 570 ... msg=Updating the new root password failed, RC=${resp.status_code}. 571 572 573Watchdog Object Should Exist 574 [Documentation] Check that watchdog object exists. 575 576 ${resp}= OpenBMC Get Request ${WATCHDOG_URI}host0 577 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 578 ... msg=Expected watchdog object does not exist. 579 580 581Get System LED State 582 [Documentation] Return the state of given system LED. 583 [Arguments] ${led_name} 584 585 # Description of argument(s): 586 # led_name System LED name (e.g. heartbeat, identify, beep). 587 588 ${state}= Read Attribute ${LED_PHYSICAL_URI}${led_name} State 589 [Return] ${state.rsplit('.', 1)[1]} 590 591 592Verify LED State 593 [Documentation] Checks if LED is in given state. 594 [Arguments] ${led_name} ${led_state} 595 # Description of argument(s): 596 # led_name System LED name (e.g. heartbeat, identify, beep). 597 # led_state LED state to be verified (e.g. On, Off). 598 599 ${state}= Get System LED State ${led_name} 600 Should Be Equal ${state} ${led_state} 601 602 603Get LED State XYZ 604 [Documentation] Returns state of given LED. 605 [Arguments] ${led_name} 606 607 # Description of argument(s): 608 # led_name Name of LED. 609 610 ${state}= Read Attribute ${LED_GROUPS_URI}${led_name} Asserted 611 # Returns the state of the LED, either On or Off. 612 [Return] ${state} 613 614 615Verify Identify LED State 616 [Documentation] Verify the identify LED state 617 ... matches caller's expectations. 618 [Arguments] ${expected_state} 619 620 # Description of argument(s): 621 # expected_state The LED state expected by the caller ("Blink" or "Off"). 622 623 ${resp}= Read Attribute ${LED_PHYSICAL_URI}/front_id State 624 Should Be Equal ${resp} 625 ... xyz.openbmc_project.Led.Physical.Action.${expected_state} 626 ... msg=Unexpected LED state. 627 628 ${resp}= Read Attribute ${LED_PHYSICAL_URI}/rear_id State 629 Should Be Equal ${resp} 630 ... xyz.openbmc_project.Led.Physical.Action.${expected_state} 631 ... msg=Unexpected LED state. 632 633 634Verify The Attribute 635 [Documentation] Verify the given attribute. 636 [Arguments] ${uri} ${attribute_name} ${attribute_value} 637 638 # Description of argument(s): 639 # uri URI path 640 # (e.g. "/xyz/openbmc_project/control/host0/TPMEnable"). 641 # attribute_name Name of attribute to be verified (e.g. "TPMEnable"). 642 # attribute_value The expected value of attribute (e.g. "1", "0", etc.) 643 644 ${output}= Read Attribute ${uri} ${attribute_name} 645 Should Be Equal ${attribute_value} ${output} 646 ... msg=Attribute "${attribute_name} does not have the expected value. 647 648 649New Set Power Policy 650 [Documentation] Set the given BMC power policy (new method). 651 [Arguments] ${policy} 652 653 # Description of argument(s): 654 # policy Power restore policy (e.g. ${ALWAYS_POWER_OFF}). 655 656 ${valueDict}= Create Dictionary data=${policy} 657 Write Attribute 658 ... ${POWER_RESTORE_URI} PowerRestorePolicy data=${valueDict} 659 660 661Old Set Power Policy 662 [Documentation] Set the given BMC power policy (old method). 663 [Arguments] ${policy} 664 665 # Description of argument(s): 666 # policy Power restore policy (e.g. "ALWAYS_POWER_OFF"). 667 668 ${valueDict}= create dictionary data=${policy} 669 Write Attribute ${HOST_SETTING} power_policy data=${valueDict} 670 671 672Set Auto Reboot 673 [Documentation] Set the given auto reboot setting. 674 [Arguments] ${setting} 675 676 # Description of argument(s): 677 # setting The reboot setting, 1 for enabling and 0 for disabling. 678 679 ${valueDict}= Set Variable ${setting} 680 ${data}= Create Dictionary data=${valueDict} 681 Write Attribute ${CONTROL_HOST_URI}/auto_reboot AutoReboot data=${data} 682 ${current_setting}= Get Auto Reboot 683 Should Be Equal As Integers ${current_setting} ${setting} 684 685 686Set Control Boot Mode 687 [Documentation] Set given boot mode on the boot object path attribute. 688 [Arguments] ${boot_path} ${boot_mode} 689 690 # Description of argument(s): 691 # boot_path Boot object path. 692 # Example: 693 # /xyz/openbmc_project/control/host0/boot 694 # /xyz/openbmc_project/control/host0/boot/one_time 695 # boot_mode Boot mode which need to be set. 696 # Example: 697 # "xyz.openbmc_project.Control.Boot.Mode.Modes.Regular" 698 699 ${valueDict}= Create Dictionary data=${boot_mode} 700 Write Attribute ${boot_path} BootMode data=${valueDict} 701 702 703Is Power On 704 [Documentation] Verify that the BMC chassis state is on. 705 ${state}= Get Power State 706 Should be equal ${state} ${1} 707 708 709Is Power Off 710 [Documentation] Verify that the BMC chassis state is off. 711 ${state}= Get Power State 712 Should be equal ${state} ${0} 713