*** 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. [Tags] 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. [Tags] Enable_SSH_Protocol_And_Check_Persistency_On_BMC_Reboot Enable SSH Protocol ${True} # Reboot BMC and verify persistency. Redfish OBMC Reboot (off) stack_mode=skip # 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. [Tags] Disable_SSH_Protocol_And_Check_Persistency_On_BMC_Reboot [Teardown] Enable SSH Protocol ${True} # Disable SSH interface. Enable SSH Protocol ${False} # Reboot BMC and verify persistency. Redfish OBMC Reboot (off) stack_mode=skip # 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 Check Persistency On BMC Reboot [Documentation] Set the SSH and IPMI protocol attributes to True, and verify ... that the setting attribute value is boolean True after BMC reboot. [Tags] Enable_SSH_And_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot Set SSH And IPMI Protocol ${True} ${True} # Check if SSH and IPMI enabled is set. Verify SSH Protocol State ${True} Sleep ${NETWORK_TIMEOUT}s Verify IPMI Protocol State ${True} Redfish OBMC Reboot (off) stack_mode=skip # Check if SSH login and IPMI commands work. Verify SSH Login And Commands Work Verify IPMI Works lan print Configure SSH And IPMI Settings And Verify [Documentation] Set the SSH and IPMI protocol attribute to True/False, and verify. [Tags] Configure_SSH_And_IPMI_Settings_And_Verify [Template] Set SSH And IPMI Protocol [Teardown] Enable SSH Protocol ${True} # ssh_state ipmi_state ${True} ${False} ${True} ${True} ${False} ${True} ${False} ${False} Enable SSH And Disable IPMI Protocol And Check Persistency On BMC Reboot [Documentation] Set the SSH to True and IPMI protocol attributes to False, and verify ... the setting after BMC reboot. [Tags] Enable_SSH_And_Disable_IPMI_Protocol_And_Check_Persistency_On_BMC_Reboot Set SSH And IPMI Protocol ${True} ${False} ${True} *** 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} Sleep ${NETWORK_TIMEOUT}s 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} ${persistency_check}=${False} # 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 Run Keyword if ${persistency_check} == ${True} Redfish OBMC Reboot (off) Verify Protocol State ${ssh_state} ${ipmi_state} Verify Protocol State [Documentation] Verify SSH and IPMI protocol state. [Arguments] ${ssh_state} ${ipmi_state} # Description of argument(s): # ssh_state State of SSH to be verified (e.g. True, False). # ipmi_state State of IPMI to be verified (e.g. True, False). # Verify SSH state value. ${status}= Run Keyword And Return Status ... Verify SSH Login And Commands Work Should Be Equal As Strings ${status} ${ssh_state} ... msg=SSH states are not matching. # Verify IPMI state value. ${status}= Run Keyword And Return Status ... Verify IPMI Works lan print Should Be Equal As Strings ${status} ${ipmi_state} ... msg=IPMI states are not matching.