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