blob: a927826c4264cad1abc9f5f9443a58c093c0b7de [file] [log] [blame]
*** Settings ***
Documentation Test BMC manager protocol enable/disable functionality.
Resource ../../lib/resource.robot
Resource ../../lib/bmc_redfish_resource.robot
Resource ../../lib/openbmc_ffdc.robot
Suite Setup Redfish.Login
Suite Teardown Redfish.Logout
Test Teardown FFDC On Test Case Fail
*** Variables ***
${cmd_prefix} ipmitool -I lanplus -C 17 -p 623 -U ${OPENBMC_USERNAME} -P ${OPENBMC_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.
OBMC Reboot (off)
# 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
[Teardown] Enable IPMI Protocol ${False}
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.
*** Keywords ***
Enable SSH Protocol
[Documentation] Enable or disable SSH protocol.
[Arguments] ${enable_value}=${True}
# Description of argument(s}:
# enable_value Enable or disable SSH, e.g. (true, false).
${ssh_state}= Create Dictionary ProtocolEnabled=${enable_value}
${data}= Create Dictionary SSH=${ssh_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
Verify SSH Login And Commands Work
[Documentation] Verify if SSH connection works and able to run command on SSH session.
[Teardown] Close All Connections
# Check if we can open SSH connection and login.
Open Connection And Login
# Check if we can run command successfully on SSH session.
BMC Execute Command /sbin/ip addr
Verify SSH Protocol State
[Documentation] verify SSH protocol state.
[Arguments] ${state}=${True}
# Description of argument(s}:
# state Enable or disable SSH, e.g. (true, false)
# Sample output:
# {
# "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol",
# "@odata.type": "#ManagerNetworkProtocol.v1_5_0.ManagerNetworkProtocol",
# "Description": "Manager Network Service",
# "FQDN": "bmc",
# "HTTP": {
# "Port": 0,
# "ProtocolEnabled": false
# },
# "HTTPS": {
# "Certificates": {
# "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates"
# },
# "Port": xxx,
# "ProtocolEnabled": true
# },
# "HostName": "xxxxbmc",
# "IPMI": {
# "Port": xxx,
# "ProtocolEnabled": true
# },
# "Id": "NetworkProtocol",
# "NTP": {
# "NTPServers": [
# "xx.xx.xx.xx",
# "xx.xx.xx.xx",
# "xx.xx.xx.xx"
# ],
# "ProtocolEnabled": true
# },
# "Name": "Manager Network Protocol",
# "SSH": {
# "Port": xx,
# "ProtocolEnabled": true
# },
# "Status": {
# "Health": "OK",
# "HealthRollup": "OK",
# "State": "Enabled"
# }
# }
${resp}= Redfish.Get ${REDFISH_NW_PROTOCOL_URI}
Should Be Equal As Strings ${resp.dict['SSH']['ProtocolEnabled']} ${state}
... msg=Protocol states are not matching.
Enable IPMI Protocol
[Documentation] Enable or disable IPMI protocol.
[Arguments] ${enable_value}=${True}
# Description of argument(s}:
# enable_value Enable or disable IPMI, e.g. (true, false).
${ipmi_state}= Create Dictionary ProtocolEnabled=${enable_value}
${data}= Create Dictionary IPMI=${ipmi_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
Verify IPMI Works
[Documentation] Run IPMI command and return status.
[Arguments] ${sub_cmd} ${host}=${OPENBMC_HOST}
# Description of argument(s):
# host BMC host name or IP address.
# sub_cmd The IPMI command string to be executed.
${rc}= Run And Return Rc ${cmd_prefix} -H ${host} ${sub_cmd}
Should Be Equal As Strings ${rc} 0
... msg=IPMI is not enabled and commands are failing.
Verify IPMI Protocol State
[Documentation] Verify IPMI protocol state.
[Arguments] ${state}=${True}
# Description of argument(s}:
# state Enable or disable IPMI, e.g. (true, false)
${resp}= Redfish.Get ${REDFISH_NW_PROTOCOL_URI}
Should Be Equal As Strings ${resp.dict['IPMI']['ProtocolEnabled']} ${state}
... msg=Protocol states are not matching.