Added VMI network configuraton testcase

Testcase added:
    - Enable DHCP When Static IP Configured And Verify Static IP

Change-Id: I339b3144f0e4fc027312ff95ec44102ddc7b8ad6
Signed-off-by: Anves Kumar rayankula <anvesr77@in.ibm.com>
diff --git a/openpower/ext_interfaces/test_vmi.robot b/openpower/ext_interfaces/test_vmi.robot
index 4b5f3e0..9a92d38 100644
--- a/openpower/ext_interfaces/test_vmi.robot
+++ b/openpower/ext_interfaces/test_vmi.robot
@@ -1,13 +1,13 @@
 *** Settings ***
 
-Documentation    VMI static/dynamic IP config and certificate exchange tests.
+Documentation    VMI static/dynamic IP config tests.
 
 Resource         ../../lib/resource.robot
 Resource         ../../lib/bmc_redfish_resource.robot
 Resource         ../../lib/openbmc_ffdc.robot
 Library          ../../lib/bmc_network_utils.py
 
-Suite Setup       Redfish.Login
+Suite Setup       Suite Setup Execution
 Test Teardown     FFDC On Test Case Fail
 Suite Teardown    Redfish.Logout
 
@@ -16,6 +16,7 @@
 ${test_ipv4}              10.10.20.30
 ${test_gateway}           0.0.0.0
 ${test_netmask}           255.255.252.0
+
 &{DHCP_ENABLED}           DHCPEnabled=${${True}}
 &{DHCP_DISABLED}          DHCPEnabled=${${False}}
 
@@ -73,16 +74,19 @@
     [Documentation]  Assign static IPv4 address to VMI.
     [Tags]  Assign_Valid_And_Invalid_Static_IPv4_Address_To_VMI
     [Template]  Verify Assigning Static IPv4 Address To VMI
-    [Teardown]  Delete VMI IPv4 Address  IPv4Addresses  ${HTTP_ACCEPTED}
+    [Teardown]   Run keywords  Delete VMI IPv4 Address  IPv4Addresses
+    ...  AND  Test Teardown Execution
 
-    # ip          gateway     netmask          del_curr_ip   host_reboot   valid_status_code
-    10.5.20.30    0.0.0.0     255.255.252.0    ${False}      ${True}       ${HTTP_ACCEPTED}
-    a.3.118.94    0.0.0.0     255.255.252.0    ${False}      ${False}      ${HTTP_BAD_REQUEST}
+    # ip          gateway     netmask           valid_status_code
+    10.5.20.30    0.0.0.0     255.255.252.0    ${HTTP_ACCEPTED}
+    a.3.118.94    0.0.0.0     255.255.252.0    ${HTTP_BAD_REQUEST}
+
 
 Add Multiple IP Addreses On VMI Interface And Verify
     [Documentation]  Add multiple IP addreses on VMI interface and verify.
     [Tags]  Add_Multiple_IP_Addreses_On_VMI_Interface_And_Verify
-    [Teardown]  Run Keywords  Delete VMI IPv4 Address  IPv4Addresses  AND  FFDC On Test Case Fail
+    [Teardown]   Run keywords  Delete VMI IPv4 Address  IPv4Addresses
+    ...  AND  Test Teardown Execution
 
     ${ip1}=  Create dictionary  Address=10.5.5.10  SubnetMask=255.255.252.0  Gateway=0.0.0.0
     ${ip2}=  Create dictionary  Address=10.5.5.11  SubnetMask=255.255.252.0  Gateway=0.0.0.0
@@ -94,11 +98,13 @@
     ...  body={'IPv4StaticAddresses':${ips}}  valid_status_codes=[${HTTP_ACCEPTED}]
     Verify VMI Network Interface Details   ${ip1["Address"]}  Static  ${ip1["Gateway"]}  ${ip1["SubnetMask"]}  ${True}
 
+
 Modify IP Addresses On VMI Interface And Verify
     [Documentation]  Modify IP addresses on VMI interface and verify.
     [Tags]  Modify_IP_Addresses_On_VMI_Interface_And_Verify
     [Template]  Verify Assigning Static IPv4 Address To VMI
-    [Teardown]  Run keywords  Delete VMI IPv4 Address  IPv4Addresses  AND  FFDC On Test Case Fail
+    [Teardown]   Run keywords  Delete VMI IPv4 Address  IPv4Addresses
+    ...  AND  Test Teardown Execution
 
     # ip        gateway       netmask          del_curr_ip    host_reboot        valid_status_code
     10.5.5.10   0.0.0.0     255.255.252.0       ${False}       ${True}            ${HTTP_ACCEPTED}
@@ -129,21 +135,22 @@
 
 
 Delete VMI Static IP Address And Verify
