1*** Settings *** 2Documentation Test BMC manager protocol enable/disable functionality. 3 4Resource ../../lib/bmc_redfish_resource.robot 5Resource ../../lib/openbmc_ffdc.robot 6Resource ../../lib/protocol_setting_utils.robot 7 8Suite Setup Suite Setup Execution 9Suite Teardown Run Keywords Enable IPMI Protocol ${initial_ipmi_state} AND Redfish.Logout 10Test Teardown FFDC On Test Case Fail 11 12 13*** Variables *** 14 15${cmd_prefix} ipmitool -I lanplus -C 17 -p 623 -U ${IPMI_USERNAME} -P ${IPMI_PASSWORD} 16 17 18*** Test Cases *** 19 20Verify 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 28Enable 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. 43 [Tags] Disable_SSH_Protocol_And_Verify 44 [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. 62 [Tags] Enable_SSH_Protocol_And_Check_Persistency_On_BMC_Reboot 63 64 Enable SSH Protocol ${True} 65 66 # Reboot BMC and verify persistency. 67 Redfish OBMC Reboot (off) stack_mode=skip 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. 78 [Tags] Disable_SSH_Protocol_And_Check_Persistency_On_BMC_Reboot 79 [Teardown] Enable SSH Protocol ${True} 80 81 # Disable SSH interface. 82 Enable SSH Protocol ${False} 83 84 # Reboot BMC and verify persistency. 85 Redfish OBMC Reboot (off) stack_mode=skip 86 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 98Verify 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 134Enable IPMI Protocol And Verify 135 [Documentation] Enable IPMI protocol and verify. 136 [Tags] Enable_IPMI_Protocol_And_Verify 137 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 165Enable IPMI Protocol And Check Persistency On BMC Reboot 166 [Documentation] Set the IPMI protocol attribute to True, reset BMC, and verify 167 ... that the setting persists. 168 [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 182 [Documentation] Set the IPMI protocol attribute to False, reset BMC, and verify 183 ... that the setting persists. 184 [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 202Enable 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 Sleep ${NETWORK_TIMEOUT}s 212 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 259*** Keywords *** 260 261Suite 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 270Is 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 290 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 308