|  | *** Settings *** | 
|  | Resource                ../lib/utils.robot | 
|  | Resource                ../lib/connection_client.robot | 
|  | Resource                ../lib/boot_utils.robot | 
|  |  | 
|  | *** Variables *** | 
|  | # MAC input from user. | 
|  | ${MAC_ADDRESS}          ${EMPTY} | 
|  |  | 
|  |  | 
|  | *** Keywords *** | 
|  |  | 
|  | ############################################################################### | 
|  | Check And Reset MAC | 
|  | [Documentation]  Update BMC with user input MAC address. | 
|  | [Arguments]  ${mac_address}=${MAC_ADDRESS} | 
|  |  | 
|  | # Description of argument(s): | 
|  | # mac_address  The mac address (e.g. 00:01:6c:80:02:28). | 
|  |  | 
|  | Should Not Be Empty  ${mac_address} | 
|  | Open Connection And Log In | 
|  | ${bmc_mac_addr}=  Execute Command On BMC  cat /sys/class/net/eth0/address | 
|  | Run Keyword If  '${mac_address.lower()}' != '${bmc_mac_addr.lower()}' | 
|  | ...  Set MAC Address | 
|  |  | 
|  | ############################################################################### | 
|  |  | 
|  |  | 
|  | ############################################################################### | 
|  | Set MAC Address | 
|  | [Documentation]  Update eth0 with input MAC address. | 
|  | [Arguments]  ${mac_address}=${MAC_ADDRESS} | 
|  |  | 
|  | # Description of argument(s): | 
|  | # mac_address  The mac address (e.g. 00:01:6c:80:02:28). | 
|  |  | 
|  | Write  fw_setenv ethaddr ${mac_address} | 
|  | OBMC Reboot (off) | 
|  |  | 
|  | # Take SSH session post BMC reboot. | 
|  | Open Connection And Log In | 
|  | ${bmc_mac_addr}=  Execute Command On BMC  cat /sys/class/net/eth0/address | 
|  | Should Be Equal  ${bmc_mac_addr}  ${mac_address}  ignore_case=True | 
|  |  | 
|  | ############################################################################### | 
|  |  | 
|  | Get BMC IP Info | 
|  | [Documentation]  Get system IP address and prefix length. | 
|  |  | 
|  | Open Connection And Login | 
|  |  | 
|  | # Get system IP address and prefix length details using "ip addr" | 
|  | # Sample Output of "ip addr": | 
|  | # 1: eth0: <BROADCAST,MULTIAST> mtu 1500 qdisc mq state UP qlen 1000 | 
|  | #     link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff | 
|  | #     inet xx.xx.xx.xx/24 brd xx.xx.xx.xx scope global eth0 | 
|  |  | 
|  | ${cmd_output}=  Execute Command On BMC  /sbin/ip addr | grep eth0 | 
|  |  | 
|  | # Get line having IP address details. | 
|  | ${lines}=  Get Lines Containing String  ${cmd_output}  inet | 
|  |  | 
|  | # List IP address details. | 
|  | @{ip_components}=  Split To Lines  ${lines} | 
|  |  | 
|  | @{ip_data}=  Create List | 
|  |  | 
|  | # Get all IP addresses and prefix lengths on system. | 
|  | :FOR  ${ip_component}  IN  @{ip_components} | 
|  | \  @{if_info}=  Split String  ${ip_component} | 
|  | \  ${ip_n_prefix}=  Get From List  ${if_info}  1 | 
|  | \  Append To List  ${ip_data}  ${ip_n_prefix} | 
|  |  | 
|  | [Return]  ${ip_data} | 
|  |  | 
|  | Get BMC Route Info | 
|  | [Documentation]  Get system route info. | 
|  |  | 
|  | Open Connection And Login | 
|  |  | 
|  | # Sample output of "ip route": | 
|  | # default via xx.xx.xx.x dev eth0 | 
|  | # xx.xx.xx.0/23 dev eth0  src xx.xx.xx.xx | 
|  | # xx.xx.xx.0/24 dev eth0  src xx.xx.xx.xx | 
|  |  | 
|  | ${cmd_output}=  Execute Command On BMC  /sbin/ip route | 
|  |  | 
|  | [Return]  ${cmd_output} | 
|  |  | 
|  | Get BMC MAC Address | 
|  | [Documentation]  Get system MAC address. | 
|  |  | 
|  | Open Connection And Login | 
|  |  | 
|  | # Sample output of "ip addr | grep ether": | 
|  | # link/ether xx.xx.xx.xx.xx.xx brd ff:ff:ff:ff:ff:ff | 
|  |  | 
|  | ${cmd_output}=  Execute Command On BMC  /sbin/ip addr | grep ether | 
|  |  | 
|  | [Return]  ${cmd_output} |