-   [Documentation]  Delete VMI static IP address and verify.
-   [Tags]  Delete_VMI_Static_IP_Address_And_Verify
+    [Documentation]  Delete VMI static IP address and verify.
+    [Tags]  Delete_VMI_Static_IP_Address_And_Verify
+    [Teardown]  Test Teardown Execution
 
-   Set Static IPv4 Address To VMI  10.10.20.30  0.0.0.0  255.255.252.0
-   Verify VMI Network Interface Details  10.10.20.30  Static  0.0.0.0  255.255.252.0  ${True}
-   Delete VMI IPv4 Address  IPv4Addresses  ${HTTP_ACCEPTED}
-   ${active_channel_config}=  Get Active Channel Config
-   ${resp}=  Redfish.Get
-   ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}
-   Should Be Empty  ${resp.dict["IPv4Addresses"]}
+    Verify Assigning Static IPv4 Address To VMI  ${test_ipv4}  ${test_gateway}  ${test_netmask}
+    Delete VMI IPv4 Address  IPv4Addresses  ${HTTP_ACCEPTED}
+    ${active_channel_config}=  Get Active Channel Config
+    ${resp}=  Redfish.Get
+    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}
+    Should Be Empty  ${resp.dict["IPv4Addresses"]}
+
 
 Verify Successful VMI IP Static Configuration On HOST Boot After Session Delete
     [Documentation]  Verify VMI IP static Configuration On HOST Boot After session deleted.
     [Tags]  Verify_Successful_VMI_IP_Static_Configuration_On_HOST_Boot_After_Session_Delete
-    [Teardown]  Run keywords  Delete VMI IPv4 Address  IPv4Addresses  AND  FFDC On Test Case Fail
+    [Teardown]  Run keywords  Delete VMI IPv4 Address  IPv4Addresses  AND  Test Teardown Execution
 
     Set Static IPv4 Address To VMI  ${test_ipv4}  ${test_gateway}  ${test_netmask}
 
@@ -151,13 +158,16 @@
     Redfish.Delete  ${session_info["location"]}
 
     # Create a new Redfish session
-    Run Keywords  Redfish.Login  AND  Redfish Power Off  AND  Redfish Power On
+    Redfish Power Off
+    Redfish Power On
 
     Verify VMI Network Interface Details  ${test_ipv4}  Static  ${test_gateway}  ${test_netmask}
 
+
 Verify Persistency Of VMI DHCP IP Configuration After Multiple HOST Reboots
     [Documentation]  Verify Persistency Of VMI DHCP IP configuration After Multiple HOST Reboots
     [Tags]  Verify_Persistency_Of_VMI_DHCP_IP_Configuration_After_Multiple_HOST_Reboots
+    [Teardown]  Test Teardown Execution
 
     ${LOOP_COUNT}=  Set Variable  ${3}
     Set VMI IPv4 Origin  ${True}  ${HTTP_ACCEPTED}
@@ -166,7 +176,21 @@
     # Verifying persistency of dynamic address after multiple reboots.
     Repeat Keyword  ${LOOP_COUNT} times
     ...  Verify VMI Network Interface Details  ${vmi_ip_config["IPv4_Address"]}  DHCP  ${vmi_ip_config["IPv4_Gateway"]}
-    ...  ${vmi_ip_config["IPv4_SubnetMask"]}  ${True}
+    ...  ${vmi_ip_config["IPv4_SubnetMask"]}
+
+
+Enable DHCP When Static IP Configured And Verify Static IP
+    [Documentation]  Enable DHCP when static ip configured and verify static ip
+    [Tags]  Enable_DHCP_when_Static_IP_Configured_And_Verify_Static_IP
+    [Teardown]  Test Teardown Execution
+
+    Verify Assigning Static IPv4 Address To VMI  ${test_ipv4}  ${test_gateway}  ${test_netmask}
+    Set VMI IPv4 Origin  ${True}
+    Redfish Power Off
+    Redfish Power On
+    ${vmi_network_conf}=  Get VMI Network Interface Details
+    Should Not Be Equal As Strings  ${test_ipv4}  ${vmi_network_conf["IPv4_Address"]}
+
 
 Verify VMI Static IP Configuration Persist On BMC Reset Before Host Boot
     [Documentation]  Verify VMI static IP configuration persist on BMC reset.
@@ -174,7 +198,8 @@
     [Teardown]  Run keywords  Delete VMI IPv4 Address  IPv4Addresses  AND  FFDC On Test Case Fail
 
     Set Static IPv4 Address To VMI  ${test_ipv4}  ${test_gateway}  ${test_netmask}
-    Run keywords  OBMC Reboot (off)  AND  Redfish Power On
+    OBMC Reboot (off)
+    Redfish Power On
     # Verifying the VMI static configuration
     Verify VMI Network Interface Details  ${test_ipv4}  Static   ${test_gateway}  ${test_netmask}
 
@@ -182,6 +207,32 @@
 
 *** Keywords ***
 
