blob: f87c7f16ce26e4bca17a69e4edd3c37af98410c3 [file] [log] [blame]
*** 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
Force Tags BMC_Protocol_Settings
*** Variables ***
${cmd_prefix} ipmitool -I lanplus -C 17 -p 623 -U ${IPMI_USERNAME} -P ${IPMI_PASSWORD}
${SETTING_WAIT_TIMEOUT} 30s
*** 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.
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] Run Keywords FFDC On Test Case Fail
... AND Enable SSH Protocol ${True}
# ssh_state ipmi_state
${True} ${False}
${True} ${True}
${False} ${True}
${False} ${False}
Configure SSH And IPMI Settings And Verify Persistency On BMC Reboot
[Documentation] Set the SSH and IPMI protocol attribute to True/False, and verify
... it's persistency after BMC reboot.
[Tags] Configure_SSH_And_IPMI_Settings_And_Verify_Persistency_On_BMC_Reboot
[Template] Set SSH And IPMI Protocol
[Teardown] Run Keywords FFDC On Test Case Fail
... AND Enable SSH Protocol ${True}
# ssh_state ipmi_state persistency_check
${True} ${False} ${True}
${True} ${True} ${True}
${False} ${True} ${True}
${False} ${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
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 ${SETTING_WAIT_TIMEOUT}
Run Keyword if ${persistency_check} == ${True}
... Redfish OBMC Reboot (off) stack_mode=skip
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.