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 17Resource ../lib/bmc_network_utils.robot 18Resource ../lib/bmc_cleanup.robot 19Resource ../lib/dump_utils.robot 20 21*** Variables *** 22${HOST_SETTING} /org/openbmc/settings/host0 23 24*** Test Cases *** 25 26Get To Stable State 27 [Documentation] BMC cleanup drive to stable state 28 ... 1. PDU powercycle if specified 29 ... 1. Ping Test 30 ... 2. SSH Connection session Test 31 ... 3. REST Connection session Test 32 ... 4. Reboot BMC if REST Test failed 33 ... 5. Get BMC in Ready state if its not in this state 34 ... 6. Get Host in Off state if its not in this state 35 ... 7. Update restore policy 36 ... 8. Verify and Update MAC address. 37 [Tags] Get_To_Stable_State 38 39 Run Keyword And Ignore Error Powercycle System Via PDU 40 41 Wait For Host To Ping ${OPENBMC_HOST} 2 mins 42 Run Keyword And Ignore Error 43 ... Open Connection And Log In host=${OPENBMC_HOST} 44 45 Wait Until Keyword Succeeds 46 ... 1 min 30 sec Initialize OpenBMC 47 48 ${ready_status}= Run Keyword And Return Status Is BMC Ready 49 Run Keyword If '${ready_status}' == '${False}' Put BMC State Ready 50 51 ${host_off_status}= Run Keyword And Return Status Is Host Off 52 Run Keyword If '${host_off_status}' == '${False}' Initiate Host PowerOff 53 54 Prune Journal Log 55 56 Run Keyword And Ignore Error Set BMC Power Policy ${RESTORE_LAST_STATE} 57 58 Run Keyword If '${MAC_ADDRESS}' != '${EMPTY}' 59 ... Check And Reset MAC 60 ${rc}= Execute Command find ${CLEANUP_DIR_PATH} 61 ... return_stdout=False return_rc=True 62 Run Keyword If '${CLEANUP_DIR_PATH}' != '${EMPTY}' and ${rc} == 0 63 ... Cleanup Dir 64 65 Delete Error Logs 66 Delete All Dumps 67 68*** Keywords *** 69 70Reboot and Wait for BMC Online 71 [Documentation] Reboot BMC and wait for it to come online 72 ... and boot to standby 73 74 Trigger Warm Reset via Reboot 75 Wait Until Keyword Succeeds 76 ... 5 min 10 sec BMC Online Test 77 78 Wait For BMC Standby 79 80 81BMC Online Test 82 [Documentation] BMC ping, SSH, REST connection Test 83 84 ${l_status}= Run Keyword and Return Status 85 ... Verify Ping and REST Authentication 86 Run Keyword If '${l_status}' == '${False}' 87 ... Fail msg=System not in ideal state to continue [ERROR] 88 89 90Wait For BMC Standby 91 [Documentation] Wait Until BMC standby post BMC reboot 92 93 @{states}= Create List BMC_READY HOST_POWERED_OFF 94 Wait Until Keyword Succeeds 95 ... 10 min 10 sec Verify BMC State ${states} 96 97 98Get BMC State and Expect Standby 99 [Documentation] Get BMC state and should be at standby 100 101 @{states}= Create List BMC_READY HOST_POWERED_OFF 102 ${bmc_state}= Get BMC State Deprecated 103 Should Contain ${states} ${bmc_state} 104 105 106Update Policy Setting 107 [Documentation] Update the given restore policy 108 [Arguments] ${policy} 109 110 ${valueDict}= create dictionary data=${policy} 111 Write Attribute ${HOST_SETTING} power_policy data=${valueDict} 112 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy 113 Should Be Equal ${currentPolicy} ${policy} 114 115 116Trigger Warm Reset via Reboot 117 [Documentation] Execute reboot command on the remote BMC and 118 ... returns immediately. This keyword "Start Command" 119 ... returns nothing and does not wait for the command 120 ... execution to be finished. 121 Open Connection And Log In 122 123 Start Command /sbin/reboot 124 125 126Powercycle System Via PDU 127 [Documentation] AC cycle the system via PDU 128 129 Validate Parameters 130 PDU Power Cycle 131 Check If BMC is Up 5 min 10 sec 132 133 134Validate Parameters 135 Should Not Be Empty ${PDU_IP} 136 Should Not Be Empty ${PDU_TYPE} 137 Should Not Be Empty ${PDU_SLOT_NO} 138 Should Not Be Empty ${PDU_USERNAME} 139 Should Not Be Empty ${PDU_PASSWORD} 140