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