+Suite Setup Execution
+    [Documentation]  Do test setup execution task.
+
+    Redfish.Login
+    Redfish Power On
+    ${active_channel_config}=  Get Active Channel Config
+    Set Suite Variable   ${active_channel_config}
+    ${resp}=  Redfish.Get
+    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}
+    ${ip_resp}=  Evaluate  json.loads('''${resp.text}''')  json
+    ${length}=  Get Length  ${ip_resp["IPv4StaticAddresses"]}
+    ${vmi_network_conf}=  Run Keyword If  ${length} != ${0}  Get VMI Network Interface Details
+    Set Suite Variable  ${vmi_network_conf}
+
+
+Test Teardown Execution
+    [Documentation]  Do test teardown execution task.
+
+    FFDC On Test Case Fail
+    ${curr_mode}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
+    Run Keyword If  ${curr_mode} == ${True}  Set VMI IPv4 Origin  ${False}
+    Run Keyword If  ${vmi_network_conf} != ${None}
+    ...  Verify Assigning Static IPv4 Address To VMI  ${vmi_network_conf["IPv4_Address"]}
+    ...  ${vmi_network_conf["IPv4_Gateway"]}  ${vmi_network_conf["IPv4_SubnetMask"]}
+
+
 Get VMI Network Interface Details
     [Documentation]  Get VMI network interface details.
     [Arguments]  ${valid_status_code}=${HTTP_OK}
@@ -256,7 +307,7 @@
 Verify VMI Network Interface Details
     [Documentation]  Verify VMI network interface details.
     [Arguments]  ${ip}  ${origin}  ${gateway}  ${netmask}
-    ...  ${host_reboot}=${False}  ${valid_status_code}=${HTTP_OK}
+    ...  ${valid_status_code}=${HTTP_OK}
 
     # Description of argument(s):
     # ip                 VMI IPv4 address.
@@ -264,11 +315,8 @@
     # gateway            Gateway for VMI IP.
     # netmask            Subnetmask for VMI IP.
     # valid_status_code  Expected valid status code from GET request. Default is HTTP_OK.
-    # host_reboot        Reboot HOST if True.
 
-    Run Keyword If  ${host_reboot} == ${True}  Run Keywords
-    ...  Redfish Power Off  AND  Redfish Power On  AND  Redfish.Login
-
+    Run Keywords  Redfish Power Off  AND  Redfish Power On
     ${vmi_ip}=  Get VMI Network Interface Details  ${valid_status_code}
     Should Be Equal As Strings  ${origin}  ${vmi_ip["IPv4_AddressOrigin"]}
     Should Be Equal As Strings  ${gateway}  ${vmi_ip["IPv4_Gateway"]}
@@ -297,25 +345,19 @@
 
 Verify Assigning Static IPv4 Address To VMI
     [Documentation]    Verify assigning static IPv4 address to VMI.
-    [Arguments]  ${ip}  ${gateway}  ${netmask}  ${del_curr_ip}=${True}  ${host_reboot}=${True}
-    ...  ${valid_status_code}=${HTTP_ACCEPTED}
+    [Arguments]  ${ip}  ${gateway}  ${netmask}  ${valid_status_code}=${HTTP_ACCEPTED}
 
     # Description of argument(s):
     # ip                 VMI IPv4 address.
     # gateway            Gateway for VMI IP.
     # netmask            Subnetmask for VMI IP.
-    # del_curr_ip        Delete current VMI static IP if True.
-    # host_reboot        True when HOST reboot is required.
     # valid_status_code  Expected valid status code from GET request. Default is HTTP_ACCEPTED.
 
-    # Delete current static IP based on user input.
-    ${curr_origin}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
-    Run Keyword If  ${curr_origin} == ${False} and ${del_curr_ip} == ${True}  Delete VMI IPv4 Address
 
     Set Static IPv4 Address To VMI  ${ip}  ${gateway}  ${netmask}  valid_status_code=${valid_status_code}
     Return From Keyword If  ${valid_status_code} != ${HTTP_ACCEPTED}
 
-    Verify VMI Network Interface Details  ${ip}  Static  ${gateway}  ${netmask}  host_reboot=${host_reboot}
+    Verify VMI Network Interface Details  ${ip}  Static  ${gateway}  ${netmask}
 
 
 Delete VMI IPv4 Address
@@ -360,6 +402,7 @@
     ${default}=  Set Variable  0.0.0.0
     ${origin}=  Set Variable If  ${curr_mode} == ${False}  DHCP  Static
     Set VMI IPv4 Origin  ${dhcp_enabled}  ${HTTP_ACCEPTED}
-    Verify VMI Network Interface Details  ${default}  ${origin}  ${default}  ${default}  ${host_reboot}
+    Verify VMI Network Interface Details  ${default}  ${origin}  ${default}  ${default}
 
     [Return]  ${origin}
+