|  | *** Settings *** | 
|  | Documentation  Network interface configuration and verification | 
|  | ...  tests. | 
|  |  | 
|  | Resource       ../../lib/bmc_redfish_resource.robot | 
|  | Resource       ../../lib/bmc_network_utils.robot | 
|  | Resource       ../../lib/openbmc_ffdc.robot | 
|  | Library        ../../lib/bmc_network_utils.py | 
|  |  | 
|  | Test Setup     Test Setup Execution | 
|  | Test Teardown  Test Teardown Execution | 
|  |  | 
|  | *** Test Cases *** | 
|  |  | 
|  | Get IP Address And Verify | 
|  | [Documentation]  Get IP Address And Verify. | 
|  | [Tags]  Get_IP_Address_And_Verify | 
|  |  | 
|  | : FOR  ${network_configuration}  IN  @{network_configurations} | 
|  | \  Verify IP On BMC  ${network_configuration['Address']} | 
|  |  | 
|  | Get Netmask And Verify | 
|  | [Documentation]  Get Netmask And Verify. | 
|  | [Tags]  Get_Netmask_And_Verify | 
|  |  | 
|  | : FOR  ${network_configuration}  IN  @{network_configurations} | 
|  | \  Verify Netmask On BMC  ${network_configuration['SubnetMask']} | 
|  |  | 
|  | Get Gateway And Verify | 
|  | [Documentation]  Get gateway and verify it's existence on the BMC. | 
|  | [Tags]  Get_Gateway_And_Verify | 
|  |  | 
|  | : FOR  ${network_configuration}  IN  @{network_configurations} | 
|  | \  Verify Gateway On BMC  ${network_configuration['Gateway']} | 
|  |  | 
|  | Get MAC Address And Verify | 
|  | [Documentation]  Get MAC address and verify it's existence on the BMC. | 
|  | [Tags]  Get_MAC_Address_And_Verify | 
|  |  | 
|  | ${resp}=  redfish.Get  ${REDFISH_NW_ETH0_URI} | 
|  | ${macaddr}=  Get From Dictionary  ${resp.dict}  MACAddress | 
|  | Validate MAC On BMC  ${macaddr} | 
|  |  | 
|  | Verify All Configured IP And Netmask | 
|  | [Documentation]  Verify all configured IP and netmask on BMC. | 
|  | [Tags]  Verify_All_Configured_IP_And_Netmask | 
|  |  | 
|  | : FOR  ${network_configuration}  IN  @{network_configurations} | 
|  | \  Verify IP And Netmask On BMC  ${network_configuration['Address']} | 
|  | ...  ${network_configuration['SubnetMask']} | 
|  |  | 
|  | *** Keywords *** | 
|  |  | 
|  | Test Setup Execution | 
|  | [Documentation]  Test setup execution. | 
|  |  | 
|  | redfish.Login | 
|  |  | 
|  | @{network_configurations}=  Get Network Configuration | 
|  | Set Test Variable  @{network_configurations} | 
|  |  | 
|  | # Get BMC IP address and prefix length. | 
|  | ${ip_data}=  Get BMC IP Info | 
|  | Set Test Variable  ${ip_data} | 
|  |  | 
|  |  | 
|  | Get Network Configuration | 
|  | [Documentation]  Get network configuration. | 
|  |  | 
|  | # Sample output: | 
|  | #{ | 
|  | #  "@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface", | 
|  | #  "@odata.id": "/redfish/v1/Managers/bmc/EthernetInterfaces/eth0", | 
|  | #  "@odata.type": "#EthernetInterface.v1_2_0.EthernetInterface", | 
|  | #  "Description": "Management Network Interface", | 
|  | #  "IPv4Addresses": [ | 
|  | #    { | 
|  | #      "Address": "169.254.xx.xx", | 
|  | #      "AddressOrigin": "IPv4LinkLocal", | 
|  | #      "Gateway": "0.0.0.0", | 
|  | #      "SubnetMask": "255.255.0.0" | 
|  | #    }, | 
|  | #    { | 
|  | #      "Address": "xx.xx.xx.xx", | 
|  | #      "AddressOrigin": "Static", | 
|  | #      "Gateway": "xx.xx.xx.1", | 
|  | #      "SubnetMask": "xx.xx.xx.xx" | 
|  | #    } | 
|  | #  ], | 
|  | #  "Id": "eth0", | 
|  | #  "MACAddress": "xx:xx:xx:xx:xx:xx", | 
|  | #  "Name": "Manager Ethernet Interface", | 
|  | #  "SpeedMbps": 0, | 
|  | #  "VLAN": { | 
|  | #    "VLANEnable": false, | 
|  | #    "VLANId": 0 | 
|  | #  } | 
|  |  | 
|  | ${resp}=  redfish.Get  ${REDFISH_NW_ETH0_URI} | 
|  | @{network_configurations}=  Get From Dictionary  ${resp.dict}  IPv4Addresses | 
|  | [Return]  @{network_configurations} | 
|  |  | 
|  |  | 
|  | Verify IP On BMC | 
|  | [Documentation]  Verify IP on BMC. | 
|  | [Arguments]  ${ip} | 
|  |  | 
|  | # Description of the argument(s): | 
|  | # ip  IP address to be verified. | 
|  |  | 
|  | # Get IP address details on BMC using IP command. | 
|  | @{ip_data}=  Get BMC IP Info | 
|  | Should Contain Match  ${ip_data}  ${ip}/* | 
|  | ...  msg=IP address does not exist. | 
|  |  | 
|  |  | 
|  | Verify Netmask On BMC | 
|  | [Documentation]  Verify netmask on BMC. | 
|  | [Arguments]  ${netmask} | 
|  |  | 
|  | # Description of the argument(s): | 
|  | # netmask  netmask value to be verified. | 
|  |  | 
|  | ${prefix_length}=  Netmask Prefix Length  ${netmask} | 
|  |  | 
|  | Should Contain Match  ${ip_data}  */${prefix_length} | 
|  | ...  msg=Prefix length does not exist. | 
|  |  | 
|  | Verify Gateway On BMC | 
|  | [Documentation]  Verify gateway on BMC. | 
|  | [Arguments]  ${gateway_ip}=0.0.0.0 | 
|  |  | 
|  | # Description of argument(s): | 
|  | # gateway_ip  Gateway IP address. | 
|  |  | 
|  | ${route_info}=  Get BMC Route Info | 
|  |  | 
|  | # If gateway IP is empty or 0.0.0.0 it will not have route entry. | 
|  |  | 
|  | Run Keyword If  '${gateway_ip}' == '0.0.0.0' | 
|  | ...      Pass Execution  Gateway IP is "0.0.0.0". | 
|  | ...  ELSE | 
|  | ...      Should Contain  ${route_info}  ${gateway_ip} | 
|  | ...      msg=Gateway IP address not matching. | 
|  |  | 
|  | Verify IP And Netmask On BMC | 
|  | [Documentation]  Verify IP and netmask on BMC. | 
|  | [Arguments]  ${ip}  ${netmask} | 
|  |  | 
|  | # Description of the argument(s): | 
|  | # ip       IP address to be verified. | 
|  | # netmask  netmask value to be verified. | 
|  |  | 
|  | ${prefix_length}=  Netmask Prefix Length  ${netmask} | 
|  | @{ip_data}=  Get BMC IP Info | 
|  |  | 
|  | ${ip_with_netmask}=  Catenate  ${ip}/${prefix_length} | 
|  | Should Contain  ${ip_data}  ${ip_with_netmask} | 
|  | ...  msg=IP and netmask pair does not exist. | 
|  |  | 
|  | Test Teardown Execution | 
|  | [Documentation]  Test teardown execution. | 
|  |  | 
|  | FFDC On Test Case Fail | 
|  | redfish.Logout |