|  | *** Settings *** | 
|  |  | 
|  | Documentation       Test setting network address of host OS. | 
|  |  | 
|  | Resource            ../lib/rest_client.robot | 
|  | Resource            ../lib/ipmi_client.robot | 
|  | Resource            ../lib/utils.robot | 
|  | Resource            ../lib/openbmc_ffdc.robot | 
|  | Library             ../lib/utilities.py | 
|  |  | 
|  | Test Setup          Open Connection And Log In | 
|  | Test Teardown       Test Teardown Execution | 
|  |  | 
|  | Test Tags          Host_Network | 
|  |  | 
|  | *** Variables *** | 
|  | ${SET_ADDR_PREFIX}  0x00 0x08 0x61 0x80 0x21 0x70 0x62 0x21 0x00 0x01 0x06 0x04 | 
|  | ${STATIC}           0x00 0x01                       #equivalent address type 1 | 
|  | ${DHCP}             0x00 0x00                       #equivalent address type 0 | 
|  | ${CLEAR_ADDR}       0x00 0x08 0x61 0x80 0x00 0x00 0x00 0x00 | 
|  |  | 
|  |  | 
|  | *** Test Cases *** | 
|  |  | 
|  | Set Static Host Network Address Via IPMI | 
|  | [Documentation]  Set static host network address via IPMI and verify | 
|  | ...  IP address set with REST. | 
|  | [Tags]  Set_Static_Host_Network_Address_Via_IPMI | 
|  |  | 
|  | ${ip_address}=  utilities.random_ip | 
|  | ${gateway_ip}=  utilities.random_ip | 
|  | ${mac_address}=  utilities.random_mac | 
|  | ${prefix_length}=  Evaluate  random.randint(0, 32)  modules=random | 
|  |  | 
|  | ${mac_address_hex}=  Mac Address To Hex String  ${mac_address} | 
|  | ${ip_address_hex}=  IP Address To Hex String  ${ip_address} | 
|  | ${gateway_hex}=  IP Address To Hex String  ${gateway_ip} | 
|  | ${prefix_hex}=  Convert To Hex  ${prefix_length}  prefix=0x  lowercase=yes | 
|  |  | 
|  | ${ipmi_raw_cmd}=  Catenate  SEPARATOR= | 
|  | ...  ${SET_ADDR_PREFIX}${SPACE}${mac_address_hex}${SPACE}${STATIC}${SPACE} | 
|  | ...  ${ip_address_hex}${SPACE}${prefix_hex}${SPACE}${gateway_hex} | 
|  |  | 
|  | Run IPMI command  ${ipmi_raw_cmd} | 
|  |  | 
|  | ${data}=  Read Properties  ${NETWORK_MANAGER}host0/intf/addr | 
|  | Should Contain  ${data["Origin"]}  Static | 
|  | Should Be Equal  ${data["Address"]}  ${ip_address} | 
|  | Should Be Equal  ${data["Gateway"]}  ${gateway_ip} | 
|  |  | 
|  | ${new_mac_address}= | 
|  | ...  Read Attribute  ${NETWORK_MANAGER}host0/intf  MACAddress | 
|  | Should Be Equal  ${new_mac_address}  ${mac_address} | 
|  |  | 
|  |  | 
|  | Set DHCP Host Address Via IPMI | 
|  | [Documentation]  Set dhcp host network address via IPMI and verify | 
|  | ...  IP address set with REST. | 
|  | [Tags]  Set_DHCP_Host_Address_Via_IPMI | 
|  |  | 
|  | ${mac_address}=  utilities.random_mac | 
|  | ${mac_address_hex}=  Mac Address To Hex String  ${mac_address} | 
|  |  | 
|  | ${ipmi_raw_cmd}=  Catenate  SEPARATOR= | 
|  | ...  ${SET_ADDR_PREFIX}${SPACE}${mac_address_hex}${SPACE}${DHCP} | 
|  | Run IPMI command  ${ipmi_raw_cmd} | 
|  |  | 
|  | ${origin}=  Read Attribute  ${NETWORK_MANAGER}host0/intf/addr  Origin | 
|  | ${new_mac_address}= | 
|  | ...  Read Attribute  ${NETWORK_MANAGER}host0/intf  MACAddress | 
|  | Should Contain  ${origin}  DHCP | 
|  | Should Be Equal  ${new_mac_address}  ${mac_address} | 
|  |  | 
|  |  | 
|  | *** Keywords *** | 
|  |  | 
|  | Test Teardown Execution | 
|  | [Documentation]  Do the post test teardown. | 
|  |  | 
|  | FFDC On Test Case Fail | 
|  | Run IPMI command  ${CLEAR_ADDR} | 
|  | Close All Connections |