| *** Settings *** |
| |
| Documentation Protocol settings utilities keywords. |
| |
| Resource ../lib/resource.robot |
| Resource ../lib/utils.robot |
| |
| |
| *** Variables *** |
| |
| ${cmd_prefix} ipmitool -I lanplus -C 17 -p 623 -U ${IPMI_USERNAME} -P ${IPMI_PASSWORD} |
| |
| |
| *** 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. |
| [Arguments] ${host}=${OPENBMC_HOST} |
| [Teardown] Close All Connections |
| |
| # Description of argument(s}: |
| # host OPENBMC_HOST, OPENBMC_HOST_1, Use eth0 as the default interface |
| |
| # Check if we can open SSH connection and login. |
| Open Connection And Log In ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} host=${host} |
| # 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/${MANAGER_ID}/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/${MANAGER_ID}/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. |