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