*** 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       Post Test Execution


*** 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  ${XYZ_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  ${XYZ_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  ${XYZ_NETWORK_MANAGER}host0/intf/addr  Origin
    ${new_mac_address}=
    ...  Read Attribute  ${XYZ_NETWORK_MANAGER}host0/intf  MACAddress
    Should Contain  ${origin}  DHCP
    Should Be Equal  ${new_mac_address}  ${mac_address}


*** Keywords ***

Post Test Execution
    [Documentation]  Do the post test teardown.

    FFDC On Test Case Fail
    Run IPMI command  ${CLEAR_ADDR}
    Close All Connections
