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