xref: /openbmc/openbmc-test-automation/lib/protocol_setting_utils.robot (revision 79ba8a26b541f598cc45c489da68ed1ac9db0e2c)
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