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