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