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 20 21*** Variables *** 22${HOST_SETTING} /org/openbmc/settings/host0 23 24*** Test Cases *** 25 26Get To Stable State 27 [Documentation] BMC cleanup drive to stable state 28 ... 1. PDU powercycle if specified 29 ... 1. Ping Test 30 ... 2. SSH Connection session Test 31 ... 3. REST Connection session Test 32 ... 4. Reboot BMC if REST Test failed 33 ... 5. Get BMC in Ready state if its not in this state 34 ... 6. Get Host in Off state if its not in this state 35 ... 7. Update restore policy 36 ... 8. Verify and Update MAC address. 37 [Tags] Get_To_Stable_State 38 39 Run Keyword And Ignore Error Powercycle System Via PDU 40 41 Wait For Host To Ping ${OPENBMC_HOST} 2 mins 42 Run Keyword And Ignore Error 43 ... Open Connection And Log In host=${OPENBMC_HOST} 44 45 Wait Until Keyword Succeeds 46 ... 1 min 30 sec Initialize OpenBMC 47 48 ${ready_status}= Run Keyword And Return Status Is BMC Ready 49 Run Keyword If '${ready_status}' == '${False}' Put BMC State Ready 50 51 ${host_off_status}= Run Keyword And Return Status Is Host Off 52 Run Keyword If '${host_off_status}' == '${False}' Initiate Host PowerOff 53 54 Prune Journal Log 55 56 Run Keyword And Ignore Error Set BMC Power Policy ${ALWAYS_POWER_OFF} 57 58 # TODO: Enable MAC AES check latter. 59 # Reference : openbmc/openbmc-test-automation#998 60 #Run Keyword If '${MAC_ADDRESS}' != '${EMPTY}' 61 #... Check And Reset MAC 62 63 # TODO: Add new UBI File system cleanup. 64 # Reference : openbmc/openbmc-test-automation#998 65 #${rc}= Execute Command find ${CLEANUP_DIR_PATH} 66 #... return_stdout=False return_rc=True 67 #Run Keyword If '${CLEANUP_DIR_PATH}' != '${EMPTY}' and ${rc} == 0 68 #... Cleanup Dir 69 70 Run Keyword And Ignore Error Delete All Error Logs 71 Run Keyword And Ignore Error Delete All Dumps 72 Run Keyword And Ignore Error Remove Journald Logs 73 74*** Keywords *** 75 76BMC Online Test 77 [Documentation] BMC ping, SSH, REST connection Test 78 79 ${l_status}= Run Keyword and Return Status 80 ... Verify Ping and REST Authentication 81 Run Keyword If '${l_status}' == '${False}' 82 ... Fail msg=System not in ideal state to continue [ERROR] 83 84 85Update Policy Setting 86 [Documentation] Update the given restore policy 87 [Arguments] ${policy} 88 89 ${valueDict}= create dictionary data=${policy} 90 Write Attribute ${HOST_SETTING} power_policy data=${valueDict} 91 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy 92 Should Be Equal ${currentPolicy} ${policy} 93 94 95Trigger Warm Reset via Reboot 96 [Documentation] Execute reboot command on the remote BMC and 97 ... returns immediately. This keyword "Start Command" 98 ... returns nothing and does not wait for the command 99 ... execution to be finished. 100 Open Connection And Log In 101 102 Start Command /sbin/reboot 103 104 105Powercycle System Via PDU 106 [Documentation] AC cycle the system via PDU 107 108 Validate Parameters 109 PDU Power Cycle 110 Check If BMC is Up 5 min 10 sec 111 112 113Validate Parameters 114 Should Not Be Empty ${PDU_IP} 115 Should Not Be Empty ${PDU_TYPE} 116 Should Not Be Empty ${PDU_SLOT_NO} 117 Should Not Be Empty ${PDU_USERNAME} 118 Should Not Be Empty ${PDU_PASSWORD} 119