blob: e096e66c767d1e527b2c37a6a2fdff5fd6bd58de [file] [log] [blame]
Prashanth Kattiabbce3d2021-06-29 04:56:37 -05001*** Settings ***
2Documentation Test BMC manager protocol enable/disable functionality.
3
Prashanth Kattiabbce3d2021-06-29 04:56:37 -05004Resource ../../lib/bmc_redfish_resource.robot
5Resource ../../lib/openbmc_ffdc.robot
Prashanth Kattif59a73e2021-09-22 03:03:58 -05006Resource ../../lib/protocol_setting_utils.robot
Prashanth Kattiabbce3d2021-06-29 04:56:37 -05007
Brian Ma274b7242021-12-09 09:00:45 +08008Suite Setup Suite Setup Execution
9Suite Teardown Run Keywords Enable IPMI Protocol ${initial_ipmi_state} AND Redfish.Logout
Prashanth Katti2e413452021-07-13 02:26:45 -050010Test Teardown FFDC On Test Case Fail
Prashanth Kattiabbce3d2021-06-29 04:56:37 -050011
12
Prashanth Katti70620172021-07-28 07:17:39 -050013*** Variables ***
14
meghagn6f1d9d82021-11-11 21:56:21 -060015${cmd_prefix} ipmitool -I lanplus -C 17 -p 623 -U ${IPMI_USERNAME} -P ${IPMI_PASSWORD}
Prashanth Katti70620172021-07-28 07:17:39 -050016
17
Prashanth Kattiabbce3d2021-06-29 04:56:37 -050018*** Test Cases ***
19
Prashanth Katti2e413452021-07-13 02:26:45 -050020Verify SSH Is Enabled By Default
21 [Documentation] Verify SSH is enabled by default.
22 [Tags] Verify_SSH_Is_Enabled_By_Default
23
24 # Check if SSH is enabled by default.
25 Verify SSH Protocol State ${True}
26
27
Prashanth Kattiabbce3d2021-06-29 04:56:37 -050028Enable SSH Protocol And Verify
29 [Documentation] Enable SSH protocol and verify.
30 [Tags] Enable_SSH_Protocol_And_Verify
31
32 Enable SSH Protocol ${True}
33
34 # Check if SSH is really enabled via Redfish.
35 Verify SSH Protocol State ${True}
36
37 # Check if SSH login and commands on SSH session work.
38 Verify SSH Login And Commands Work
39
40
41Disable SSH Protocol And Verify
42 [Documentation] Disable SSH protocol and verify.
George Keishing53a5c892022-07-19 22:40:52 -050043 [Tags] Disable_SSH_Protocol_And_Verify
Prashanth Kattiabbce3d2021-06-29 04:56:37 -050044 [Teardown] Enable SSH Protocol ${True}
45
46 # Disable SSH interface.
47 Enable SSH Protocol ${False}
48
49 # Check if SSH is really disabled via Redfish.
50 Verify SSH Protocol State ${False}
51
52 # Check if SSH login and commands fail.
53 ${status}= Run Keyword And Return Status
54 ... Verify SSH Login And Commands Work
55
56 Should Be Equal As Strings ${status} False
57 ... msg=SSH Login and commands are working after disabling SSH.
58
59
60Enable SSH Protocol And Check Persistency On BMC Reboot
61 [Documentation] Enable SSH protocol and verify persistency.
George Keishing53a5c892022-07-19 22:40:52 -050062 [Tags] Enable_SSH_Protocol_And_Check_Persistency_On_BMC_Reboot
Prashanth Kattiabbce3d2021-06-29 04:56:37 -050063
64 Enable SSH Protocol ${True}
65
66 # Reboot BMC and verify persistency.
Megha GNa4c40402022-07-21 03:15:57 -050067 Redfish OBMC Reboot (off) stack_mode=skip
Prashanth Kattiabbce3d2021-06-29 04:56:37 -050068
69 # Check if SSH is really enabled via Redfish.
70 Verify SSH Protocol State ${True}
71
72 # Check if SSH login and commands on SSH session work.
73 Verify SSH Login And Commands Work
74
75
76Disable SSH Protocol And Check Persistency On BMC Reboot
77 [Documentation] Disable SSH protocol and verify persistency.
George Keishing53a5c892022-07-19 22:40:52 -050078 [Tags] Disable_SSH_Protocol_And_Check_Persistency_On_BMC_Reboot
Prashanth Kattiabbce3d2021-06-29 04:56:37 -050079 [Teardown] Enable SSH Protocol ${True}
80
81 # Disable SSH interface.
82 Enable SSH Protocol ${False}
83
84 # Reboot BMC and verify persistency.
Megha GNa4c40402022-07-21 03:15:57 -050085 Redfish OBMC Reboot (off) stack_mode=skip
Prashanth Kattiabbce3d2021-06-29 04:56:37 -050086
87 # Check if SSH is really disabled via Redfish.
88 Verify SSH Protocol State ${False}
89
90 # Check if SSH login and commands fail.
91 ${status}= Run Keyword And Return Status
92 ... Verify SSH Login And Commands Work
93
94 Should Be Equal As Strings ${status} False
95 ... msg=SSH Login and commands are working after disabling SSH.
96
97
Prashanth Katti2e413452021-07-13 02:26:45 -050098Verify Disabling SSH Port Does Not Disable Serial Console Port
99 [Documentation] Verify disabling SSH does not disable serial console port.
100 [Tags] Verify_Disabling_SSH_Port_Does_Not_Disable_Serial_Console_Port
101 [Teardown] Enable SSH Protocol ${True}
102
103 # Disable SSH interface.
104 Enable SSH Protocol ${False}
105
106 # Check able to establish connection with serial port console.
107 Open Connection And Log In host=${OPENBMC_HOST} port=2200
108 Close All Connections
109
110
111Verify Existing SSH Session Gets Closed On Disabling SSH
112 [Documentation] Verify existing SSH session gets closed on disabling ssh.
113 [Tags] Verify_Existing_SSH_Session_Gets_Closed_On_Disabling_SSH
114 [Teardown] Enable SSH Protocol ${True}
115
116 # Open SSH connection.
117 Open Connection And Login
118
119 # Disable SSH interface.
120 Enable SSH Protocol ${False}
121
122 # Check if SSH is really disabled via Redfish.
123 Verify SSH Protocol State ${False}
124
125 # Try to execute CLI command on SSH connection.
126 # It should fail as disable SSH will close pre existing sessions.
127 ${status}= Run Keyword And Return Status
128 ... BMC Execute Command /sbin/ip addr
129
130 Should Be Equal As Strings ${status} False
131 ... msg=Disabling SSH has not closed existing SSH sessions.
132
133
Prashanth Katti70620172021-07-28 07:17:39 -0500134Enable IPMI Protocol And Verify
135 [Documentation] Enable IPMI protocol and verify.
136 [Tags] Enable_IPMI_Protocol_And_Verify
Prashanth Katti70620172021-07-28 07:17:39 -0500137
138 Enable IPMI Protocol ${True}
139
140 # Check if IPMI is really enabled via Redfish.
141 Verify IPMI Protocol State ${True}
142
143 # Check if IPMI commands starts working.
144 Verify IPMI Works lan print
145
146
147Disable IPMI Protocol And Verify
148 [Documentation] Disable IPMI protocol and verify.
149 [Tags] Disable_IPMI_Protocol_And_Verify
150
151 # Disable IPMI interface.
152 Enable IPMI Protocol ${False}
153
154 # Check if IPMI is really disabled via Redfish.
155 Verify IPMI Protocol State ${False}
156
157 # Check if IPMI commands fail.
158 ${status}= Run Keyword And Return Status
159 ... Verify IPMI Works lan print
160
161 Should Be Equal As Strings ${status} False
162 ... msg=IPMI commands are working after disabling IPMI.
163
164
meghagnef433de2022-02-08 00:57:52 -0600165Enable IPMI Protocol And Check Persistency On BMC Reboot
George Keishing33be3592022-03-08 08:52:25 -0600166 [Documentation] Set the IPMI protocol attribute to True, reset BMC, and verify
167 ... that the setting persists.
meghagnef433de2022-02-08 00:57:52 -0600168 [Tags] Enable_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot
169
170 Enable IPMI Protocol ${True}
171
172 Redfish OBMC Reboot (off) stack_mode=skip
173
174 # Check if the IPMI enabled is set.
175 Verify IPMI Protocol State ${True}
176
177 # Confirm that IPMI commands to access BMC work.
178 Verify IPMI Works lan print
179
180
181Disable IPMI Protocol And Check Persistency On BMC Reboot
George Keishing33be3592022-03-08 08:52:25 -0600182 [Documentation] Set the IPMI protocol attribute to False, reset BMC, and verify
183 ... that the setting persists.
meghagnef433de2022-02-08 00:57:52 -0600184 [Tags] Disable_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot
185
186 # Disable IPMI interface.
187 Enable IPMI Protocol ${False}
188
189 Redfish OBMC Reboot (off) stack_mode=skip
190
191 # Check if the IPMI disabled is set.
192 Verify IPMI Protocol State ${False}
193
194 # Confirm that IPMI connection request fails.
195 ${status}= Run Keyword And Return Status
196 ... Verify IPMI Works lan print
197
198 Should Be Equal As Strings ${status} False
199 ... msg=IPMI commands are working after disabling IPMI.
200
201
Megha GNe21e1a32022-08-09 00:26:13 -0500202Enable SSH And IPMI Protocol And Check Persistency On BMC Reboot
meghagn6f1d9d82021-11-11 21:56:21 -0600203 [Documentation] Set the SSH and IPMI protocol attributes to True, and verify
Megha GNe21e1a32022-08-09 00:26:13 -0500204 ... that the setting attribute value is boolean True after BMC reboot.
205 [Tags] Enable_SSH_And_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot
meghagn6f1d9d82021-11-11 21:56:21 -0600206
207 Set SSH And IPMI Protocol ${True} ${True}
208
209 # Check if SSH and IPMI enabled is set.
210 Verify SSH Protocol State ${True}
Megha GNa4c40402022-07-21 03:15:57 -0500211 Sleep ${NETWORK_TIMEOUT}s
meghagn6f1d9d82021-11-11 21:56:21 -0600212 Verify IPMI Protocol State ${True}
213
Megha GNe21e1a32022-08-09 00:26:13 -0500214 Redfish OBMC Reboot (off) stack_mode=skip
215
meghagn6f1d9d82021-11-11 21:56:21 -0600216 # Check if SSH login and IPMI commands work.
217 Verify SSH Login And Commands Work
218 Verify IPMI Works lan print
219
220
Megha GNe21e1a32022-08-09 00:26:13 -0500221Configure SSH And IPMI Settings And Verify
222 [Documentation] Set the SSH and IPMI protocol attribute to True/False, and verify.
223 [Tags] Configure_SSH_And_IPMI_Settings_And_Verify
224 [Template] Set SSH And IPMI Protocol
meghagn6f1d9d82021-11-11 21:56:21 -0600225 [Teardown] Enable SSH Protocol ${True}
226
Megha GNe21e1a32022-08-09 00:26:13 -0500227 # ssh_state ipmi_state
228 ${True} ${False}
229 ${True} ${True}
230 ${False} ${True}
231 ${False} ${False}
meghagn6f1d9d82021-11-11 21:56:21 -0600232
233
Megha G N7735cbb2022-11-15 23:22:10 -0600234Enable SSH And Disable IPMI Protocol And Check Persistency On BMC Reboot
235 [Documentation] Set the SSH to True and IPMI protocol attributes to False, and verify
236 ... the setting after BMC reboot.
237 [Tags] Enable_SSH_And_Disable_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot
238
239 Set SSH And IPMI Protocol ${True} ${False} ${True}
240
241
Prashanth Kattiabbce3d2021-06-29 04:56:37 -0500242*** Keywords ***
243
Brian Ma274b7242021-12-09 09:00:45 +0800244Suite Setup Execution
245 [Documentation] Do suite setup tasks.
246
247 Redfish.Login
248
249 ${state}= Run Keyword And Return Status Verify IPMI Protocol State
250 Set Suite Variable ${initial_ipmi_state} ${state}
Megha GNe21e1a32022-08-09 00:26:13 -0500251 Sleep ${NETWORK_TIMEOUT}s
Brian Ma274b7242021-12-09 09:00:45 +0800252
Brian Ma4ddcb4d2021-12-03 09:31:05 +0800253Is BMC LastResetTime Changed
Megha G N7735cbb2022-11-15 23:22:10 -0600254 [Documentation] return fail if BMC last reset time is not changed.
Brian Ma4ddcb4d2021-12-03 09:31:05 +0800255 [Arguments] ${reset_time}
256
257 ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime
258 Should Not Be Equal ${last_reset_time} ${reset_time}
259
260
261Redfish BMC Reboot
Megha G N7735cbb2022-11-15 23:22:10 -0600262 [Documentation] Use Redfish API reboot BMC and wait for BMC ready.
Brian Ma4ddcb4d2021-12-03 09:31:05 +0800263
264 # Get BMC last reset time for compare
265 ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime
266
267 # Reboot BMC by Redfish API
268 Redfish BMC Reset Operation
269
270 # Wait for BMC real reboot and Redfish API ready
271 Wait Until Keyword Succeeds 3 min 10 sec Is BMC LastResetTime Changed ${last_reset_time}
272
meghagn6f1d9d82021-11-11 21:56:21 -0600273
274Set SSH And IPMI Protocol
275 [Documentation] Set SSH and IPMI protocol state.
Megha G N7735cbb2022-11-15 23:22:10 -0600276 [Arguments] ${ssh_state} ${ipmi_state} ${persistency_check}=${False}
meghagn6f1d9d82021-11-11 21:56:21 -0600277
278 # Description of argument(s):
Megha GNe21e1a32022-08-09 00:26:13 -0500279 # ssh_state State of SSH to be set (e.g. True, False).
280 # ipmi_state State of IPMI to be set (e.g. True, False).
meghagn6f1d9d82021-11-11 21:56:21 -0600281
282 ${ssh_protocol_state}= Create Dictionary ProtocolEnabled=${ssh_state}
283 ${ipmi_protocol_state}= Create Dictionary ProtocolEnabled=${ipmi_state}
284 ${data}= Create Dictionary SSH=${ssh_protocol_state} IPMI=${ipmi_protocol_state}
285
286 Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body=&{data}
287 ... valid_status_codes=[${HTTP_NO_CONTENT}]
288
289 # Wait for timeout for new values to take effect.
290 Sleep ${NETWORK_TIMEOUT}s
Megha GNe21e1a32022-08-09 00:26:13 -0500291
Megha G N7735cbb2022-11-15 23:22:10 -0600292 Run Keyword if ${persistency_check} == ${True} Redfish OBMC Reboot (off)
Megha GNe21e1a32022-08-09 00:26:13 -0500293 Verify Protocol State ${ssh_state} ${ipmi_state}
294
295
296Verify Protocol State
297 [Documentation] Verify SSH and IPMI protocol state.
298 [Arguments] ${ssh_state} ${ipmi_state}
299
300 # Description of argument(s):
301 # ssh_state State of SSH to be verified (e.g. True, False).
302 # ipmi_state State of IPMI to be verified (e.g. True, False).
303
304 # Verify SSH state value.
305 ${status}= Run Keyword And Return Status
306 ... Verify SSH Login And Commands Work
307 Should Be Equal As Strings ${status} ${ssh_state}
308 ... msg=SSH states are not matching.
309
310 # Verify IPMI state value.
311 ${status}= Run Keyword And Return Status
312 ... Verify IPMI Works lan print
313
314 Should Be Equal As Strings ${status} ${ipmi_state}
315 ... msg=IPMI states are not matching.