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 Redfish Delete All System Dumps 100 Run Keyword And Ignore Error Delete All Redfish Sessions 101 102 103BMC Online Test 104 [Documentation] BMC ping, SSH, REST connection Test 105 106 ${l_status}= Run Keyword and Return Status 107 ... Verify Ping and REST Authentication 108 Run Keyword If '${l_status}' == '${False}' 109 ... Fail msg=System not in ideal state to continue [ERROR] 110 111 112Update Policy Setting 113 [Documentation] Update the given restore policy 114 [Arguments] ${policy} 115 116 ${valueDict}= create dictionary data=${policy} 117 Write Attribute ${HOST_SETTING} power_policy data=${valueDict} 118 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy 119 Should Be Equal ${currentPolicy} ${policy} 120 121 122Trigger Warm Reset via Reboot 123 [Documentation] Execute reboot command on the remote BMC and 124 ... returns immediately. This keyword "Start Command" 125 ... returns nothing and does not wait for the command 126 ... execution to be finished. 127 Open Connection And Log In 128 129 Start Command /sbin/reboot 130 131 132Powercycle System Via PDU 133 [Documentation] AC cycle the system via PDU. 134 135 Validate Parameters 136 PDU Power Cycle 137 Check If BMC is Up 5 min 10 sec 138 139 140Check For Current Boot Application Failures 141 [Documentation] Parse the journal log and check for failures. 142 [Arguments] ${error_regex}=${ERROR_REGEX} 143 144 ${error_regex}= Escape Bash Quotes ${error_regex} 145 ${journal_log} ${stderr} ${rc}= BMC Execute Command 146 ... journalctl -b --no-pager | egrep '${error_regex}' ignore_err=1 147 148 Should Be Empty ${journal_log} 149 150 151Validate Parameters 152 [Documentation] Validate PDU parameters. 153 Should Not Be Empty ${PDU_IP} 154 Should Not Be Empty ${PDU_TYPE} 155 Should Not Be Empty ${PDU_SLOT_NO} 156 Should Not Be Empty ${PDU_USERNAME} 157 Should Not Be Empty ${PDU_PASSWORD} 158 159 160MTU Ping Test 161 [Documentation] Ping test using MTU. 162 [Arguments] ${mtu}=${1400} 163 164 # Description of argument(s): 165 # mtu The maximum transmission unit (MTU) of a network interface. 166 167 ${rc} ${output}= Run And Return RC And Output 168 ... ping -M do -s ${mtu} -c 10 ${OPENBMC_HOST} 169 Should Be Equal As Integers ${rc} 0 170 Should Not Contain ${output} 100% packet loss 171