1*** Settings *** 2Documentation This module will take whatever action is necessary 3... to bring the BMC to a stable, standby state. For our 4... purposes, a stable state is defined as: 5... - BMC is communicating 6... (pinging, sshing and REST commands working) 7... - Power state is 0 (off) 8... - BMC state is "Ready" 9... - HOST state is "Off" 10... - Boot policy is "RESTORE_LAST_STATE" 11... Power cycle system via PDU if specified 12... Prune archived journal logs 13 14Resource ../lib/utils.robot 15Resource ../lib/pdu/pdu.robot 16Resource ../lib/state_manager.robot 17 18*** Variables *** 19${HOST_SETTING} /org/openbmc/settings/host0 20 21*** Test Cases *** 22 23Get To Stable State 24 [Documentation] BMC cleanup drive to stable state 25 ... 1. PDU powercycle if specified 26 ... 1. Ping Test 27 ... 2. SSH Connection session Test 28 ... 3. REST Connection session Test 29 ... 4. Reboot BMC if REST Test failed 30 ... 5. Get BMC in Ready state if its not in this state 31 ... 6. Get Host in Off state if its not in this state 32 ... 7. Update restore policy 33 [Tags] Get_To_Stable_State 34 35 Run Keyword And Ignore Error Powercycle System Via PDU 36 37 Wait For Host To Ping ${OPENBMC_HOST} 1 mins 38 Open Connection And Log In host=${OPENBMC_HOST} 39 40 ${rest_status}= Run Keyword And Return Status Initialize OpenBMC 41 Run Keyword If '${rest_status}' == '${False}' 42 ... Reboot and Wait for BMC Online 43 44 ${ready_status}= Run Keyword And Return Status Is BMC Ready 45 Run Keyword If '${ready_status}' == '${False}' Put BMC State Ready 46 47 ${host_off_status}= Run Keyword And Return Status Is Host Off 48 Run Keyword If '${host_off_status}' == '${False}' Initiate Host PowerOff 49 50 Prune Journal Log 51 52 Run Keyword And Ignore Error Update Policy Setting RESTORE_LAST_STATE 53 54 55*** Keywords *** 56 57Reboot and Wait for BMC Online 58 [Documentation] Reboot BMC and wait for it to come online 59 ... and boot to standby 60 61 Trigger Warm Reset via Reboot 62 Wait Until Keyword Succeeds 63 ... 5 min 10 sec BMC Online Test 64 65 Wait For BMC Standby 66 67 68BMC Online Test 69 [Documentation] BMC ping, SSH, REST connection Test 70 71 ${l_status}= Run Keyword and Return Status 72 ... Verify Ping and REST Authentication 73 Run Keyword If '${l_status}' == '${False}' 74 ... Fail msg=System not in ideal state to continue [ERROR] 75 76 77Wait For BMC Standby 78 [Documentation] Wait Until BMC standby post BMC reboot 79 80 @{states}= Create List BMC_READY HOST_POWERED_OFF 81 Wait Until Keyword Succeeds 82 ... 10 min 10 sec Verify BMC State ${states} 83 84 85Get BMC State and Expect Standby 86 [Documentation] Get BMC state and should be at standby 87 88 @{states}= Create List BMC_READY HOST_POWERED_OFF 89 ${bmc_state}= Get BMC State Deprecated 90 Should Contain ${states} ${bmc_state} 91 92 93Update Policy Setting 94 [Documentation] Update the given restore policy 95 [Arguments] ${policy} 96 97 ${valueDict}= create dictionary data=${policy} 98 Write Attribute ${HOST_SETTING} power_policy data=${valueDict} 99 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy 100 Should Be Equal ${currentPolicy} ${policy} 101 102 103Trigger Warm Reset via Reboot 104 [Documentation] Execute reboot command on the remote BMC and 105 ... returns immediately. This keyword "Start Command" 106 ... returns nothing and does not wait for the command 107 ... execution to be finished. 108 Open Connection And Log In 109 110 Start Command /sbin/reboot 111 112 113Powercycle System Via PDU 114 [Documentation] AC cycle the system via PDU 115 116 Validate Parameters 117 PDU Power Cycle 118 Check If BMC is Up 5 min 10 sec 119 120 121Validate Parameters 122 Should Not Be Empty ${PDU_IP} 123 Should Not Be Empty ${PDU_TYPE} 124 Should Not Be Empty ${PDU_SLOT_NO} 125 Should Not Be Empty ${PDU_USERNAME} 126 Should Not Be Empty ${PDU_PASSWORD} 127