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