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