xref: /openbmc/openbmc-test-automation/extended/standby_bmc.robot (revision 97ecb270b7e6afb058f8353d7bed4be9e727f9b8)
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
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  ${RESTORE_LAST_STATE}
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    Delete Error Logs
71    Delete All Dumps
72
73*** Keywords ***
74
75Reboot and Wait for BMC Online
76    [Documentation]    Reboot BMC and wait for it to come online
77    ...                and boot to standby
78
79    Trigger Warm Reset via Reboot
80    Wait Until Keyword Succeeds
81    ...    5 min   10 sec    BMC Online Test
82
83    Wait For BMC Standby
84
85
86BMC Online Test
87    [Documentation]   BMC ping, SSH, REST connection Test
88
89    ${l_status}=   Run Keyword and Return Status
90    ...   Verify Ping and REST Authentication
91    Run Keyword If  '${l_status}' == '${False}'
92    ...   Fail  msg=System not in ideal state to continue [ERROR]
93
94
95Wait For BMC Standby
96    [Documentation]   Wait Until BMC standby post BMC reboot
97
98    @{states}=   Create List   BMC_READY   HOST_POWERED_OFF
99    Wait Until Keyword Succeeds
100    ...    10 min   10 sec   Verify BMC State   ${states}
101
102
103Get BMC State and Expect Standby
104    [Documentation]   Get BMC state and should be at standby
105
106    @{states}=     Create List   BMC_READY   HOST_POWERED_OFF
107    ${bmc_state}=  Get BMC State Deprecated
108    Should Contain  ${states}   ${bmc_state}
109
110
111Update Policy Setting
112    [Documentation]   Update the given restore policy
113    [Arguments]   ${policy}
114
115    ${valueDict}=     create dictionary  data=${policy}
116    Write Attribute    ${HOST_SETTING}    power_policy   data=${valueDict}
117    ${currentPolicy}=  Read Attribute     ${HOST_SETTING}   power_policy
118    Should Be Equal    ${currentPolicy}   ${policy}
119
120
121Trigger Warm Reset via Reboot
122    [Documentation]    Execute reboot command on the remote BMC and
123    ...                returns immediately. This keyword "Start Command"
124    ...                returns nothing and does not wait for the command
125    ...                execution to be finished.
126    Open Connection And Log In
127
128    Start Command   /sbin/reboot
129
130
131Powercycle System Via PDU
132    [Documentation]   AC cycle the system via PDU
133
134    Validate Parameters
135    PDU Power Cycle
136    Check If BMC is Up   5 min    10 sec
137
138
139Validate Parameters
140    Should Not Be Empty   ${PDU_IP}
141    Should Not Be Empty   ${PDU_TYPE}
142    Should Not Be Empty   ${PDU_SLOT_NO}
143    Should Not Be Empty   ${PDU_USERNAME}
144    Should Not Be Empty   ${PDU_PASSWORD}
145