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