blob: d6e150858da2ea6ae061440617b9dcdbd6358435 [file] [log] [blame]
George Keishingb88df3d2017-01-10 07:28:08 -06001*** Settings ***
George Keishingbec365b2017-01-19 01:28:41 -06002Resource ../lib/utils.robot
3Variables ../data/variables.py
George Keishingb88df3d2017-01-10 07:28:08 -06004
5*** Variables ***
6
Rahul Maheshwari2f8de6c2017-01-17 07:00:22 -06007${BMC_READY_STATE} Ready
8${BMC_NOT_READY_STATE} NotReady
George Keishingb88df3d2017-01-10 07:28:08 -06009${QUIET} ${0}
10
Michael Walshb2869542017-04-12 15:41:02 -050011# "1" indicates that the new "xyz" interface should be used.
12${OBMC_STATES_VERSION} ${1}
George Keishing43a021f2017-01-30 11:10:13 -060013
George Keishingb88df3d2017-01-10 07:28:08 -060014*** Keywords ***
15
16Initiate Host Boot
17 [Documentation] Initiate host power on.
Michael Walsh67ef6222017-03-21 14:48:26 -050018 [Arguments] ${wait}=${1}
19
20 # Description of arguments:
21 # wait Indicates that this keyword should wait for host running state.
22
George Keishingb88df3d2017-01-10 07:28:08 -060023 ${args}= Create Dictionary data=${HOST_POWERON_TRANS}
24 Write Attribute
25 ... ${HOST_STATE_URI} RequestedHostTransition data=${args}
26
Michael Walsh67ef6222017-03-21 14:48:26 -050027 # Does caller want to wait for status?
28 Run Keyword If '${wait}' == '${0}' Return From Keyword
29
George Keishingb88df3d2017-01-10 07:28:08 -060030 Wait Until Keyword Succeeds
31 ... 10 min 10 sec Is Host Running
32
33
34Initiate Host PowerOff
35 [Documentation] Initiate host power off.
Michael Walsh67ef6222017-03-21 14:48:26 -050036 [Arguments] ${wait}=${1}
37
38 # Description of arguments:
39 # wait Indicates that this keyword should wait for host off state.
40
George Keishingb88df3d2017-01-10 07:28:08 -060041 ${args}= Create Dictionary data=${HOST_POWEROFF_TRANS}
42 Write Attribute
43 ... ${HOST_STATE_URI} RequestedHostTransition data=${args}
44
Michael Walsh67ef6222017-03-21 14:48:26 -050045 # Does caller want to wait for status?
46 Run Keyword If '${wait}' == '${0}' Return From Keyword
47
George Keishing2c54e692017-07-10 13:07:02 -050048 # TODO: Reference to open-power/skiboot#81.
49 # Revert to 3 minutes once fixed.
George Keishingb88df3d2017-01-10 07:28:08 -060050 Wait Until Keyword Succeeds
George Keishing2c54e692017-07-10 13:07:02 -050051 ... 6 min 10 sec Is Host Off
George Keishingb88df3d2017-01-10 07:28:08 -060052
53
Rahul Maheshwarif7ead242017-02-14 01:59:42 -060054Initiate Host Reboot
55 [Documentation] Initiate host reboot via REST.
56
57 ${args}= Create Dictionary data=${HOST_REBOOT_TRANS}
58 Write Attribute
59 ... ${HOST_STATE_URI} RequestedHostTransition data=${args}
60 Is Host Rebooted
61
62
George Keishingb88df3d2017-01-10 07:28:08 -060063Is Host Running
Rahul Maheshwarif7ead242017-02-14 01:59:42 -060064 [Documentation] Check if host state is "Running".
George Keishingb88df3d2017-01-10 07:28:08 -060065 ${host_state}= Get Host State
George Keishing59d6cb42017-01-19 08:26:03 -060066 Should Be Equal Running ${host_state}
George Keishingb88df3d2017-01-10 07:28:08 -060067
68
69Is Host Off
Rahul Maheshwarif7ead242017-02-14 01:59:42 -060070 [Documentation] Check if host state is "Off".
George Keishingb88df3d2017-01-10 07:28:08 -060071 ${host_state}= Get Host State
George Keishing59d6cb42017-01-19 08:26:03 -060072 Should Be Equal Off ${host_state}
George Keishingb88df3d2017-01-10 07:28:08 -060073
Rahul Maheshwarif7ead242017-02-14 01:59:42 -060074
75Is Host Rebooted
76 [Documentation] Checks if host rebooted.
77
78 ${host_trans_state}= Get Host Trans State
79 Should Be Equal ${host_trans_state} Reboot
80 Is Host Running
81
82
83Is Chassis On
84 [Documentation] Check if chassis state is "On".
85 ${power_state}= Get Chassis Power State
86 Should Be Equal On ${power_state}
87
88
89Is Chassis Off
90 [Documentation] Check if chassis state is "Off".
91 ${power_state}= Get Chassis Power State
92 Should Be Equal Off ${power_state}
93
Rahul Maheshwarid01596e2017-02-20 00:04:42 -060094Is Host Quiesced
95 [Documentation] Check if host state is quiesced.
96 ${host_state}= Get Host State
Rahul Maheshwarid01596e2017-02-20 00:04:42 -060097 ${status}= Run Keyword And Return Status Should Be Equal
98 ... ${host_state} Quiesced
99 [Return] ${status}
100
George Keishingb88df3d2017-01-10 07:28:08 -0600101
Rahul Maheshwari09439a22017-02-23 01:10:05 -0600102Recover Quiesced Host
103 [Documentation] Recover host from quisced state.
104
105 ${resp}= Run Keyword And Return Status Is Host Quiesced
106 Run Keyword If '${resp}' == 'True'
107 ... Run Keywords Initiate Host PowerOff AND
108 ... Log HOST is recovered from quiesced state
109
110
George Keishingb88df3d2017-01-10 07:28:08 -0600111Get Host State
112 [Documentation] Return the state of the host as a string.
113 [Arguments] ${quiet}=${QUIET}
114 # quiet - Suppress REST output logging to console.
115 ${state}=
116 ... Read Attribute ${HOST_STATE_URI} CurrentHostState
117 ... quiet=${quiet}
George Keishing59d6cb42017-01-19 08:26:03 -0600118 [Return] ${state.rsplit('.', 1)[1]}
George Keishingb88df3d2017-01-10 07:28:08 -0600119
Rahul Maheshwarif7ead242017-02-14 01:59:42 -0600120Get Host Trans State
121 [Documentation] Return the transition state of host as a string.
122 ... e.g. On, Off, Reboot
123 [Arguments] ${quiet}=${QUIET}
124 # Description of arguments:
125 # quiet Suppress REST output logging to console.
126
127 ${state}=
128 ... Read Attribute ${HOST_STATE_URI} RequestedHostTransition
129 ... quiet=${quiet}
130 [Return] ${state.rsplit('.', 1)[1]}
George Keishingb88df3d2017-01-10 07:28:08 -0600131
132Get Chassis Power State
133 [Documentation] Return the power state of the Chassis
134 ... as a string.
135 [Arguments] ${quiet}=${QUIET}
136 # quiet - Suppress REST output logging to console.
137 ${state}=
138 ... Read Attribute ${CHASSIS_STATE_URI} CurrentPowerState
139 ... quiet=${quiet}
George Keishing59d6cb42017-01-19 08:26:03 -0600140 [Return] ${state.rsplit('.', 1)[1]}
Rahul Maheshwari2f8de6c2017-01-17 07:00:22 -0600141
142
143Get BMC State
144 [Documentation] Return the state of the BMC.
145 [Arguments] ${quiet}=${QUIET}
146 # quiet - Suppress REST output logging to console.
147 ${state}=
148 ... Read Attribute ${BMC_STATE_URI} CurrentBMCState quiet=${quiet}
149 [Return] ${state.rsplit('.', 1)[1]}
150
151
152Put BMC State
153 [Documentation] Put BMC in given state.
154 [Arguments] ${expected_state}
155 # expected_state - expected BMC state
156
157 ${bmc_state}= Get BMC State
158 Run Keyword If '${bmc_state}' == '${expected_state}'
159 ... Log BMC is already in ${expected_state} state
160 ... ELSE Run Keywords Initiate BMC Reboot AND
161 ... Wait for BMC state ${expected_state}
162
163
164Initiate BMC Reboot
165 [Documentation] Initiate BMC reboot.
166 ${args}= Create Dictionary data=${BMC_REBOOT_TRANS}
Rahul Maheshwari55a68e22017-04-20 04:36:21 -0500167
168 Run Keyword And Ignore Error Write Attribute
Rahul Maheshwari2f8de6c2017-01-17 07:00:22 -0600169 ... ${BMC_STATE_URI} RequestedBMCTransition data=${args}
170
171 ${session_active}= Check If BMC Reboot Is Initiated
172 Run Keyword If '${session_active}' == '${True}'
173 ... Fail msg=BMC Reboot didn't occur
174
175 Check If BMC is Up
176
177Check If BMC Reboot Is Initiated
178 [Documentation] Checks whether BMC Reboot is initiated by checking
179 ... BMC connection loss.
180 # Reboot adds 3 seconds delay before forcing reboot
181 # To minimize race conditions, we wait for 7 seconds
182 Sleep 7s
183 ${alive}= Run Keyword and Return Status
184 ... Open Connection And Log In
185 Return From Keyword If '${alive}' == '${False}' ${False}
186 [Return] ${True}
187
188Is BMC Ready
189 [Documentation] Check if BMC state is Ready.
190 ${bmc_state}= Get BMC State
191 Should Be Equal ${BMC_READY_STATE} ${bmc_state}
192
193Is BMC Not Ready
194 [Documentation] Check if BMC state is Not Ready.
195 ${bmc_state}= Get BMC State
196 Should Be Equal ${BMC_NOT_READY_STATE} ${bmc_state}
197
198Wait for BMC state
199 [Documentation] Wait until given BMC state is reached.
200 [Arguments] ${state}
201 # state - BMC state to wait for
202 Run Keyword If '${state}' == '${BMC_READY_STATE}'
203 ... Wait Until Keyword Succeeds
204 ... 10 min 10 sec Is BMC Ready
205 ... ELSE IF '${state}' == '${BMC_NOT_READY_STATE}'
206 ... Wait Until Keyword Succeeds
207 ... 10 min 10 sec Is BMC Not Ready
208 ... ELSE Fail msg=Invalid BMC state
George Keishing43a021f2017-01-30 11:10:13 -0600209
210
211Set State Interface Version
212 [Documentation] Set version to indicate which interface to use.
Rahul Maheshwari073f8ad2017-03-02 00:55:22 -0600213 ${resp}= Openbmc Get Request ${CHASSIS_STATE_URI}
George Keishing43a021f2017-01-30 11:10:13 -0600214 ${status}= Run Keyword And Return Status
215 ... Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
216 Run Keyword If '${status}' == '${True}'
217 ... Set Global Variable ${OBMC_STATES_VERSION} ${1}
218 ... ELSE
219 ... Set Global Variable ${OBMC_STATES_VERSION} ${0}
220
221
222Power Off Request
223 [Documentation] Select appropriate poweroff keyword.
Rahul Maheshwari073f8ad2017-03-02 00:55:22 -0600224 Run Keyword If '${OBMC_STATES_VERSION}' == '${0}'
George Keishing43a021f2017-01-30 11:10:13 -0600225 ... Initiate Power Off
226 ... ELSE
227 ... Initiate Host PowerOff
228
229
230Wait For BMC Ready
231 [Documentation] Check BMC state and wait for BMC Ready.
232 @{states}= Create List BMC_READY HOST_POWERED_OFF
Rahul Maheshwari073f8ad2017-03-02 00:55:22 -0600233 Run Keyword If '${OBMC_STATES_VERSION}' == '${0}'
George Keishing43a021f2017-01-30 11:10:13 -0600234 ... Wait Until Keyword Succeeds 10 min 10 sec
235 ... Verify BMC State ${states}
236 ... ELSE
237 ... Wait Until Keyword Succeeds 10 min 10 sec
238 ... Is BMC Ready
239
240