1d2e98ff9SAnves Kumar rayankula*** Settings ***
2d2e98ff9SAnves Kumar rayankulaDocumentation   Test BMC multiple network interface functionalities.
3*58b55690SAnvesh-Kumar_Rayankula...             Run on setup with both eth0 and eth1 in static mode.
4d2e98ff9SAnves Kumar rayankula
5d2e98ff9SAnves Kumar rayankula# User input BMC IP for the eth1.
6d2e98ff9SAnves Kumar rayankula# Use can input as  -v OPENBMC_HOST_1:xx.xxx.xx from command line.
7d2e98ff9SAnves Kumar rayankulaLibrary         ../../lib/bmc_redfish.py  https://${OPENBMC_HOST_1}:${HTTPS_PORT}
8d2e98ff9SAnves Kumar rayankula...             ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}  WITH NAME  Redfish1
9d2e98ff9SAnves Kumar rayankula
10d2e98ff9SAnves Kumar rayankulaResource        ../../lib/resource.robot
11d2e98ff9SAnves Kumar rayankulaResource        ../../lib/common_utils.robot
12d2e98ff9SAnves Kumar rayankulaResource        ../../lib/connection_client.robot
13d2e98ff9SAnves Kumar rayankulaResource        ../../lib/bmc_network_utils.robot
14d2e98ff9SAnves Kumar rayankulaResource        ../../lib/openbmc_ffdc.robot
154fa52d77SAnves Kumar rayankulaResource        ../../lib/bmc_ldap_utils.robot
162f9632faSAnves Kumar rayankulaResource        ../../lib/snmp/resource.robot
172f9632faSAnves Kumar rayankulaResource        ../../lib/snmp/redfish_snmp_utils.robot
1875ac4291SAnves Kumar rayankulaResource        ../../lib/certificate_utils.robot
19a38ec2ecSAnves Kumar rayankulaLibrary         ../../lib/jobs_processing.py
2075ac4291SAnves Kumar rayankulaLibrary         OperatingSystem
21d2e98ff9SAnves Kumar rayankula
22d2e98ff9SAnves Kumar rayankulaSuite Setup     Suite Setup Execution
23*58b55690SAnvesh-Kumar_RayankulaTest Setup      Run Keywords  Redfish.Login  AND  Redfish1.Login
24*58b55690SAnvesh-Kumar_RayankulaTest Teardown   Run Keywords  FFDC On Test Case Fail  AND  Redfish.Logout  AND  Redfish1.Logout
25d2e98ff9SAnves Kumar rayankula
26d0a2f33fSAnves Kumar rayankula*** Variables ***
27d0a2f33fSAnves Kumar rayankula
28*58b55690SAnvesh-Kumar_Rayankula${cmd_prefix}  ipmitool -I lanplus -C 17 -p 623 -U ${IPMI_USERNAME} -P ${IPMI_PASSWORD}
292667f2ccSSweta Potthuri${test_ipv4_addr}     10.7.7.7
302667f2ccSSweta Potthuri${test_ipv4_addr2}    10.7.7.8
312667f2ccSSweta Potthuri${test_subnet_mask}   255.255.255.0
32d0a2f33fSAnves Kumar rayankula
33d2e98ff9SAnves Kumar rayankula*** Test Cases ***
34d2e98ff9SAnves Kumar rayankula
354fa52d77SAnves Kumar rayankulaVerify Both Interfaces BMC IP Addresses Accessible Via SSH
36d2e98ff9SAnves Kumar rayankula    [Documentation]  Verify both interfaces (eth0, eth1) BMC IP addresses accessible via SSH.
37d2e98ff9SAnves Kumar rayankula    [Tags]  Verify_Both_Interfaces_BMC_IP_Addresses_Accessible_Via_SSH
38d2e98ff9SAnves Kumar rayankula
39d2e98ff9SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}  host=${OPENBMC_HOST}
40d2e98ff9SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}  host=${OPENBMC_HOST_1}
41d2e98ff9SAnves Kumar rayankula    Close All Connections
42d2e98ff9SAnves Kumar rayankula
43d2e98ff9SAnves Kumar rayankula
4455d51928SAnves Kumar rayankulaVerify Redfish Works On Both Interfaces
4555d51928SAnves Kumar rayankula    [Documentation]  Verify access BMC with both interfaces (eth0, eth1) IP addresses via Redfish.
4655d51928SAnves Kumar rayankula    [Tags]  Verify_Redfish_Works_On_Both_Interfaces
4755d51928SAnves Kumar rayankula    [Teardown]  Run Keywords
4855d51928SAnves Kumar rayankula    ...  Configure Hostname  ${hostname}  AND  Validate Hostname On BMC  ${hostname}
4955d51928SAnves Kumar rayankula
5055d51928SAnves Kumar rayankula    ${hostname}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  HostName
5155d51928SAnves Kumar rayankula    ${data}=  Create Dictionary  HostName=openbmc
5255d51928SAnves Kumar rayankula    Redfish1.patch  ${REDFISH_NW_ETH_IFACE}eth1  body=&{data}
5355d51928SAnves Kumar rayankula    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
5455d51928SAnves Kumar rayankula
5555d51928SAnves Kumar rayankula    Validate Hostname On BMC  openbmc
5655d51928SAnves Kumar rayankula
5755d51928SAnves Kumar rayankula    ${resp1}=  Redfish.Get  ${REDFISH_NW_ETH_IFACE}eth0
5855d51928SAnves Kumar rayankula    ${resp2}=  Redfish1.Get  ${REDFISH_NW_ETH_IFACE}eth1
5955d51928SAnves Kumar rayankula    Should Be Equal  ${resp1.dict['HostName']}  ${resp2.dict['HostName']}
6055d51928SAnves Kumar rayankula
614fa52d77SAnves Kumar rayankula
624fa52d77SAnves Kumar rayankulaVerify LDAP Login Works When Eth1 IP Is Not Configured
634fa52d77SAnves Kumar rayankula    [Documentation]  Verify LDAP login works when eth1 IP is erased.
644fa52d77SAnves Kumar rayankula    [Tags]  Verify_LDAP_Login_Works_When_Eth1_IP_Is_Not_Configured
6501f95fc3Skothais    [Setup]  Run Keywords  Set Test Variable  ${CHANNEL_NUMBER}  ${SECONDARY_CHANNEL_NUMBER}
66*58b55690SAnvesh-Kumar_Rayankula    ...  AND  Redfish.Login  AND  Delete IP Address  ${OPENBMC_HOST_1}
67*58b55690SAnvesh-Kumar_Rayankula    [Teardown]  Run Keywords  Redfish.Logout  AND  Redfish.Login  AND
684fa52d77SAnves Kumar rayankula    ...  Add IP Address  ${OPENBMC_HOST_1}  ${eth1_subnet_mask}  ${eth1_gateway}
694fa52d77SAnves Kumar rayankula
704fa52d77SAnves Kumar rayankula    Create LDAP Configuration
714fa52d77SAnves Kumar rayankula    Redfish.Logout
72*58b55690SAnvesh-Kumar_Rayankula    Sleep   30
73b9513c61SSweta Potthuri    Redfish.Login  ${LDAP_USER}  ${LDAP_USER_PASSWORD}
74b9513c61SSweta Potthuri
75b9513c61SSweta Potthuri
76b9513c61SSweta PotthuriVerify LDAP Login Works When Both Interfaces Are Configured
77b9513c61SSweta Potthuri    [Documentation]  Verify LDAP login works when both interfaces are configured.
78b9513c61SSweta Potthuri    [Tags]  Verify_LDAP_Login_Works_When_Both_Interfaces_Are_Configured
79b9513c61SSweta Potthuri
80b9513c61SSweta Potthuri    Create LDAP Configuration
81b9513c61SSweta Potthuri    Redfish.Logout
82*58b55690SAnvesh-Kumar_Rayankula    Sleep   30
83b9513c61SSweta Potthuri    Redfish.Login  ${LDAP_USER}  ${LDAP_USER_PASSWORD}
84b9513c61SSweta Potthuri
85b9513c61SSweta Potthuri
86b9513c61SSweta PotthuriVerify Secure LDAP Login Works When Both Interfaces Are Configured
87b9513c61SSweta Potthuri    [Documentation]  Verify Secure LDAP login works when both the interfaces are configured.
88b9513c61SSweta Potthuri    [Tags]  Verify_Secure_LDAP_Login_Works_When_Both_Interfaces_Are_Configured
89b9513c61SSweta Potthuri
90b9513c61SSweta Potthuri    Create LDAP Configuration  ${LDAP_TYPE}  ${LDAP_SERVER_URI_1}  ${LDAP_BIND_DN}
91b9513c61SSweta Potthuri    ...  ${LDAP_BIND_DN_PASSWORD}  ${LDAP_BASE_DN}
92b9513c61SSweta Potthuri    Redfish.Logout
93*58b55690SAnvesh-Kumar_Rayankula    Sleep   30
94b9513c61SSweta Potthuri    Redfish.Login  ${LDAP_USER}  ${LDAP_USER_PASSWORD}
954fa52d77SAnves Kumar rayankula
964fa52d77SAnves Kumar rayankula
972f9632faSAnves Kumar rayankulaVerify SNMP Works When Eth1 IP Is Not Configured
982f9632faSAnves Kumar rayankula    [Documentation]  Verify SNMP works when eth1 IP is not configured.
992f9632faSAnves Kumar rayankula    [Tags]  Verify_SNMP_Works_When_Eth1_IP_Is_Not_Configured
100*58b55690SAnvesh-Kumar_Rayankula    [Setup]  Run Keywords  Redfish.Login  AND
101*58b55690SAnvesh-Kumar_Rayankula    ...  Set Test Variable  ${CHANNEL_NUMBER}  ${SECONDARY_CHANNEL_NUMBER}
1022f9632faSAnves Kumar rayankula    ...  AND  Delete IP Address  ${OPENBMC_HOST_1}
103*58b55690SAnvesh-Kumar_Rayankula    [Teardown]  Add IP Address  ${OPENBMC_HOST_1}  ${eth1_subnet_mask}  ${eth1_gateway}
1042f9632faSAnves Kumar rayankula
1052f9632faSAnves Kumar rayankula    Create Error On BMC And Verify Trap
1062f9632faSAnves Kumar rayankula
1072f9632faSAnves Kumar rayankula
10804bc48c2SAnves Kumar rayankulaDisable And Enable Eth0 Interface
10904bc48c2SAnves Kumar rayankula    [Documentation]  Disable and Enable eth0 ethernet interface via redfish.
11004bc48c2SAnves Kumar rayankula    [Tags]  Disable_And_Enable_Eth0_Interface
11104bc48c2SAnves Kumar rayankula    [Template]  Set BMC Ethernet Interfaces State
11204bc48c2SAnves Kumar rayankula
11304bc48c2SAnves Kumar rayankula    # interface_ip   interface  enabled
11404bc48c2SAnves Kumar rayankula    ${OPENBMC_HOST}   eth0      ${False}
11504bc48c2SAnves Kumar rayankula    ${OPENBMC_HOST}   eth0      ${True}
11604bc48c2SAnves Kumar rayankula
11704bc48c2SAnves Kumar rayankula
118a38ec2ecSAnves Kumar rayankulaVerify Both Interfaces Access Concurrently Via Redfish
119a38ec2ecSAnves Kumar rayankula    [Documentation]  Verify both interfaces access conurrently via redfish.
120a38ec2ecSAnves Kumar rayankula    [Tags]  Verify_Both_Interfaces_Access_Concurrently_Via_Redfish
121a38ec2ecSAnves Kumar rayankula
122a38ec2ecSAnves Kumar rayankula    ${dict}=  Execute Process Multi Keyword  ${2}
123a38ec2ecSAnves Kumar rayankula    ...  Redfish.Patch ${REDFISH_NW_ETH_IFACE}eth0 body={'DHCPv4':{'UseDNSServers':${True}}}
124a38ec2ecSAnves Kumar rayankula    ...  Redfish1.Patch ${REDFISH_NW_ETH_IFACE}eth1 body={'DHCPv4':{'UseDNSServers':${True}}}
125a38ec2ecSAnves Kumar rayankula
126a38ec2ecSAnves Kumar rayankula    Dictionary Should Not Contain Value  ${dict}  False
127a38ec2ecSAnves Kumar rayankula    ...  msg=One or more operations has failed.
128a38ec2ecSAnves Kumar rayankula
129a38ec2ecSAnves Kumar rayankula    ${resp}=  Redfish.Get  ${REDFISH_NW_ETH_IFACE}eth0
130a38ec2ecSAnves Kumar rayankula    ${resp1}=  Redfish1.Get  ${REDFISH_NW_ETH_IFACE}eth1
131a38ec2ecSAnves Kumar rayankula
132a38ec2ecSAnves Kumar rayankula    Should Be Equal  ${resp.dict["DHCPv4"]['UseDNSServers']}  ${True}
133a38ec2ecSAnves Kumar rayankula    Should Be Equal  ${resp1.dict["DHCPv4"]['UseDNSServers']}  ${True}
134a38ec2ecSAnves Kumar rayankula
13554482cdaSAnves Kumar rayankulaAble To Access Serial Console Via Both Network Interfaces
13654482cdaSAnves Kumar rayankula    [Documentation]  Able to access serial console via both network interfaces.
137c4914b77SGeorge Keishing    [Tags]  Able_To_Access_Serial_Console_Via_Both_Network_Interfaces
13854482cdaSAnves Kumar rayankula
13954482cdaSAnves Kumar rayankula    Open Connection And Log In  host=${OPENBMC_HOST}  port=2200
14054482cdaSAnves Kumar rayankula    Open Connection And Log In  host=${OPENBMC_HOST_1}  port=2200
14154482cdaSAnves Kumar rayankula    Close All Connections
14254482cdaSAnves Kumar rayankula
143d0a2f33fSAnves Kumar rayankulaVerify IPMI Works On Both Network Interfaces
144d0a2f33fSAnves Kumar rayankula    [Documentation]  Verify IPMI works on both network interfaces.
145d0a2f33fSAnves Kumar rayankula    [Tags]  Verify_IPMI_Works_On_Both_Network_Interfaces
146d0a2f33fSAnves Kumar rayankula
147d0a2f33fSAnves Kumar rayankula    Run IPMI  ${OPENBMC_HOST_1}  power on
148d0a2f33fSAnves Kumar rayankula    ${status1}=  Run IPMI  ${OPENBMC_HOST}  power status
149d0a2f33fSAnves Kumar rayankula    ${status2}=  Run IPMI  ${OPENBMC_HOST_1}  power status
150d0a2f33fSAnves Kumar rayankula    Should Be Equal  ${status1}  ${status2}
151d0a2f33fSAnves Kumar rayankula
1522667f2ccSSweta PotthuriVerify Modifying IP Address Multiple Times On Interface
1532667f2ccSSweta Potthuri    [Documentation]  Verify modifying IP address multiple times on interface.
1542667f2ccSSweta Potthuri    [Tags]  Verify_Modifying_IP_Address_Multiple_Times_On_Interface
1552667f2ccSSweta Potthuri    [Teardown]  Run Keywords
156*58b55690SAnvesh-Kumar_Rayankula    ...  Delete IP Address  ${test_ipv4_addr}  AND  Redfish.Logout
1572667f2ccSSweta Potthuri
1582667f2ccSSweta Potthuri    ${test_gateway}=  Get BMC Default Gateway
1592667f2ccSSweta Potthuri    Add IP Address  ${test_ipv4_addr}  ${test_subnet_mask}  ${test_gateway}
1602667f2ccSSweta Potthuri    Update IP Address  ${test_ipv4_addr}  ${test_ipv4_addr2}  ${test_subnet_mask}  ${test_gateway}
1612667f2ccSSweta Potthuri    Update IP Address  ${test_ipv4_addr2}  ${test_ipv4_addr}  ${test_subnet_mask}  ${test_gateway}
1622667f2ccSSweta Potthuri    Run Keyword  Wait For Host To Ping  ${OPENBMC_HOST}  ${NETWORK_TIMEOUT}
1632667f2ccSSweta Potthuri    Run Keyword  Wait For Host To Ping  ${OPENBMC_HOST_1}  ${NETWORK_TIMEOUT}
16475ac4291SAnves Kumar rayankula
16575ac4291SAnves Kumar rayankulaVerify Able To Load Certificates Via Eth1 IP Address
166b13682a6SGeorge Keishing    [Documentation]  Verify able to load certificates via eth1 IP address.
16775ac4291SAnves Kumar rayankula    [Tags]  Verify_Able_To_Load_Certificates_Via_Eth1_IP_Address
16875ac4291SAnves Kumar rayankula    [Template]  Install Certificate Via Redfish And Verify
16975ac4291SAnves Kumar rayankula
17075ac4291SAnves Kumar rayankula    # cert_type  cert_format                         expected_status
17175ac4291SAnves Kumar rayankula    CA           Valid Certificate                   ok
17275ac4291SAnves Kumar rayankula    Client       Valid Certificate Valid Privatekey  ok
17375ac4291SAnves Kumar rayankula
174d2e98ff9SAnves Kumar rayankula*** Keywords ***
175d2e98ff9SAnves Kumar rayankula
176d2e98ff9SAnves Kumar rayankulaGet Network Configuration Using Channel Number
177d2e98ff9SAnves Kumar rayankula    [Documentation]  Get ethernet interface.
178d2e98ff9SAnves Kumar rayankula    [Arguments]  ${channel_number}
179d2e98ff9SAnves Kumar rayankula
180d2e98ff9SAnves Kumar rayankula    # Description of argument(s):
181d2e98ff9SAnves Kumar rayankula    # channel_number   Ethernet channel number, 1 is for eth0 and 2 is for eth1 (e.g. "1").
182d2e98ff9SAnves Kumar rayankula
183d2e98ff9SAnves Kumar rayankula    ${active_channel_config}=  Get Active Channel Config
184d2e98ff9SAnves Kumar rayankula    ${ethernet_interface}=  Set Variable  ${active_channel_config['${channel_number}']['name']}
185d2e98ff9SAnves Kumar rayankula    ${resp}=  Redfish.Get  ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
186d2e98ff9SAnves Kumar rayankula
187d2e98ff9SAnves Kumar rayankula    @{network_configurations}=  Get From Dictionary  ${resp.dict}  IPv4StaticAddresses
188409df05dSGeorge Keishing    RETURN  @{network_configurations}
189d2e98ff9SAnves Kumar rayankula
190d2e98ff9SAnves Kumar rayankula
191d2e98ff9SAnves Kumar rayankulaSuite Setup Execution
192d2e98ff9SAnves Kumar rayankula    [Documentation]  Do suite setup task.
193d2e98ff9SAnves Kumar rayankula
194d2e98ff9SAnves Kumar rayankula    Valid Value  OPENBMC_HOST_1
195d2e98ff9SAnves Kumar rayankula
196d2e98ff9SAnves Kumar rayankula    # Check both interfaces are configured and reachable.
197d2e98ff9SAnves Kumar rayankula    Ping Host  ${OPENBMC_HOST}
198d2e98ff9SAnves Kumar rayankula    Ping Host  ${OPENBMC_HOST_1}
1994fa52d77SAnves Kumar rayankula
20001f95fc3Skothais    ${network_configurations}=  Get Network Configuration Using Channel Number  ${SECONDARY_CHANNEL_NUMBER}
2014fa52d77SAnves Kumar rayankula    FOR  ${network_configuration}  IN  @{network_configurations}
2024fa52d77SAnves Kumar rayankula
2034fa52d77SAnves Kumar rayankula      Run Keyword If  '${network_configuration['Address']}' == '${OPENBMC_HOST_1}'
2044fa52d77SAnves Kumar rayankula      ...  Run Keywords  Set Suite Variable  ${eth1_subnet_mask}  ${network_configuration['SubnetMask']}
2054fa52d77SAnves Kumar rayankula      ...  AND  Set Suite Variable  ${eth1_gateway}  ${network_configuration['Gateway']}
2064fa52d77SAnves Kumar rayankula      ...  AND  Exit For Loop
2074fa52d77SAnves Kumar rayankula
2084fa52d77SAnves Kumar rayankula    END
20904bc48c2SAnves Kumar rayankula
21004bc48c2SAnves Kumar rayankula
21104bc48c2SAnves Kumar rayankulaSet BMC Ethernet Interfaces State
21204bc48c2SAnves Kumar rayankula    [Documentation]  Set BMC ethernet interface state.
21304bc48c2SAnves Kumar rayankula    [Arguments]  ${interface_ip}  ${interface}  ${enabled}
21404bc48c2SAnves Kumar rayankula    [Teardown]  Redfish1.Logout
21504bc48c2SAnves Kumar rayankula
21604bc48c2SAnves Kumar rayankula    # Description of argument(s):
21704bc48c2SAnves Kumar rayankula    # interface_ip    IP address of ethernet interface.
21804bc48c2SAnves Kumar rayankula    # interface       The ethernet interface name (eg. eth0 or eth1).
21904bc48c2SAnves Kumar rayankula    # enabled         Indicates interface should be enabled (eg. True or False).
22004bc48c2SAnves Kumar rayankula
22104bc48c2SAnves Kumar rayankula    Redfish1.Login
22204bc48c2SAnves Kumar rayankula
22304bc48c2SAnves Kumar rayankula    ${data}=  Create Dictionary  InterfaceEnabled=${enabled}
22404bc48c2SAnves Kumar rayankula
22504bc48c2SAnves Kumar rayankula    Redfish1.patch  ${REDFISH_NW_ETH_IFACE}${interface}  body=&{data}
22604bc48c2SAnves Kumar rayankula    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
22704bc48c2SAnves Kumar rayankula
22804bc48c2SAnves Kumar rayankula    Sleep  ${NETWORK_TIMEOUT}s
22904bc48c2SAnves Kumar rayankula    ${interface_status}=   Redfish1.Get Attribute  ${REDFISH_NW_ETH_IFACE}${interface}  InterfaceEnabled
23004bc48c2SAnves Kumar rayankula    Should Be Equal  ${interface_status}  ${enabled}
23104bc48c2SAnves Kumar rayankula
23204bc48c2SAnves Kumar rayankula    ${status}=  Run Keyword And Return Status  Ping Host  ${interface_ip}
23304bc48c2SAnves Kumar rayankula
23404bc48c2SAnves Kumar rayankula    Run Keyword If  ${enabled} == ${True}  Should Be Equal  ${status}  ${True}
23504bc48c2SAnves Kumar rayankula    ...  ELSE  Should Be Equal  ${status}  ${False}
236d0a2f33fSAnves Kumar rayankula
237d0a2f33fSAnves Kumar rayankula
238d0a2f33fSAnves Kumar rayankulaRun IPMI
239d0a2f33fSAnves Kumar rayankula    [Documentation]  Run IPMI command.
240d0a2f33fSAnves Kumar rayankula    [Arguments]  ${host}  ${sub_cmd}
241d0a2f33fSAnves Kumar rayankula
242d0a2f33fSAnves Kumar rayankula    # Description of argument(s):
243d0a2f33fSAnves Kumar rayankula    # host         BMC host name or IP address.
244d0a2f33fSAnves Kumar rayankula    # sub_cmd      The IPMI command string to be executed.
245d0a2f33fSAnves Kumar rayankula
246d0a2f33fSAnves Kumar rayankula    ${rc}  ${output}=  Run And Return Rc And Output  ${cmd_prefix} -H ${host} ${sub_cmd}
247d0a2f33fSAnves Kumar rayankula    Should Be Equal As Strings  ${rc}  0
248409df05dSGeorge Keishing    RETURN  ${output}
249d0a2f33fSAnves Kumar rayankula
25075ac4291SAnves Kumar rayankula
25175ac4291SAnves Kumar rayankulaInstall Certificate Via Redfish And Verify
25275ac4291SAnves Kumar rayankula    [Documentation]  Install and verify certificate using Redfish.
25375ac4291SAnves Kumar rayankula    [Arguments]  ${cert_type}  ${cert_format}  ${expected_status}  ${delete_cert}=${True}
254*58b55690SAnvesh-Kumar_Rayankula    [Teardown]  Remove Directory  certificate_dir  recursive=True
25575ac4291SAnves Kumar rayankula
25675ac4291SAnves Kumar rayankula    # Description of argument(s):
25775ac4291SAnves Kumar rayankula    # cert_type           Certificate type (e.g. "Client" or "CA").
25875ac4291SAnves Kumar rayankula    # cert_format         Certificate file format
25975ac4291SAnves Kumar rayankula    #                     (e.g. "Valid_Certificate_Valid_Privatekey").
26075ac4291SAnves Kumar rayankula    # expected_status     Expected status of certificate replace Redfish
26175ac4291SAnves Kumar rayankula    #                     request (i.e. "ok" or "error").
26275ac4291SAnves Kumar rayankula    # delete_cert         Certificate will be deleted before installing if this True.
26375ac4291SAnves Kumar rayankula
264*58b55690SAnvesh-Kumar_Rayankula    Create Directory  certificate_dir
26575ac4291SAnves Kumar rayankula    # AUTH_URI is a global variable defined in lib/resource.robot
26675ac4291SAnves Kumar rayankula    Set Test Variable  ${AUTH_URI}  https://${OPENBMC_HOST_1}
26775ac4291SAnves Kumar rayankula    Run Keyword If  '${cert_type}' == 'CA' and '${delete_cert}' == '${True}'
26875ac4291SAnves Kumar rayankula    ...  Delete All CA Certificate Via Redfish
26975ac4291SAnves Kumar rayankula    ...  ELSE IF  '${cert_type}' == 'Client' and '${delete_cert}' == '${True}'
27075ac4291SAnves Kumar rayankula    ...  Delete Certificate Via BMC CLI  ${cert_type}
27175ac4291SAnves Kumar rayankula
27275ac4291SAnves Kumar rayankula    ${cert_file_path}=  Generate Certificate File Via Openssl  ${cert_format}
27375ac4291SAnves Kumar rayankula    ${bytes}=  OperatingSystem.Get Binary File  ${cert_file_path}
27475ac4291SAnves Kumar rayankula    ${file_data}=  Decode Bytes To String  ${bytes}  UTF-8
27575ac4291SAnves Kumar rayankula
27675ac4291SAnves Kumar rayankula    ${certificate_uri}=  Set Variable If
27775ac4291SAnves Kumar rayankula    ...  '${cert_type}' == 'Client'  ${REDFISH_LDAP_CERTIFICATE_URI}
27875ac4291SAnves Kumar rayankula    ...  '${cert_type}' == 'CA'  ${REDFISH_CA_CERTIFICATE_URI}
27975ac4291SAnves Kumar rayankula
28075ac4291SAnves Kumar rayankula    ${cert_id}=  Install Certificate File On BMC  ${certificate_uri}  ${expected_status}  data=${file_data}
28175ac4291SAnves Kumar rayankula    Logging  Installed certificate id: ${cert_id}
28275ac4291SAnves Kumar rayankula
28375ac4291SAnves Kumar rayankula    Sleep  30s
28475ac4291SAnves Kumar rayankula    ${cert_file_content}=  OperatingSystem.Get File  ${cert_file_path}
28575ac4291SAnves Kumar rayankula    ${bmc_cert_content}=  Run Keyword If  '${expected_status}' == 'ok'  redfish_utils.Get Attribute
28675ac4291SAnves Kumar rayankula    ...  ${certificate_uri}/${cert_id}  CertificateString
28775ac4291SAnves Kumar rayankula    Run Keyword If  '${expected_status}' == 'ok'  Should Contain  ${cert_file_content}  ${bmc_cert_content}
288409df05dSGeorge Keishing    RETURN  ${cert_id}
289