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 # TODO: Enable MAC AES check latter. 59 # Reference : openbmc/openbmc-test-automation#998 60 #Run Keyword If '${MAC_ADDRESS}' != '${EMPTY}' 61 #... Check And Reset MAC 62 63 # TODO: Add new UBI File system cleanup. 64 # Reference : openbmc/openbmc-test-automation#998 65 #${rc}= Execute Command find ${CLEANUP_DIR_PATH} 66 #... return_stdout=False return_rc=True 67 #Run Keyword If '${CLEANUP_DIR_PATH}' != '${EMPTY}' and ${rc} == 0 68 #... Cleanup Dir 69 70 Delete Error Logs 71 Delete All Dumps 72 73*** Keywords *** 74 75Reboot and Wait for BMC Online 76 [Documentation] Reboot BMC and wait for it to come online 77 ... and boot to standby 78 79 Trigger Warm Reset via Reboot 80 Wait Until Keyword Succeeds 81 ... 5 min 10 sec BMC Online Test 82 83 Wait For BMC Standby 84 85 86BMC Online Test 87 [Documentation] BMC ping, SSH, REST connection Test 88 89 ${l_status}= Run Keyword and Return Status 90 ... Verify Ping and REST Authentication 91 Run Keyword If '${l_status}' == '${False}' 92 ... Fail msg=System not in ideal state to continue [ERROR] 93 94 95Wait For BMC Standby 96 [Documentation] Wait Until BMC standby post BMC reboot 97 98 @{states}= Create List BMC_READY HOST_POWERED_OFF 99 Wait Until Keyword Succeeds 100 ... 10 min 10 sec Verify BMC State ${states} 101 102 103Get BMC State and Expect Standby 104 [Documentation] Get BMC state and should be at standby 105 106 @{states}= Create List BMC_READY HOST_POWERED_OFF 107 ${bmc_state}= Get BMC State Deprecated 108 Should Contain ${states} ${bmc_state} 109 110 111Update Policy Setting 112 [Documentation] Update the given restore policy 113 [Arguments] ${policy} 114 115 ${valueDict}= create dictionary data=${policy} 116 Write Attribute ${HOST_SETTING} power_policy data=${valueDict} 117 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy 118 Should Be Equal ${currentPolicy} ${policy} 119 120 121Trigger Warm Reset via Reboot 122 [Documentation] Execute reboot command on the remote BMC and 123 ... returns immediately. This keyword "Start Command" 124 ... returns nothing and does not wait for the command 125 ... execution to be finished. 126 Open Connection And Log In 127 128 Start Command /sbin/reboot 129 130 131Powercycle System Via PDU 132 [Documentation] AC cycle the system via PDU 133 134 Validate Parameters 135 PDU Power Cycle 136 Check If BMC is Up 5 min 10 sec 137 138 139Validate Parameters 140 Should Not Be Empty ${PDU_IP} 141 Should Not Be Empty ${PDU_TYPE} 142 Should Not Be Empty ${PDU_SLOT_NO} 143 Should Not Be Empty ${PDU_USERNAME} 144 Should Not Be Empty ${PDU_PASSWORD} 145