blob: 59da9ff6b996286b9f2e6841a7b509fec0cf64a8 [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 Keishingb88df3d2017-01-10 07:28:08 -060048 Wait Until Keyword Succeeds
49 ... 3 min 10 sec Is Host Off
50
51
Rahul Maheshwarif7ead242017-02-14 01:59:42 -060052Initiate Host Reboot
53 [Documentation] Initiate host reboot via REST.
54
55 ${args}= Create Dictionary data=${HOST_REBOOT_TRANS}
56 Write Attribute
57 ... ${HOST_STATE_URI} RequestedHostTransition data=${args}
58 Is Host Rebooted
59
60
George Keishingb88df3d2017-01-10 07:28:08 -060061Is Host Running
Rahul Maheshwarif7ead242017-02-14 01:59:42 -060062 [Documentation] Check if host state is "Running".
George Keishingb88df3d2017-01-10 07:28:08 -060063 ${host_state}= Get Host State
George Keishing59d6cb42017-01-19 08:26:03 -060064 Should Be Equal Running ${host_state}
George Keishingb88df3d2017-01-10 07:28:08 -060065
66
67Is Host Off
Rahul Maheshwarif7ead242017-02-14 01:59:42 -060068 [Documentation] Check if host state is "Off".
George Keishingb88df3d2017-01-10 07:28:08 -060069 ${host_state}= Get Host State
George Keishing59d6cb42017-01-19 08:26:03 -060070 Should Be Equal Off ${host_state}
George Keishingb88df3d2017-01-10 07:28:08 -060071
Rahul Maheshwarif7ead242017-02-14 01:59:42 -060072
73Is Host Rebooted
74 [Documentation] Checks if host rebooted.
75
76 ${host_trans_state}= Get Host Trans State
77 Should Be Equal ${host_trans_state} Reboot
78 Is Host Running
79
80
81Is Chassis On
82 [Documentation] Check if chassis state is "On".
83 ${power_state}= Get Chassis Power State
84 Should Be Equal On ${power_state}
85
86
87Is Chassis Off
88 [Documentation] Check if chassis state is "Off".
89 ${power_state}= Get Chassis Power State
90 Should Be Equal Off ${power_state}
91
Rahul Maheshwarid01596e2017-02-20 00:04:42 -060092Is Host Quiesced
93 [Documentation] Check if host state is quiesced.
94 ${host_state}= Get Host State
Rahul Maheshwarid01596e2017-02-20 00:04:42 -060095 ${status}= Run Keyword And Return Status Should Be Equal
96 ... ${host_state} Quiesced
97 [Return] ${status}
98
George Keishingb88df3d2017-01-10 07:28:08 -060099
Rahul Maheshwari09439a22017-02-23 01:10:05 -0600100Recover Quiesced Host
101 [Documentation] Recover host from quisced state.
102
103 ${resp}= Run Keyword And Return Status Is Host Quiesced
104 Run Keyword If '${resp}' == 'True'
105 ... Run Keywords Initiate Host PowerOff AND
106 ... Log HOST is recovered from quiesced state
107
108
George Keishingb88df3d2017-01-10 07:28:08 -0600109Get Host State
110 [Documentation] Return the state of the host as a string.
111 [Arguments] ${quiet}=${QUIET}
112 # quiet - Suppress REST output logging to console.
113 ${state}=
114 ... Read Attribute ${HOST_STATE_URI} CurrentHostState
115 ... quiet=${quiet}
George Keishing59d6cb42017-01-19 08:26:03 -0600116 [Return] ${state.rsplit('.', 1)[1]}
George Keishingb88df3d2017-01-10 07:28:08 -0600117
Rahul Maheshwarif7ead242017-02-14 01:59:42 -0600118Get Host Trans State
119 [Documentation] Return the transition state of host as a string.
120 ... e.g. On, Off, Reboot
121 [Arguments] ${quiet}=${QUIET}
122 # Description of arguments:
123 # quiet Suppress REST output logging to console.
124
125 ${state}=
126 ... Read Attribute ${HOST_STATE_URI} RequestedHostTransition
127 ... quiet=${quiet}
128 [Return] ${state.rsplit('.', 1)[1]}
George Keishingb88df3d2017-01-10 07:28:08 -0600129
130Get Chassis Power State
131 [Documentation] Return the power state of the Chassis
132 ... as a string.
133 [Arguments] ${quiet}=${QUIET}
134 # quiet - Suppress REST output logging to console.
135 ${state}=
136 ... Read Attribute ${CHASSIS_STATE_URI} CurrentPowerState
137 ... quiet=${quiet}
George Keishing59d6cb42017-01-19 08:26:03 -0600138 [Return] ${state.rsplit('.', 1)[1]}
Rahul Maheshwari2f8de6c2017-01-17 07:00:22 -0600139
140
141Get BMC State
142 [Documentation] Return the state of the BMC.
143 [Arguments] ${quiet}=${QUIET}
144 # quiet - Suppress REST output logging to console.
145 ${state}=
146 ... Read Attribute ${BMC_STATE_URI} CurrentBMCState quiet=${quiet}
147 [Return] ${state.rsplit('.', 1)[1]}
148
149
150Put BMC State
151 [Documentation] Put BMC in given state.
152 [Arguments] ${expected_state}
153 # expected_state - expected BMC state
154
155 ${bmc_state}= Get BMC State
156 Run Keyword If '${bmc_state}' == '${expected_state}'
157 ... Log BMC is already in ${expected_state} state
158 ... ELSE Run Keywords Initiate BMC Reboot AND
159 ... Wait for BMC state ${expected_state}
160
161
162Initiate BMC Reboot
163 [Documentation] Initiate BMC reboot.
164 ${args}= Create Dictionary data=${BMC_REBOOT_TRANS}
Rahul Maheshwari55a68e22017-04-20 04:36:21 -0500165
166 Run Keyword And Ignore Error Write Attribute
Rahul Maheshwari2f8de6c2017-01-17 07:00:22 -0600167 ... ${BMC_STATE_URI} RequestedBMCTransition data=${args}
168
169 ${session_active}= Check If BMC Reboot Is Initiated
170 Run Keyword If '${session_active}' == '${True}'
171 ... Fail msg=BMC Reboot didn't occur
172
173 Check If BMC is Up
174
175Check If BMC Reboot Is Initiated
176 [Documentation] Checks whether BMC Reboot is initiated by checking
177 ... BMC connection loss.
178 # Reboot adds 3 seconds delay before forcing reboot
179 # To minimize race conditions, we wait for 7 seconds
180 Sleep 7s
181 ${alive}= Run Keyword and Return Status
182 ... Open Connection And Log In
183 Return From Keyword If '${alive}' == '${False}' ${False}
184 [Return] ${True}
185
186Is BMC Ready
187 [Documentation] Check if BMC state is Ready.
188 ${bmc_state}= Get BMC State
189 Should Be Equal ${BMC_READY_STATE} ${bmc_state}
190
191Is BMC Not Ready
192 [Documentation] Check if BMC state is Not Ready.
193 ${bmc_state}= Get BMC State
194 Should Be Equal ${BMC_NOT_READY_STATE} ${bmc_state}
195
196Wait for BMC state
197 [Documentation] Wait until given BMC state is reached.
198 [Arguments] ${state}
199 # state - BMC state to wait for
200 Run Keyword If '${state}' == '${BMC_READY_STATE}'
201 ... Wait Until Keyword Succeeds
202 ... 10 min 10 sec Is BMC Ready
203 ... ELSE IF '${state}' == '${BMC_NOT_READY_STATE}'
204 ... Wait Until Keyword Succeeds
205 ... 10 min 10 sec Is BMC Not Ready
206 ... ELSE Fail msg=Invalid BMC state
George Keishing43a021f2017-01-30 11:10:13 -0600207
208
209Set State Interface Version
210 [Documentation] Set version to indicate which interface to use.
Rahul Maheshwari073f8ad2017-03-02 00:55:22 -0600211 ${resp}= Openbmc Get Request ${CHASSIS_STATE_URI}
George Keishing43a021f2017-01-30 11:10:13 -0600212 ${status}= Run Keyword And Return Status
213 ... Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
214 Run Keyword If '${status}' == '${True}'
215 ... Set Global Variable ${OBMC_STATES_VERSION} ${1}
216 ... ELSE
217 ... Set Global Variable ${OBMC_STATES_VERSION} ${0}
218
219
220Power Off Request
221 [Documentation] Select appropriate poweroff keyword.
Rahul Maheshwari073f8ad2017-03-02 00:55:22 -0600222 Run Keyword If '${OBMC_STATES_VERSION}' == '${0}'
George Keishing43a021f2017-01-30 11:10:13 -0600223 ... Initiate Power Off
224 ... ELSE
225 ... Initiate Host PowerOff
226
227
228Wait For BMC Ready
229 [Documentation] Check BMC state and wait for BMC Ready.
230 @{states}= Create List BMC_READY HOST_POWERED_OFF
Rahul Maheshwari073f8ad2017-03-02 00:55:22 -0600231 Run Keyword If '${OBMC_STATES_VERSION}' == '${0}'
George Keishing43a021f2017-01-30 11:10:13 -0600232 ... Wait Until Keyword Succeeds 10 min 10 sec
233 ... Verify BMC State ${states}
234 ... ELSE
235 ... Wait Until Keyword Succeeds 10 min 10 sec
236 ... Is BMC Ready
237
238