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