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 "ALWAYS_POWER_OFF" 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 20Resource ../lib/bmc_redfish_resource.robot 21Resource ../lib/bmc_redfish_utils.robot 22Library ../lib/gen_misc.py 23 24# Force the test to timedout to prevent test hanging. 25Test Timeout 10 minutes 26 27 28*** Variables *** 29${HOST_SETTING} /org/openbmc/settings/host0 30 31${ERROR_REGEX} xyz.openbmc_project.Software.BMC.Updater.service: Failed with result 'core-dump' 32 33*** Test Cases *** 34 35Get To Stable State 36 [Documentation] BMC cleanup drive to stable state 37 ... 1. PDU powercycle if specified 38 ... 1. Ping Test 39 ... 2. SSH Connection session Test 40 ... 3. REST Connection session Test 41 ... 4. Reboot BMC if REST Test failed 42 ... 5. Get BMC in Ready state if its not in this state 43 ... 6. Get Host in Off state if its not in this state 44 ... 7. Update restore policy 45 ... 8. Verify and Update MAC address. 46 [Tags] Get_To_Stable_State 47 48 Run Keyword And Ignore Error Powercycle System Via PDU 49 50 ${ping_status}= Run Keyword And Return Status 51 ... Wait For Host To Ping ${OPENBMC_HOST} 2 mins 52 53 # Check if the ping works using 1400 MTU. 54 #Run Keyword if ${ping_status} == ${True} MTU Ping Test 55 56 Run Keyword if ${ping_status} == ${False} 57 ... Fail ${OPENBMC_HOST} ping test failed. 58 59 Open Connection And Log In host=${OPENBMC_HOST} 60 61 Run Keyword If ${REDFISH_SUPPORTED} 62 ... Redfish Clean Up 63 ... ELSE 64 ... REST Clean Up 65 66 67 Prune Journal Log 68 Check For Current Boot Application Failures 69 70*** Keywords *** 71 72 73REST Clean Up 74 [Documentation] Check states, reboot if needed and poweroff. 75 76 Wait Until Keyword Succeeds 1 min 30 sec Initialize OpenBMC 77 78 ${ready_status}= Run Keyword And Return Status Is BMC Ready 79 Run Keyword If '${ready_status}' == '${False}' 80 ... Put BMC State Ready 81 ... ELSE 82 ... REST Power Off stack_mode=skip 83 84 Run Keyword And Ignore Error Set BMC Power Policy ${ALWAYS_POWER_OFF} 85 Run Keyword And Ignore Error Delete All Error Logs 86 Run Keyword And Ignore Error Delete All Dumps 87 88 89Redfish Clean Up 90 [Documentation] Check states, reboot if needed and poweroff. 91 92 Wait Until Keyword Succeeds 1 min 30 sec Redfish.Login 93 94 Redfish Power Off stack_mode=skip 95 96 Run Keyword And Ignore Error Redfish Set Power Restore Policy AlwaysOff 97 Run Keyword And Ignore Error Redfish Purge Event Log 98 Run Keyword And Ignore Error Redfish Delete All BMC Dumps 99 Run Keyword And Ignore Error Delete All Redfish Sessions 100 101 102BMC Online Test 103 [Documentation] BMC ping, SSH, REST connection Test 104 105 ${l_status}= Run Keyword and Return Status 106 ... Verify Ping and REST Authentication 107 Run Keyword If '${l_status}' == '${False}' 108 ... Fail msg=System not in ideal state to continue [ERROR] 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 139Check For Current Boot Application Failures 140 [Documentation] Parse the journal log and check for failures. 141 [Arguments] ${error_regex}=${ERROR_REGEX} 142 143 ${error_regex}= Escape Bash Quotes ${error_regex} 144 ${journal_log} ${stderr} ${rc}= BMC Execute Command 145 ... journalctl -b --no-pager | egrep '${error_regex}' ignore_err=1 146 147 Should Be Empty ${journal_log} 148 149 150Validate Parameters 151 [Documentation] Validate PDU parameters. 152 Should Not Be Empty ${PDU_IP} 153 Should Not Be Empty ${PDU_TYPE} 154 Should Not Be Empty ${PDU_SLOT_NO} 155 Should Not Be Empty ${PDU_USERNAME} 156 Should Not Be Empty ${PDU_PASSWORD} 157 158 159MTU Ping Test 160 [Documentation] Ping test using MTU. 161 [Arguments] ${mtu}=${1400} 162 163 # Description of argument(s): 164 # mtu The maximum transmission unit (MTU) of a network interface. 165 166 ${rc} ${output}= Run And Return RC And Output 167 ... ping -M do -s ${mtu} -c 10 ${OPENBMC_HOST} 168 Should Be Equal As Integers ${rc} 0 169 Should Not Contain ${output} 100% packet loss 170