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 202Configure SSH And IPMI Settings And Verify 203 [Documentation] Set the SSH and IPMI protocol attribute to True/False, and verify. 204 [Tags] Configure_SSH_And_IPMI_Settings_And_Verify 205 [Template] Set SSH And IPMI Protocol 206 [Teardown] Run Keywords FFDC On Test Case Fail 207 ... AND Enable SSH Protocol ${True} 208 209 # ssh_state ipmi_state 210 ${True} ${False} 211 ${True} ${True} 212 ${False} ${True} 213 ${False} ${False} 214 215 216Configure SSH And IPMI Settings And Verify Persistency On BMC Reboot 217 [Documentation] Set the SSH and IPMI protocol attribute to True/False, and verify 218 ... it's persistency after BMC reboot. 219 [Tags] Configure_SSH_And_IPMI_Settings_And_Verify_Persistency_On_BMC_Reboot 220 [Template] Set SSH And IPMI Protocol 221 [Teardown] Run Keywords FFDC On Test Case Fail 222 ... AND Enable SSH Protocol ${True} 223 224 # ssh_state ipmi_state persistency_check 225 ${True} ${False} ${True} 226 ${True} ${True} ${True} 227 ${False} ${True} ${True} 228 ${False} ${False} ${True} 229 230 231*** Keywords *** 232 233Suite Setup Execution 234 [Documentation] Do suite setup tasks. 235 236 Redfish.Login 237 238 ${state}= Run Keyword And Return Status Verify IPMI Protocol State 239 Set Suite Variable ${initial_ipmi_state} ${state} 240 Sleep ${NETWORK_TIMEOUT}s 241 242Is BMC LastResetTime Changed 243 [Documentation] return fail if BMC last reset time is not changed. 244 [Arguments] ${reset_time} 245 246 ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime 247 Should Not Be Equal ${last_reset_time} ${reset_time} 248 249 250Redfish BMC Reboot 251 [Documentation] Use Redfish API reboot BMC and wait for BMC ready. 252 253 # Get BMC last reset time for compare 254 ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime 255 256 # Reboot BMC by Redfish API 257 Redfish BMC Reset Operation 258 259 # Wait for BMC real reboot and Redfish API ready 260 Wait Until Keyword Succeeds 3 min 10 sec Is BMC LastResetTime Changed ${last_reset_time} 261 262 263Set SSH And IPMI Protocol 264 [Documentation] Set SSH and IPMI protocol state. 265 [Arguments] ${ssh_state} ${ipmi_state} ${persistency_check}=${False} 266 267 # Description of argument(s): 268 # ssh_state State of SSH to be set (e.g. True, False). 269 # ipmi_state State of IPMI to be set (e.g. True, False). 270 271 ${ssh_protocol_state}= Create Dictionary ProtocolEnabled=${ssh_state} 272 ${ipmi_protocol_state}= Create Dictionary ProtocolEnabled=${ipmi_state} 273 ${data}= Create Dictionary SSH=${ssh_protocol_state} IPMI=${ipmi_protocol_state} 274 275 Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body=&{data} 276 ... valid_status_codes=[${HTTP_NO_CONTENT}] 277 278 # Wait for timeout for new values to take effect. 279 Sleep ${NETWORK_TIMEOUT}s 280 281 Run Keyword if ${persistency_check} == ${True} 282 ... Redfish OBMC Reboot (off) stack_mode=skip 283 Verify Protocol State ${ssh_state} ${ipmi_state} 284 285 286Verify Protocol State 287 [Documentation] Verify SSH and IPMI protocol state. 288 [Arguments] ${ssh_state} ${ipmi_state} 289 290 # Description of argument(s): 291 # ssh_state State of SSH to be verified (e.g. True, False). 292 # ipmi_state State of IPMI to be verified (e.g. True, False). 293 294 # Verify SSH state value. 295 ${status}= Run Keyword And Return Status 296 ... Verify SSH Login And Commands Work 297 Should Be Equal As Strings ${status} ${ssh_state} 298 ... msg=SSH states are not matching. 299 300 # Verify IPMI state value. 301 ${status}= Run Keyword And Return Status 302 ... Verify IPMI Works lan print 303 304 Should Be Equal As Strings ${status} ${ipmi_state} 305 ... msg=IPMI states are not matching. 306