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