*** 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.