|  | *** Settings *** | 
|  | Documentation  Verify OBMC tool's network fuctionality. | 
|  |  | 
|  |  | 
|  | Library                 String | 
|  | Library                 OperatingSystem | 
|  | Library                 ../../lib/bmc_network_utils.py | 
|  | Library                 ../../lib/gen_print.py | 
|  | Library                 ../../lib/gen_robot_print.py | 
|  | Library                 ../../lib/openbmctool_utils.py | 
|  | Library                 ../../lib/gen_misc.py | 
|  | Library                 ../../lib/gen_robot_valid.py | 
|  | Resource                ../../syslib/utils_os.robot | 
|  | Resource                ../../lib/resource.robot | 
|  | Resource                ../../lib/bmc_network_utils.robot | 
|  | Resource                ../../lib/utils.robot | 
|  | Resource                ../../lib/common_utils.robot | 
|  |  | 
|  |  | 
|  | Suite Setup             Suite Setup Execution | 
|  | Test Setup              Printn | 
|  |  | 
|  | *** Variables *** | 
|  |  | 
|  | ${ip}                   10.5.5.5 | 
|  | ${dns_ip}               10.10.10.10 | 
|  | ${domain_name}          randomName.com | 
|  | ${mac_address}          76:e2:84:14:87:91 | 
|  | ${ntp_server}           pool.ntp.org | 
|  | ${parser}               |grep "ipv4"|awk -F/ 'NR==1{print$5}' | 
|  | ${ignore_err}           ${0} | 
|  |  | 
|  |  | 
|  | *** Test Cases *** | 
|  |  | 
|  | Verify GetIP | 
|  | [Documentation]  Verify that openbmctool can run the getIP command. | 
|  | [Tags]  Verify_GetIP | 
|  |  | 
|  | ${ip_records}=  Network  getIP  I=eth0 | 
|  | ${addresses}=  Nested Get  Address  ${ip_records} | 
|  | Verify IP On BMC  ${addresses}[${0}] | 
|  |  | 
|  |  | 
|  | Verify AddIP | 
|  | [Documentation]  Verify that openbmctool can run the addIP command. | 
|  | [Tags]  Verify_AddIP | 
|  |  | 
|  | Network  addIP  I=${interface}  a=${ip}  l=24  p=ipv4 | 
|  | Wait And Verify IP On BMC  ${ip} | 
|  |  | 
|  |  | 
|  | Verify GetDefaultGW | 
|  | [Documentation]  Verify that openbmctool can run the getDefaultGW command. | 
|  | [Tags]  Verify_GetDefaultGW | 
|  |  | 
|  | ${default_gw}=  Network  getDefaultGW | 
|  | Verify Gateway On BMC  ${default_gw} | 
|  |  | 
|  |  | 
|  | Verify RemoveIP | 
|  | [Documentation]  Verify that openbmctool can run the rmIP command. | 
|  | [Tags]  Verify_RemoveIP | 
|  |  | 
|  | Network  addIP  I=${interface}  a=${ip}  l=24  p=ipv4 | 
|  | Wait And Verify IP On BMC  ${ip} | 
|  | Network  rmIP  I=${interface}  a=${ip} | 
|  | ${status}=  Run Keyword And Return Status  Wait And Verify IP On BMC  ${ip} | 
|  | Should Be Equal  ${status}  ${False} | 
|  |  | 
|  |  | 
|  | Verify SetDNS | 
|  | [Documentation]  Verify that openbmctool can run the setDNS command. | 
|  | [Tags]  Verify_SetDNS | 
|  |  | 
|  | Network  setDNS  I=eth0  d=${dns_ip} | 
|  | ${dns_config}=  CLI Get Nameservers | 
|  | Should Contain  ${dns_config}  ${dns_ip} | 
|  |  | 
|  |  | 
|  | Verify GetDNS | 
|  | [Documentation]  Verify that openbmctool can run the getDNS command. | 
|  | [Tags]  Verify_GetDNS | 
|  |  | 
|  | Network  setDNS  I=eth0  d=${dns_ip} | 
|  | ${dns_data}=  Network  getDNS  I=eth0 | 
|  | ${dns_config}=  CLI Get Nameservers | 
|  | Should Contain  ${dns_config}  ${dns_data}[${0}] | 
|  |  | 
|  |  | 
|  | Verify SetHostName | 
|  | [Documentation]  Verify that openbmctool can run the setHostName command. | 
|  | [Tags]  Verify_SetHostName | 
|  |  | 
|  | Network  setHostName  H=randomName | 
|  | ${bmc_hostname}=  Get BMC Hostname | 
|  | Should Be Equal As Strings  ${bmc_hostname}  randomName | 
|  |  | 
|  |  | 
|  | Verify GetHostName | 
|  | [Documentation]  Verify that openbmctool can run the getHostName command. | 
|  | [Tags]  Verify_GetHostName | 
|  |  | 
|  | ${tool_hostname}=  Network  getHostName | 
|  | ${bmc_hostname}=  Get BMC Hostname | 
|  | Should Be Equal As Strings  ${bmc_hostname}  ${tool_hostname} | 
|  |  | 
|  |  | 
|  | Verify SetMACAddress | 
|  | [Documentation]  Verify that openbmctool can set a new MAC address. | 
|  | [Tags]  Verify_SetMACAddress | 
|  |  | 
|  | Network  setMACAddress  I=eth0  MA=${mac_address} | 
|  | Validate MAC On BMC  ${mac_address} | 
|  |  | 
|  |  | 
|  | Verify GetMACAddress | 
|  | [Documentation]  Verify that openbmctool can get the MAC address. | 
|  | [Tags]  Verify_GetMACAddress | 
|  |  | 
|  | ${mac_addr}=  Network  getMACAddress  I=eth0 | 
|  | Validate MAC On BMC  ${mac_addr} | 
|  |  | 
|  |  | 
|  | Verify SetNTP | 
|  | [Documentation]  Verify that openbmctool can run the setNTP command. | 
|  | [Tags]  Verify_SetNTP | 
|  |  | 
|  | Network  setNTP  I=eth0  N=${ntp_server} | 
|  | # Get NTP server details via REDFISH. | 
|  | ${eth0}=  Redfish.Get Properties  ${REDFISH_NW_PROTOCOL_URI} | 
|  | Valid Value  eth0['NTP']['NTPServers'][0]  ['${ntp_server}'] | 
|  |  | 
|  |  | 
|  | Verify GetNTP | 
|  | [Documentation]  Verify that openbmctool can run the getNTP command. | 
|  | [Tags]  Verify_GetNTP | 
|  |  | 
|  | Network  setNTP  I=eth0  N=${ntp_server} | 
|  | # Get NTP server details via REDFISH. | 
|  | ${eth0}=  Redfish.Get Properties  ${REDFISH_NW_PROTOCOL_URI} | 
|  | ${tool_ntp}=  Network  getNTP  I=eth0 | 
|  | Valid Value  eth0['NTP']['NTPServers'][0]  ['${tool_ntp}'] | 
|  |  | 
|  |  | 
|  | Verify SetDomainName | 
|  | [Documentation]  Verify set domain name via openbmctool. | 
|  | [Tags]  Verify_SetDomainName | 
|  |  | 
|  | Network  setDomainName  I=eth0  D=${domain_name} | 
|  | ${eth0}=  Redfish.Get Properties  ${REDFISH_NW_ETH0_URI} | 
|  | ${eth0_domain_name}=  Strip String  ${eth0['FQDN']} | 
|  | ...  characters=${eth0['HostName']}.  mode=left | 
|  | Valid Value  eth0_domain_name  ['${domain_name}'] | 
|  |  | 
|  |  | 
|  | Verify GetDomainName | 
|  | [Documentation]  Verify get domain name via openbmctool. | 
|  | [Tags]  Verify_GetDomainName | 
|  |  | 
|  | Network  setDomainName  I=eth0  D=${domain_name} | 
|  | ${eth0}=  Redfish.Get Properties  ${REDFISH_NW_ETH0_URI} | 
|  | ${eth0_domain_name}=  Strip String  ${eth0['FQDN']} | 
|  | ...  characters=${eth0['HostName']}.  mode=left | 
|  | ${tool_domain_name}=  Network  getDomainName  I=eth0 | 
|  | Valid Value  eth0_domain_name  ['${tool_domain_name}'] | 
|  |  | 
|  |  | 
|  | Verify Add VLAN | 
|  | [Documentation]  Verify add VLAN via openbmctool. | 
|  | [Tags]  Verify_Add_VLAN | 
|  | [Teardown]  Network  deleteVLAN  I=eth0_35 | 
|  |  | 
|  | Network  addVLAN  I=eth0  n=35 | 
|  | ${eth0_vlan}=  Redfish.Get Properties  ${REDFISH_NW_ETH0_URI}VLANs/eth0_35 | 
|  | Valid Value  eth0_vlan['Id']  ['eth0_35'] | 
|  |  | 
|  |  | 
|  | Verify Delete VLAN | 
|  | [Documentation]  Verify delete VLAN via openbmctool. | 
|  | [Tags]  Verify_Delete_VLAN | 
|  |  | 
|  | Network  addVLAN  I=eth0  n=35 | 
|  | ${eth0_vlan}=  Redfish.Get Properties  ${REDFISH_NW_ETH0_URI}VLANs/eth0_35 | 
|  | Valid Value  eth0_vlan['Id']  ['eth0_35'] | 
|  | Network  deleteVLAN  I=eth0_35 | 
|  | Redfish.Get Properties | 
|  | ...  ${REDFISH_NW_ETH0_URI}VLANs/eth0_35  valid_status_codes=[${HTTP_NOT_FOUND}] | 
|  |  | 
|  |  | 
|  | *** Keywords *** | 
|  |  | 
|  | Suite Setup Execution | 
|  | [Documentation]  Verify connectivity to run openbmctool commands. | 
|  |  | 
|  | Valid Value  OPENBMC_HOST | 
|  | Valid Value  OPENBMC_USERNAME | 
|  | Valid Value  OPENBMC_PASSWORD | 
|  | Redfish.Login | 
|  |  | 
|  | # Verify connectivity to the BMC host. | 
|  | ${bmc_version}=  Get BMC Version | 
|  |  | 
|  | # Verify can find the openbmctool. | 
|  | ${openbmctool_file_path}=  which  openbmctool.py | 
|  | Printn | 
|  | Rprint Vars  openbmctool_file_path | 
|  |  | 
|  | # Get the version number from openbmctool. | 
|  | ${openbmctool_version}=  Get Openbmctool Version | 
|  |  | 
|  | ${rc}  ${res}=  Openbmctool Execute Command  network view-config${parser} | 
|  | Set Suite Variable  ${interface}  ${res.strip()} | 
|  |  | 
|  | Rprint Vars  openbmctool_version  OPENBMC_HOST  bmc_version[1] | 
|  |  | 
|  |  | 
|  | Validate Non Existence Of IP On BMC | 
|  | [Documentation]  Verify that IP address is not present in set of IP addresses. | 
|  | [Arguments]  ${ip_address}  ${ip_data} | 
|  |  | 
|  | # Description of argument(s): | 
|  | # ip_address  IP address to check (e.g. xx.xx.xx.xx). | 
|  | # ip_data     Set of the IP addresses present. | 
|  |  | 
|  | Should Not Contain Match  ${ip_data}  ${ip_address}/* | 
|  | ...  msg=${ip_address} found in the list provided. | 
|  |  | 
|  |  | 
|  | Wait And Verify IP On BMC | 
|  | [Documentation]  Wait and verify if system IP exists. | 
|  | [Arguments]  ${ip} | 
|  |  | 
|  | # Description of argument(s): | 
|  | # ip  IP address to verify (e.g. xx.xx.xx.xx). | 
|  |  | 
|  | # Note:Network restart takes around 15-18s after network-config with openbmctool. | 
|  |  | 
|  | Sleep  ${NETWORK_TIMEOUT}s | 
|  | Wait For Host To Ping  ${OPENBMC_HOST}  ${NETWORK_TIMEOUT} | 
|  |  | 
|  | Verify IP On BMC  ${ip} |