| *** Settings *** |
| Documentation Test BMC manager protocol enable/disable functionality. |
| |
| Resource ../../lib/bmc_redfish_resource.robot |
| Resource ../../lib/openbmc_ffdc.robot |
| Resource ../../lib/protocol_setting_utils.robot |
| |
| Suite Setup Suite Setup Execution |
| Suite Teardown Run Keywords Enable IPMI Protocol ${initial_ipmi_state} AND Redfish.Logout |
| Test Teardown FFDC On Test Case Fail |
| |
| |
| *** Variables *** |
| |
| ${cmd_prefix} ipmitool -I lanplus -C 17 -p 623 -U ${IPMI_USERNAME} -P ${IPMI_PASSWORD} |
| |
| |
| *** Test Cases *** |
| |
| Verify SSH Is Enabled By Default |
| [Documentation] Verify SSH is enabled by default. |
| [Tags] Verify_SSH_Is_Enabled_By_Default |
| |
| # Check if SSH is enabled by default. |
| Verify SSH Protocol State ${True} |
| |
| |
| Enable SSH Protocol And Verify |
| [Documentation] Enable SSH protocol and verify. |
| [Tags] Enable_SSH_Protocol_And_Verify |
| |
| Enable SSH Protocol ${True} |
| |
| # Check if SSH is really enabled via Redfish. |
| Verify SSH Protocol State ${True} |
| |
| # Check if SSH login and commands on SSH session work. |
| Verify SSH Login And Commands Work |
| |
| |
| Disable SSH Protocol And Verify |
| [Documentation] Disable SSH protocol and verify. |
| [Teardown] Enable SSH Protocol ${True} |
| |
| # Disable SSH interface. |
| Enable SSH Protocol ${False} |
| |
| # Check if SSH is really disabled via Redfish. |
| Verify SSH Protocol State ${False} |
| |
| # Check if SSH login and commands fail. |
| ${status}= Run Keyword And Return Status |
| ... Verify SSH Login And Commands Work |
| |
| Should Be Equal As Strings ${status} False |
| ... msg=SSH Login and commands are working after disabling SSH. |
| |
| |
| Enable SSH Protocol And Check Persistency On BMC Reboot |
| [Documentation] Enable SSH protocol and verify persistency. |
| |
| Enable SSH Protocol ${True} |
| |
| # Reboot BMC and verify persistency. |
| OBMC Reboot (off) |
| |
| # Check if SSH is really enabled via Redfish. |
| Verify SSH Protocol State ${True} |
| |
| # Check if SSH login and commands on SSH session work. |
| Verify SSH Login And Commands Work |
| |
| |
| Disable SSH Protocol And Check Persistency On BMC Reboot |
| [Documentation] Disable SSH protocol and verify persistency. |
| [Teardown] Enable SSH Protocol ${True} |
| |
| # Disable SSH interface. |
| Enable SSH Protocol ${False} |
| |
| # Reboot BMC and verify persistency. |
| Redfish BMC Reboot |
| |
| # Check if SSH is really disabled via Redfish. |
| Verify SSH Protocol State ${False} |
| |
| # Check if SSH login and commands fail. |
| ${status}= Run Keyword And Return Status |
| ... Verify SSH Login And Commands Work |
| |
| Should Be Equal As Strings ${status} False |
| ... msg=SSH Login and commands are working after disabling SSH. |
| |
| |
| Verify Disabling SSH Port Does Not Disable Serial Console Port |
| [Documentation] Verify disabling SSH does not disable serial console port. |
| [Tags] Verify_Disabling_SSH_Port_Does_Not_Disable_Serial_Console_Port |
| [Teardown] Enable SSH Protocol ${True} |
| |
| # Disable SSH interface. |
| Enable SSH Protocol ${False} |
| |
| # Check able to establish connection with serial port console. |
| Open Connection And Log In host=${OPENBMC_HOST} port=2200 |
| Close All Connections |
| |
| |
| Verify Existing SSH Session Gets Closed On Disabling SSH |
| [Documentation] Verify existing SSH session gets closed on disabling ssh. |
| [Tags] Verify_Existing_SSH_Session_Gets_Closed_On_Disabling_SSH |
| [Teardown] Enable SSH Protocol ${True} |
| |
| # Open SSH connection. |
| Open Connection And Login |
| |
| # Disable SSH interface. |
| Enable SSH Protocol ${False} |
| |
| # Check if SSH is really disabled via Redfish. |
| Verify SSH Protocol State ${False} |
| |
| # Try to execute CLI command on SSH connection. |
| # It should fail as disable SSH will close pre existing sessions. |
| ${status}= Run Keyword And Return Status |
| ... BMC Execute Command /sbin/ip addr |
| |
| Should Be Equal As Strings ${status} False |
| ... msg=Disabling SSH has not closed existing SSH sessions. |
| |
| |
| Enable IPMI Protocol And Verify |
| [Documentation] Enable IPMI protocol and verify. |
| [Tags] Enable_IPMI_Protocol_And_Verify |
| |
| Enable IPMI Protocol ${True} |
| |
| # Check if IPMI is really enabled via Redfish. |
| Verify IPMI Protocol State ${True} |
| |
| # Check if IPMI commands starts working. |
| Verify IPMI Works lan print |
| |
| |
| Disable IPMI Protocol And Verify |
| [Documentation] Disable IPMI protocol and verify. |
| [Tags] Disable_IPMI_Protocol_And_Verify |
| |
| # Disable IPMI interface. |
| Enable IPMI Protocol ${False} |
| |
| # Check if IPMI is really disabled via Redfish. |
| Verify IPMI Protocol State ${False} |
| |
| # Check if IPMI commands fail. |
| ${status}= Run Keyword And Return Status |
| ... Verify IPMI Works lan print |
| |
| Should Be Equal As Strings ${status} False |
| ... msg=IPMI commands are working after disabling IPMI. |
| |
| |
| Enable IPMI Protocol And Check Persistency On BMC Reboot |
| [Documentation] Set the IPMI protocol attribute to True, reset BMC, and verify |
| ... that the setting persists. |
| [Tags] Enable_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot |
| |
| Enable IPMI Protocol ${True} |
| |
| Redfish OBMC Reboot (off) stack_mode=skip |
| |
| # Check if the IPMI enabled is set. |
| Verify IPMI Protocol State ${True} |
| |
| # Confirm that IPMI commands to access BMC work. |
| Verify IPMI Works lan print |
| |
| |
| Disable IPMI Protocol And Check Persistency On BMC Reboot |
| [Documentation] Set the IPMI protocol attribute to False, reset BMC, and verify |
| ... that the setting persists. |
| [Tags] Disable_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot |
| |
| # Disable IPMI interface. |
| Enable IPMI Protocol ${False} |
| |
| Redfish OBMC Reboot (off) stack_mode=skip |
| |
| # Check if the IPMI disabled is set. |
| Verify IPMI Protocol State ${False} |
| |
| # Confirm that IPMI connection request fails. |
| ${status}= Run Keyword And Return Status |
| ... Verify IPMI Works lan print |
| |
| Should Be Equal As Strings ${status} False |
| ... msg=IPMI commands are working after disabling IPMI. |
| |
| |
| Enable SSH And IPMI Protocol And Verify |
| [Documentation] Set the SSH and IPMI protocol attributes to True, and verify |
| ... that the setting attribute value is boolean True. |
| [Tags] Enable_SSH_And_IPMI_Protocol_And_Verify |
| |
| Set SSH And IPMI Protocol ${True} ${True} |
| |
| # Check if SSH and IPMI enabled is set. |
| Verify SSH Protocol State ${True} |
| Verify IPMI Protocol State ${True} |
| |
| # Check if SSH login and IPMI commands work. |
| Verify SSH Login And Commands Work |
| Verify IPMI Works lan print |
| |
| |
| Disable SSH And IPMI Protocol And Verify |
| [Documentation] Set the SSH and IPMI protocol attributes to False, and verify |
| ... that both SSH login and IPMI commands does not work. |
| [Tags] Disable_SSH_And_IPMI_Protocol_And_Verify |
| [Teardown] Enable SSH Protocol ${True} |
| |
| Set SSH And IPMI Protocol ${False} ${False} |
| |
| # Check if SSH login and commands fail. |
| ${status}= Run Keyword And Return Status |
| ... Verify SSH Login And Commands Work |
| |
| Should Be Equal As Strings ${status} False |
| ... msg=SSH Login and commands are working after disabling SSH. |
| |
| # Check if IPMI commands fail. |
| ${status}= Run Keyword And Return Status |
| ... Verify IPMI Works lan print |
| |
| Should Be Equal As Strings ${status} False |
| ... msg=IPMI commands are working after disabling IPMI. |
| |
| |
| Enable SSH And Disable IPMI And Verify |
| [Documentation] Set the SSH protocol attribute to True and IPMI protocol attribute to False, and verify |
| ... that SSH login works and IPMI command does not work. |
| [Tags] Enable_SSH_And_Disable_IPMI_And_Verify |
| |
| Set SSH And IPMI Protocol ${True} ${False} |
| |
| Verify SSH Login And Commands Work |
| |
| # Check if IPMI commands fail. |
| ${status}= Run Keyword And Return Status |
| ... Verify IPMI Works lan print |
| |
| Should Be Equal As Strings ${status} False |
| ... msg=IPMI commands are working after disabling IPMI. |
| |
| |
| *** Keywords *** |
| |
| Suite Setup Execution |
| [Documentation] Do suite setup tasks. |
| |
| Redfish.Login |
| |
| ${state}= Run Keyword And Return Status Verify IPMI Protocol State |
| Set Suite Variable ${initial_ipmi_state} ${state} |
| |
| |
| Is BMC LastResetTime Changed |
| [Documentation] return fail if BMC last reset time is not changed |
| [Arguments] ${reset_time} |
| |
| ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime |
| Should Not Be Equal ${last_reset_time} ${reset_time} |
| |
| |
| Redfish BMC Reboot |
| [Documentation] Use Redfish API reboot BMC and wait for BMC ready |
| |
| # Get BMC last reset time for compare |
| ${last_reset_time}= Redfish.Get Attribute /redfish/v1/Managers/bmc LastResetTime |
| |
| # Reboot BMC by Redfish API |
| Redfish BMC Reset Operation |
| |
| # Wait for BMC real reboot and Redfish API ready |
| Wait Until Keyword Succeeds 3 min 10 sec Is BMC LastResetTime Changed ${last_reset_time} |
| |
| |
| Set SSH And IPMI Protocol |
| [Documentation] Set SSH and IPMI protocol state. |
| [Arguments] ${ssh_state} ${ipmi_state} |
| |
| # Description of argument(s): |
| # ssh_state state of SSH to be set(e.g. True, False). |
| # ipmi_state state of IPMI to be set(e.g. True, False). |
| |
| ${ssh_protocol_state}= Create Dictionary ProtocolEnabled=${ssh_state} |
| ${ipmi_protocol_state}= Create Dictionary ProtocolEnabled=${ipmi_state} |
| ${data}= Create Dictionary SSH=${ssh_protocol_state} IPMI=${ipmi_protocol_state} |
| |
| Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body=&{data} |
| ... valid_status_codes=[${HTTP_NO_CONTENT}] |
| |
| # Wait for timeout for new values to take effect. |
| Sleep ${NETWORK_TIMEOUT}s |