blob: 761a0846282086005aacb831b9f14fc8ba7d8fed [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
meghagn6f1d9d82021-11-11 21:56:21 -0600202Enable SSH And IPMI Protocol And Verify
203 [Documentation] Set the SSH and IPMI protocol attributes to True, and verify
204 ... that the setting attribute value is boolean True.
205 [Tags] Enable_SSH_And_IPMI_Protocol_And_Verify
206
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
214 # Check if SSH login and IPMI commands work.
215 Verify SSH Login And Commands Work
216 Verify IPMI Works lan print
217
218
219Disable SSH And IPMI Protocol And Verify
220 [Documentation] Set the SSH and IPMI protocol attributes to False, and verify
221 ... that both SSH login and IPMI commands does not work.
222 [Tags] Disable_SSH_And_IPMI_Protocol_And_Verify
223 [Teardown] Enable SSH Protocol ${True}
224
225 Set SSH And IPMI Protocol ${False} ${False}
226
227 # Check if SSH login and commands fail.
228 ${status}= Run Keyword And Return Status
229 ... Verify SSH Login And Commands Work
230
231 Should Be Equal As Strings ${status} False
232 ... msg=SSH Login and commands are working after disabling SSH.
233
234 # Check if IPMI commands fail.
235 ${status}= Run Keyword And Return Status
236 ... Verify IPMI Works lan print
237
238 Should Be Equal As Strings ${status} False
239 ... msg=IPMI commands are working after disabling IPMI.
240
241
242Enable SSH And Disable IPMI And Verify
243 [Documentation] Set the SSH protocol attribute to True and IPMI protocol attribute to False, and verify
244 ... that SSH login works and IPMI command does not work.
245 [Tags] Enable_SSH_And_Disable_IPMI_And_Verify
246
247 Set SSH And IPMI Protocol ${True} ${False}
248
249 Verify SSH Login And Commands Work
250
251 # Check if IPMI commands fail.
252 ${status}= Run Keyword And Return Status
253 ... Verify IPMI Works lan print
254
255 Should Be Equal As Strings ${status} False
256 ... msg=IPMI commands are working after disabling IPMI.
257
258
Prashanth Kattiabbce3d2021-06-29 04:56:37 -0500259*** Keywords ***
260
Brian Ma274b7242021-12-09 09:00:45 +0800261Suite Setup Execution
262 [Documentation] Do suite setup tasks.
263
264 Redfish.Login
265
266 ${state}= Run Keyword And Return Status Verify IPMI Protocol State
267 Set Suite Variable ${initial_ipmi_state} ${state}
268
269
Brian Ma4ddcb4d2021-12-03 09:31:05 +0800270Is BMC LastResetTime Changed
271 [Documentation] return fail if BMC last reset time is not changed
272 [Arguments] ${reset_time}
273
274 ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime
275 Should Not Be Equal ${last_reset_time} ${reset_time}
276
277
278Redfish BMC Reboot
279 [Documentation] Use Redfish API reboot BMC and wait for BMC ready
280
281 # Get BMC last reset time for compare
282 ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime
283
284 # Reboot BMC by Redfish API
285 Redfish BMC Reset Operation
286
287 # Wait for BMC real reboot and Redfish API ready
288 Wait Until Keyword Succeeds 3 min 10 sec Is BMC LastResetTime Changed ${last_reset_time}
289
meghagn6f1d9d82021-11-11 21:56:21 -0600290
291Set SSH And IPMI Protocol
292 [Documentation] Set SSH and IPMI protocol state.
293 [Arguments] ${ssh_state} ${ipmi_state}
294
295 # Description of argument(s):
296 # ssh_state state of SSH to be set(e.g. True, False).
297 # ipmi_state state of IPMI to be set(e.g. True, False).
298
299 ${ssh_protocol_state}= Create Dictionary ProtocolEnabled=${ssh_state}
300 ${ipmi_protocol_state}= Create Dictionary ProtocolEnabled=${ipmi_state}
301 ${data}= Create Dictionary SSH=${ssh_protocol_state} IPMI=${ipmi_protocol_state}
302
303 Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body=&{data}
304 ... valid_status_codes=[${HTTP_NO_CONTENT}]
305
306 # Wait for timeout for new values to take effect.
307 Sleep ${NETWORK_TIMEOUT}s