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