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${SETTING_WAIT_TIMEOUT} 30s 17 18 19*** Test Cases *** 20 21Verify SSH Is Enabled By Default 22 [Documentation] Verify SSH is enabled by default. 23 [Tags] Verify_SSH_Is_Enabled_By_Default 24 25 # Check if SSH is enabled by default. 26 Verify SSH Protocol State ${True} 27 28 29Enable SSH Protocol And Verify 30 [Documentation] Enable SSH protocol and verify. 31 [Tags] Enable_SSH_Protocol_And_Verify 32 33 Enable SSH Protocol ${True} 34 35 # Check if SSH is really enabled via Redfish. 36 Verify SSH Protocol State ${True} 37 38 # Check if SSH login and commands on SSH session work. 39 Verify SSH Login And Commands Work 40 41 42Disable SSH Protocol And Verify 43 [Documentation] Disable SSH protocol and verify. 44 [Tags] Disable_SSH_Protocol_And_Verify 45 [Teardown] Enable SSH Protocol ${True} 46 47 # Disable SSH interface. 48 Enable SSH Protocol ${False} 49 50 # Check if SSH is really disabled via Redfish. 51 Verify SSH Protocol State ${False} 52 53 # Check if SSH login and commands fail. 54 ${status}= Run Keyword And Return Status 55 ... Verify SSH Login And Commands Work 56 57 Should Be Equal As Strings ${status} False 58 ... msg=SSH Login and commands are working after disabling SSH. 59 60 61Enable SSH Protocol And Check Persistency On BMC Reboot 62 [Documentation] Enable SSH protocol and verify persistency. 63 [Tags] Enable_SSH_Protocol_And_Check_Persistency_On_BMC_Reboot 64 65 Enable SSH Protocol ${True} 66 67 # Reboot BMC and verify persistency. 68 Redfish OBMC Reboot (off) stack_mode=skip 69 70 # Check if SSH is really enabled via Redfish. 71 Verify SSH Protocol State ${True} 72 73 # Check if SSH login and commands on SSH session work. 74 Verify SSH Login And Commands Work 75 76 77Disable SSH Protocol And Check Persistency On BMC Reboot 78 [Documentation] Disable SSH protocol and verify persistency. 79 [Tags] Disable_SSH_Protocol_And_Check_Persistency_On_BMC_Reboot 80 [Teardown] Enable SSH Protocol ${True} 81 82 # Disable SSH interface. 83 Enable SSH Protocol ${False} 84 85 # Reboot BMC and verify persistency. 86 Redfish OBMC Reboot (off) stack_mode=skip 87 88 # Check if SSH is really disabled via Redfish. 89 Verify SSH Protocol State ${False} 90 91 # Check if SSH login and commands fail. 92 ${status}= Run Keyword And Return Status 93 ... Verify SSH Login And Commands Work 94 95 Should Be Equal As Strings ${status} False 96 ... msg=SSH Login and commands are working after disabling SSH. 97 98 99Verify Disabling SSH Port Does Not Disable Serial Console Port 100 [Documentation] Verify disabling SSH does not disable serial console port. 101 [Tags] Verify_Disabling_SSH_Port_Does_Not_Disable_Serial_Console_Port 102 [Teardown] Enable SSH Protocol ${True} 103 104 # Disable SSH interface. 105 Enable SSH Protocol ${False} 106 107 # Check able to establish connection with serial port console. 108 Open Connection And Log In host=${OPENBMC_HOST} port=2200 109 Close All Connections 110 111 112Verify Existing SSH Session Gets Closed On Disabling SSH 113 [Documentation] Verify existing SSH session gets closed on disabling ssh. 114 [Tags] Verify_Existing_SSH_Session_Gets_Closed_On_Disabling_SSH 115 [Teardown] Enable SSH Protocol ${True} 116 117 # Open SSH connection. 118 Open Connection And Login 119 120 # Disable SSH interface. 121 Enable SSH Protocol ${False} 122 123 # Check if SSH is really disabled via Redfish. 124 Verify SSH Protocol State ${False} 125 126 # Try to execute CLI command on SSH connection. 127 # It should fail as disable SSH will close pre existing sessions. 128 ${status}= Run Keyword And Return Status 129 ... BMC Execute Command /sbin/ip addr 130 131 Should Be Equal As Strings ${status} False 132 ... msg=Disabling SSH has not closed existing SSH sessions. 133 134 135Enable IPMI Protocol And Verify 136 [Documentation] Enable IPMI protocol and verify. 137 [Tags] Enable_IPMI_Protocol_And_Verify 138 139 Enable IPMI Protocol ${True} 140 141 # Check if IPMI is really enabled via Redfish. 142 Verify IPMI Protocol State ${True} 143 144 # Check if IPMI commands starts working. 145 Verify IPMI Works lan print 146 147 148Disable IPMI Protocol And Verify 149 [Documentation] Disable IPMI protocol and verify. 150 [Tags] Disable_IPMI_Protocol_And_Verify 151 152 # Disable IPMI interface. 153 Enable IPMI Protocol ${False} 154 155 # Check if IPMI is really disabled via Redfish. 156 Verify IPMI Protocol State ${False} 157 158 # Check if IPMI commands fail. 159 ${status}= Run Keyword And Return Status 160 ... Verify IPMI Works lan print 161 162 Should Be Equal As Strings ${status} False 163 ... msg=IPMI commands are working after disabling IPMI. 164 165 166Enable IPMI Protocol And Check Persistency On BMC Reboot 167 [Documentation] Set the IPMI protocol attribute to True, reset BMC, and verify 168 ... that the setting persists. 169 [Tags] Enable_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot 170 171 Enable IPMI Protocol ${True} 172 173 Redfish OBMC Reboot (off) stack_mode=skip 174 175 # Check if the IPMI enabled is set. 176 Verify IPMI Protocol State ${True} 177 178 # Confirm that IPMI commands to access BMC work. 179 Verify IPMI Works lan print 180 181 182Disable IPMI Protocol And Check Persistency On BMC Reboot 183 [Documentation] Set the IPMI protocol attribute to False, reset BMC, and verify 184 ... that the setting persists. 185 [Tags] Disable_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot 186 187 # Disable IPMI interface. 188 Enable IPMI Protocol ${False} 189 190 Redfish OBMC Reboot (off) stack_mode=skip 191 192 # Check if the IPMI disabled is set. 193 Verify IPMI Protocol State ${False} 194 195 # Confirm that IPMI connection request fails. 196 ${status}= Run Keyword And Return Status 197 ... Verify IPMI Works lan print 198 199 Should Be Equal As Strings ${status} False 200 ... msg=IPMI commands are working after disabling IPMI. 201 202 203Configure SSH And IPMI Settings And Verify 204 [Documentation] Set the SSH and IPMI protocol attribute to True/False, and verify. 205 [Tags] Configure_SSH_And_IPMI_Settings_And_Verify 206 [Template] Set SSH And IPMI Protocol 207 [Teardown] Run Keywords FFDC On Test Case Fail 208 ... AND Enable SSH Protocol ${True} 209 210 # ssh_state ipmi_state 211 ${True} ${False} 212 ${True} ${True} 213 ${False} ${True} 214 ${False} ${False} 215 216 217Configure SSH And IPMI Settings And Verify Persistency On BMC Reboot 218 [Documentation] Set the SSH and IPMI protocol attribute to True/False, and verify 219 ... it's persistency after BMC reboot. 220 [Tags] Configure_SSH_And_IPMI_Settings_And_Verify_Persistency_On_BMC_Reboot 221 [Template] Set SSH And IPMI Protocol 222 [Teardown] Run Keywords FFDC On Test Case Fail 223 ... AND Enable SSH Protocol ${True} 224 225 # ssh_state ipmi_state persistency_check 226 ${True} ${False} ${True} 227 ${True} ${True} ${True} 228 ${False} ${True} ${True} 229 ${False} ${False} ${True} 230 231 232*** Keywords *** 233 234Suite Setup Execution 235 [Documentation] Do suite setup tasks. 236 237 Redfish.Login 238 239 ${state}= Run Keyword And Return Status Verify IPMI Protocol State 240 Set Suite Variable ${initial_ipmi_state} ${state} 241 Sleep ${NETWORK_TIMEOUT}s 242 243Is BMC LastResetTime Changed 244 [Documentation] return fail if BMC last reset time is not changed. 245 [Arguments] ${reset_time} 246 247 ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime 248 Should Not Be Equal ${last_reset_time} ${reset_time} 249 250 251Redfish BMC Reboot 252 [Documentation] Use Redfish API reboot BMC and wait for BMC ready. 253 254 # Get BMC last reset time for compare 255 ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime 256 257 # Reboot BMC by Redfish API 258 Redfish BMC Reset Operation 259 260 # Wait for BMC real reboot and Redfish API ready 261 Wait Until Keyword Succeeds 3 min 10 sec Is BMC LastResetTime Changed ${last_reset_time} 262 263 264Set SSH And IPMI Protocol 265 [Documentation] Set SSH and IPMI protocol state. 266 [Arguments] ${ssh_state} ${ipmi_state} ${persistency_check}=${False} 267 268 # Description of argument(s): 269 # ssh_state State of SSH to be set (e.g. True, False). 270 # ipmi_state State of IPMI to be set (e.g. True, False). 271 272 ${ssh_protocol_state}= Create Dictionary ProtocolEnabled=${ssh_state} 273 ${ipmi_protocol_state}= Create Dictionary ProtocolEnabled=${ipmi_state} 274 ${data}= Create Dictionary SSH=${ssh_protocol_state} IPMI=${ipmi_protocol_state} 275 276 Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body=&{data} 277 ... valid_status_codes=[${HTTP_NO_CONTENT}] 278 279 # Wait for timeout for new values to take effect. 280 Sleep ${SETTING_WAIT_TIMEOUT} 281 282 Run Keyword if ${persistency_check} == ${True} 283 ... Redfish OBMC Reboot (off) stack_mode=skip 284 Verify Protocol State ${ssh_state} ${ipmi_state} 285 286 287Verify Protocol State 288 [Documentation] Verify SSH and IPMI protocol state. 289 [Arguments] ${ssh_state} ${ipmi_state} 290 291 # Description of argument(s): 292 # ssh_state State of SSH to be verified (e.g. True, False). 293 # ipmi_state State of IPMI to be verified (e.g. True, False). 294 295 # Verify SSH state value. 296 ${status}= Run Keyword And Return Status 297 ... Verify SSH Login And Commands Work 298 Should Be Equal As Strings ${status} ${ssh_state} 299 ... msg=SSH states are not matching. 300 301 # Verify IPMI state value. 302 ${status}= Run Keyword And Return Status 303 ... Verify IPMI Works lan print 304 305 Should Be Equal As Strings ${status} ${ipmi_state} 306 ... msg=IPMI states are not matching. 307