1*** Settings *** 2 3Documentation Protocol settings utilities keywords. 4 5Resource ../lib/resource.robot 6Resource ../lib/utils.robot 7 8 9*** Variables *** 10 11${cmd_prefix} ipmitool -I lanplus -C 17 -p 623 -U ${IPMI_USERNAME} -P ${IPMI_PASSWORD} 12 13 14*** Keywords *** 15 16Enable SSH Protocol 17 [Documentation] Enable or disable SSH protocol. 18 [Arguments] ${enable_value}=${True} 19 20 # Description of argument(s}: 21 # enable_value Enable or disable SSH, e.g. (true, false). 22 23 ${ssh_state}= Create Dictionary ProtocolEnabled=${enable_value} 24 ${data}= Create Dictionary SSH=${ssh_state} 25 26 Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body=&{data} 27 ... valid_status_codes=[${HTTP_NO_CONTENT}] 28 29 # Wait for timeout for new values to take effect. 30 Sleep ${NETWORK_TIMEOUT}s 31 32 33Verify SSH Login And Commands Work 34 [Documentation] Verify if SSH connection works and able to run command on SSH session. 35 [Teardown] Close All Connections 36 37 # Check if we can open SSH connection and login. 38 Open Connection And Login 39 40 # Check if we can run command successfully on SSH session. 41 BMC Execute Command /sbin/ip addr 42 43 44Verify SSH Protocol State 45 [Documentation] verify SSH protocol state. 46 [Arguments] ${state}=${True} 47 48 # Description of argument(s}: 49 # state Enable or disable SSH, e.g. (true, false) 50 51 # Sample output: 52 # { 53 # "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/NetworkProtocol", 54 # "@odata.type": "#ManagerNetworkProtocol.v1_5_0.ManagerNetworkProtocol", 55 # "Description": "Manager Network Service", 56 # "FQDN": "bmc", 57 # "HTTP": { 58 # "Port": 0, 59 # "ProtocolEnabled": false 60 # }, 61 # "HTTPS": { 62 # "Certificates": { 63 # "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/NetworkProtocol/HTTPS/Certificates" 64 # }, 65 # "Port": xxx, 66 # "ProtocolEnabled": true 67 # }, 68 # "HostName": "xxxxbmc", 69 # "IPMI": { 70 # "Port": xxx, 71 # "ProtocolEnabled": true 72 # }, 73 # "Id": "NetworkProtocol", 74 # "NTP": { 75 # "NTPServers": [ 76 # "xx.xx.xx.xx", 77 # "xx.xx.xx.xx", 78 # "xx.xx.xx.xx" 79 # ], 80 # "ProtocolEnabled": true 81 # }, 82 # "Name": "Manager Network Protocol", 83 # "SSH": { 84 # "Port": xx, 85 # "ProtocolEnabled": true 86 # }, 87 # "Status": { 88 # "Health": "OK", 89 # "HealthRollup": "OK", 90 # "State": "Enabled" 91 # } 92 93 ${resp}= Redfish.Get ${REDFISH_NW_PROTOCOL_URI} 94 Should Be Equal As Strings ${resp.dict['SSH']['ProtocolEnabled']} ${state} 95 ... msg=Protocol states are not matching. 96 97 98Enable IPMI Protocol 99 [Documentation] Enable or disable IPMI protocol. 100 [Arguments] ${enable_value}=${True} 101 102 # Description of argument(s}: 103 # enable_value Enable or disable IPMI, e.g. (true, false). 104 105 ${ipmi_state}= Create Dictionary ProtocolEnabled=${enable_value} 106 ${data}= Create Dictionary IPMI=${ipmi_state} 107 108 Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body=&{data} 109 ... valid_status_codes=[${HTTP_NO_CONTENT}] 110 111 # Wait for timeout for new values to take effect. 112 Sleep ${NETWORK_TIMEOUT}s 113 114 115Verify IPMI Works 116 [Documentation] Run IPMI command and return status. 117 [Arguments] ${sub_cmd} ${host}=${OPENBMC_HOST} 118 119 # Description of argument(s): 120 # host BMC host name or IP address. 121 # sub_cmd The IPMI command string to be executed. 122 123 ${rc}= Run And Return Rc ${cmd_prefix} -H ${host} ${sub_cmd} 124 Should Be Equal As Strings ${rc} 0 125 ... msg=IPMI is not enabled and commands are failing. 126 127 128Verify IPMI Protocol State 129 [Documentation] Verify IPMI protocol state. 130 [Arguments] ${state}=${True} 131 132 # Description of argument(s}: 133 # state Enable or disable IPMI, e.g. (true, false) 134 135 ${resp}= Redfish.Get ${REDFISH_NW_PROTOCOL_URI} 136 Should Be Equal As Strings ${resp.dict['IPMI']['ProtocolEnabled']} ${state} 137 ... msg=Protocol states are not matching. 138