blob: effcf408fbf5d3a044322165190a70e1133050ff [file] [log] [blame]
George Keishing78ea2dc2016-11-18 04:33:45 -06001*** 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)
Rahul Maheshwari2c725042017-01-29 22:55:28 -06008... - BMC state is "Ready"
9... - HOST state is "Off"
George Keishing78ea2dc2016-11-18 04:33:45 -060010... - Boot policy is "RESTORE_LAST_STATE"
George Keishing34d4b8d2016-12-07 08:35:29 -060011... Power cycle system via PDU if specified
George Keishing0bd59f12016-12-14 10:39:21 -060012... Prune archived journal logs
George Keishing78ea2dc2016-11-18 04:33:45 -060013
George Keishing78ea2dc2016-11-18 04:33:45 -060014Resource ../lib/utils.robot
George Keishing34d4b8d2016-12-07 08:35:29 -060015Resource ../lib/pdu/pdu.robot
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060016Resource ../lib/state_manager.robot
Michael Walsh1b0ceb22017-05-31 16:03:01 -050017Resource ../lib/bmc_network_utils.robot
Sunil Mec6fe312017-06-19 04:21:25 -050018Resource ../lib/bmc_cleanup.robot
George Keishing78ea2dc2016-11-18 04:33:45 -060019
20*** Variables ***
21${HOST_SETTING} /org/openbmc/settings/host0
22
Gunnar Mills7c8923f2016-12-12 21:19:52 -060023*** Test Cases ***
George Keishing78ea2dc2016-11-18 04:33:45 -060024
George Keishing62f94302017-01-31 07:00:52 -060025Get To Stable State
Rahul Maheshwari2c725042017-01-29 22:55:28 -060026 [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
Sunil M89fb0f52017-05-26 05:25:33 -050035 ... 8. Verify and Update MAC address.
George Keishing62f94302017-01-31 07:00:52 -060036 [Tags] Get_To_Stable_State
George Keishing78ea2dc2016-11-18 04:33:45 -060037
Rahul Maheshwari2c725042017-01-29 22:55:28 -060038 Run Keyword And Ignore Error Powercycle System Via PDU
George Keishing34d4b8d2016-12-07 08:35:29 -060039
George Keishing59fa0482017-03-02 10:01:09 -060040 Wait For Host To Ping ${OPENBMC_HOST} 2 mins
41 Run Keyword And Ignore Error
42 ... Open Connection And Log In host=${OPENBMC_HOST}
George Keishing78ea2dc2016-11-18 04:33:45 -060043
George Keishing59fa0482017-03-02 10:01:09 -060044 Wait Until Keyword Succeeds
45 ... 1 min 30 sec Initialize OpenBMC
George Keishing78ea2dc2016-11-18 04:33:45 -060046
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060047 ${ready_status}= Run Keyword And Return Status Is BMC Ready
48 Run Keyword If '${ready_status}' == '${False}' Put BMC State Ready
George Keishing78ea2dc2016-11-18 04:33:45 -060049
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060050 ${host_off_status}= Run Keyword And Return Status Is Host Off
51 Run Keyword If '${host_off_status}' == '${False}' Initiate Host PowerOff
George Keishing78ea2dc2016-11-18 04:33:45 -060052
George Keishing0bd59f12016-12-14 10:39:21 -060053 Prune Journal Log
54
George Keishing2e541792017-08-17 04:32:46 -050055 Run Keyword And Ignore Error Set BMC Power Policy ${RESTORE_LAST_STATE}
George Keishing78ea2dc2016-11-18 04:33:45 -060056
Sunil M89fb0f52017-05-26 05:25:33 -050057 Run Keyword If '${MAC_ADDRESS}' != '${EMPTY}'
58 ... Check And Reset MAC
Sunil M879be232017-07-13 08:07:17 -050059 ${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
Sunil Mec6fe312017-06-19 04:21:25 -050062 ... Cleanup Dir
63
George Keishingf1ada732017-08-18 15:10:46 -050064 Delete Error Logs
George Keishing78ea2dc2016-11-18 04:33:45 -060065
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
Gunnar Mills597ffa02016-12-06 11:26:53 -060082 ${l_status}= Run Keyword and Return Status
George Keishing78ea2dc2016-11-18 04:33:45 -060083 ... 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
George Keishing65a198e2017-02-06 12:40:06 -060096Get 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
George Keishing78ea2dc2016-11-18 04:33:45 -0600104Update Policy Setting
105 [Documentation] Update the given restore policy
Gunnar Mills38032802016-12-12 13:43:40 -0600106 [Arguments] ${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -0600107
Gunnar Mills597ffa02016-12-06 11:26:53 -0600108 ${valueDict}= create dictionary data=${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -0600109 Write Attribute ${HOST_SETTING} power_policy data=${valueDict}
110 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy
111 Should Be Equal ${currentPolicy} ${policy}
112
George Keishingd5123f72016-12-07 09:54:51 -0600113
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
George Keishing34d4b8d2016-12-07 08:35:29 -0600122
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}