Move elan suite to use Get VM IPs
[integration/test.git] / csit / suites / netvirt / ElanService / ElanService.robot
index b89fade9228a234caf8097359ea750912e81062e..52b0fdb717cbc65673df98f3a6e72b4cb475d31f 100644 (file)
@@ -2,39 +2,64 @@
 Documentation     Test suite to validate elan service functionality in ODL environment.
 ...               The assumption of this suite is that the environment is already configured with the proper
 ...               integration bridges and vxlan tunnels.
-Suite Setup       Elan SuiteSetup
+Suite Setup       BuiltIn.Run Keywords    Get OvsDebugInfo
+...               AND    Elan SuiteSetup
+...               AND    Get OvsDebugInfo
 Suite Teardown    Elan SuiteTeardown
 Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
 Test Teardown     Get Test Teardown Debugs
 Library           OperatingSystem
 Library           RequestsLibrary
+Resource          ../../../libraries/KarafKeywords.robot
 Resource          ../../../libraries/Utils.robot
 Resource          ../../../libraries/OVSDB.robot
 Resource          ../../../libraries/OpenStackOperations.robot
 Resource          ../../../libraries/DevstackUtils.robot
 Resource          ../../../libraries/SetupUtils.robot
+Resource          ../../../libraries/Tcpdump.robot
 Resource          ../../../variables/Variables.robot
 Resource          ../../../variables/netvirt/Variables.robot
 
 *** Variables ***
-@{NETWORKS}       ELAN1
-@{SUBNETS}        ELANSUBNET1
-@{SUBNET_CIDR}    1.1.1.0/24
+${SECURITY_GROUP}    sg-elanservice
+@{NETWORKS}       ELAN1    ELAN2    ELAN3
+@{SUBNETS}        ELANSUBNET1    ELANSUBNET2    ELANSUBNET3
+@{SUBNET_CIDR}    1.1.1.0/24    2.1.1.0/24    3.1.1.0/24
 @{ELAN1_PORT_LIST}    ELANPORT11    ELANPORT12
+@{ELAN2_PORT_LIST}    ELANPORT21    ELANPORT22
+@{ELAN3_PORT_LIST}    ELANPORT31    ELANPORT32
 @{VM_INSTANCES_ELAN1}    ELANVM11    ELANVM12
+@{VM_INSTANCES_ELAN2}    ELANVM21    ELANVM22
+@{VM_INSTANCES_ELAN3}    ELANVM31    ELANVM32
 ${PING_PASS}      , 0% packet loss
 
 *** Test Cases ***
+Create Single Elan
+    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
+    OpenStackOperations.Create Network    ${NETWORKS[0]}
+    OpenStackOperations.Create SubNet    ${NETWORKS[0]}    ${SUBNETS[0]}    ${SUBNET_CIDR[0]}
+    OpenStackOperations.Create Port    ${NETWORKS[0]}    ${ELAN1_PORT_LIST[0]}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Port    ${NETWORKS[0]}    ${ELAN1_PORT_LIST[1]}    sg=${SECURITY_GROUP}
+    Builtin.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${ELAN1_PORT_LIST}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${ELAN1_PORT_LIST[0]}    ${VM_INSTANCES_ELAN1[0]}    ${OS_COMPUTE_1_IP}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${ELAN1_PORT_LIST[1]}    ${VM_INSTANCES_ELAN1[1]}    ${OS_COMPUTE_2_IP}    sg=${SECURITY_GROUP}
+    @{VM_IP_ELAN1}    ${DHCP_IP_ELAN1} =    Get VM IPs    @{VM_INSTANCES_ELAN1}
+    Set Suite Variable    @{VM_IP_ELAN1}
+    Should Not Contain    ${VM_IP_ELAN1}    None
+    Should Not Contain    ${DHCP_IP_ELAN1}    None
+    @{VM_MACAddr_ELAN1} =    BuiltIn.Wait Until Keyword Succeeds    30s    10s    OpenStackOperations.Get Ports MacAddr    ${ELAN1_PORT_LIST}
+    Set Suite Variable    @{VM_MACAddr_ELAN1}
+
 Verify Datapath for Single ELAN with Multiple DPN
     [Documentation]    Verify Flow Table and Datapath
-    ${SRCMAC_CN1} =    Create List    ${VM_MACAddr_ELAN1[0]}
-    ${SRCMAC_CN2} =    Create List    ${VM_MACAddr_ELAN1[1]}
-    Wait Until Keyword Succeeds    30s    5s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_1_IP}    ${SRCMAC_CN1}    ${VM_MACAddr_ELAN1}
-    Wait Until Keyword Succeeds    30s    5s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_2_IP}    ${SRCMAC_CN2}    ${VM_MACAddr_ELAN1}
+    ${SRCMAC_CN1} =    Create List    @{VM_MACAddr_ELAN1}[0]
+    ${SRCMAC_CN2} =    Create List    @{VM_MACAddr_ELAN1}[1]
+    Wait Until Keyword Succeeds    30s    10s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_1_IP}    ${SRCMAC_CN1}    ${VM_MACAddr_ELAN1}
+    Wait Until Keyword Succeeds    30s    10s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_2_IP}    ${SRCMAC_CN2}    ${VM_MACAddr_ELAN1}
     Log    Verify Datapath Test
-    ${output} =    Execute Command on VM Instance    @{NETWORKS}[0]    ${VM_IP_ELAN1[0]}    ping -c 3 ${VM_IP_ELAN1[1]}
+    ${output} =    Execute Command on VM Instance    @{NETWORKS}[0]    @{VM_IP_ELAN1}[0]    ping -c 3 @{VM_IP_ELAN1}[1]
     Should Contain    ${output}    ${PING_PASS}
-    ${output} =    Execute Command on VM Instance    @{NETWORKS}[0]    ${VM_IP_ELAN1[1]}    ping -c 3 ${VM_IP_ELAN1[0]}
+    ${output} =    Execute Command on VM Instance    @{NETWORKS}[0]    @{VM_IP_ELAN1}[1]    ping -c 3 @{VM_IP_ELAN1}[0]
     Should Contain    ${output}    ${PING_PASS}
 
 Verify Datapath After OVS Restart
@@ -45,14 +70,31 @@ Verify Datapath After OVS Restart
     Log    Checking the OVS state and Flow table after restart
     Wait Until Keyword Succeeds    30s    10s    Verify OVS Reports Connected    tools_system=${OS_COMPUTE_1_IP}
     Wait Until Keyword Succeeds    30s    10s    Verify OVS Reports Connected    tools_system=${OS_COMPUTE_2_IP}
-    ${SRCMAC_CN1} =    Create List    ${VM_MACAddr_ELAN1[0]}
-    ${SRCMAC_CN2} =    Create List    ${VM_MACAddr_ELAN1[1]}
-    Wait Until Keyword Succeeds    30s    5s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_1_IP}    ${SRCMAC_CN1}    ${VM_MACAddr_ELAN1}
-    Wait Until Keyword Succeeds    30s    5s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_2_IP}    ${SRCMAC_CN2}    ${VM_MACAddr_ELAN1}
+    ${SRCMAC_CN1} =    Create List    @{VM_MACAddr_ELAN1}[0]
+    ${SRCMAC_CN2} =    Create List    @{VM_MACAddr_ELAN1}[1]
+    Wait Until Keyword Succeeds    60s    10s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_1_IP}    ${SRCMAC_CN1}    ${VM_MACAddr_ELAN1}
+    Wait Until Keyword Succeeds    60s    10s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_2_IP}    ${SRCMAC_CN2}    ${VM_MACAddr_ELAN1}
     Log    Verify Data path test
-    ${output} =    Execute Command on VM Instance    ${NETWORKS[0]}    ${VM_IP_ELAN1[0]}    ping -c 3 ${VM_IP_ELAN1[1]}
+    ${output} =    Execute Command on VM Instance    ${NETWORKS[0]}    @{VM_IP_ELAN1}[0]    ping -c 3 @{VM_IP_ELAN1}[1]
+    Should Contain    ${output}    ${PING_PASS}
+    ${output} =    Execute Command on VM Instance    ${NETWORKS[0]}    @{VM_IP_ELAN1}[1]    ping -c 3 @{VM_IP_ELAN1}[0]
+    Should Contain    ${output}    ${PING_PASS}
+
+Verify Datapath After Recreate VM Instance
+    [Documentation]    Verify datapath after recreating Vm instance
+    Delete Vm Instance    ${VM_INSTANCES_ELAN1[0]}
+    ${SRCMAC_CN1} =    Create List    @{VM_MACAddr_ELAN1}[0]
+    Wait Until Keyword Succeeds    30s    10s    Verify Flows Are Removed For ELAN Service    ${OS_COMPUTE_1_IP}    ${SRCMAC_CN1}
+    Remove RSA Key From KnowHosts    @{VM_IP_ELAN1}[0]
+    Create Vm Instance With Port On Compute Node    ${ELAN1_PORT_LIST[0]}    ${VM_INSTANCES_ELAN1[0]}    ${OS_COMPUTE_1_IP}
+    @{VM_IP_ELAN1}    ${DHCP_IP_ELAN1} =    Get VM IPs    @{VM_INSTANCES_ELAN1}
+    Set Suite Variable    @{VM_IP_ELAN1}
+    Should Not Contain    ${VM_IP_ELAN1}    None
+    Should Not Contain    ${DHCP_IP_ELAN1}    None
+    Wait Until Keyword Succeeds    30s    10s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_1_IP}    ${SRCMAC_CN1}    ${VM_MACAddr_ELAN1}
+    ${output} =    Execute Command on VM Instance    @{NETWORKS}[0]    @{VM_IP_ELAN1}[0]    ping -c 3 @{VM_IP_ELAN1}[1]
     Should Contain    ${output}    ${PING_PASS}
-    ${output} =    Execute Command on VM Instance    ${NETWORKS[0]}    ${VM_IP_ELAN1[1]}    ping -c 3 ${VM_IP_ELAN1[0]}
+    ${output} =    Execute Command on VM Instance    @{NETWORKS}[0]    @{VM_IP_ELAN1}[1]    ping -c 3 @{VM_IP_ELAN1}[0]
     Should Contain    ${output}    ${PING_PASS}
 
 Delete All ELAN1 VM And Verify Flow Table Updated
@@ -60,18 +102,60 @@ Delete All ELAN1 VM And Verify Flow Table Updated
     Log    Delete VM instances
     : FOR    ${VmInstance}    IN    @{VM_INSTANCES_ELAN1}
     \    Delete Vm Instance    ${VmInstance}
-    Wait Until Keyword Succeeds    30s    5s    Verify Flows Are Removed For ELAN Service    ${OS_COMPUTE_1_IP}    ${VM_MACAddr_ELAN1}
-    Wait Until Keyword Succeeds    30s    5s    Verify Flows Are Removed For ELAN Service    ${OS_COMPUTE_2_IP}    ${VM_MACAddr_ELAN1}
+    Wait Until Keyword Succeeds    30s    10s    Verify Flows Are Removed For ELAN Service    ${OS_COMPUTE_1_IP}    ${VM_MACAddr_ELAN1}
+    Wait Until Keyword Succeeds    30s    10s    Verify Flows Are Removed For ELAN Service    ${OS_COMPUTE_2_IP}    ${VM_MACAddr_ELAN1}
+
+Verify Datapath for Multiple ELAN with Multiple DPN
+    [Documentation]    Verify Flow Table and Data path for Multiple ELAN with Multiple DPN
+    [Setup]    Run Keywords    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+    ...    AND    MultipleElan Testsuite Setup
+    Log    Verify flow table, fib Table and then datapath test
+    ${SRCMAC_CN1} =    Create List    @{VM_MACAddr_ELAN2}[0]    @{VM_MACAddr_ELAN3}[0]
+    ${SRCMAC_CN2} =    Create List    @{VM_MACAddr_ELAN2}[1]    @{VM_MACAddr_ELAN3}[1]
+    ${MAC_LIST} =    Create List    @{VM_MACAddr_ELAN2}    @{VM_MACAddr_ELAN3}
+    Wait Until Keyword Succeeds    30s    10s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_1_IP}    ${SRCMAC_CN1}    ${MAC_LIST}
+    Wait Until Keyword Succeeds    30s    10s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_2_IP}    ${SRCMAC_CN2}    ${MAC_LIST}
+    ${output} =    Execute Command on VM Instance    @{NETWORKS}[1]    @{VM_IP_ELAN2}[0]    ping -c 3 ${VM_IP_ELAN2[1]}
+    Should Contain    ${output}    ${PING_PASS}
+    ${output} =    Execute Command on VM Instance    @{NETWORKS}[2]    @{VM_IP_ELAN3}[1]    ping -c 3 ${VM_IP_ELAN3[0]}
+    Should Contain    ${output}    ${PING_PASS}
+    ${output} =    Execute Command on VM Instance    @{NETWORKS}[1]    @{VM_IP_ELAN2}[0]    ping -c 3 ${VM_IP_ELAN3[0]}
+    Should Not Contain    ${output}    ${PING_PASS}
+    ${output} =    Execute Command on VM Instance    @{NETWORKS}[2]    @{VM_IP_ELAN3}[1]    ping -c 3 ${VM_IP_ELAN2[1]}
+    Should Not Contain    ${output}    ${PING_PASS}
+    Log    Reboot VM instance and verify flow
+    Get Test Teardown Debugs
+    ${filename_prefix}    Replace String    ${TEST_NAME}    ${SPACE}    _
+    ${cn1_conn_id} =    Start Packet Capture on Node    ${OS_COMPUTE_1_IP}    file_Name=${filename_prefix}_CN1
+    ${cn2_conn_id} =    Start Packet Capture on Node    ${OS_COMPUTE_2_IP}    file_Name=${filename_prefix}_CN2
+    ${os_conn_id} =    Start Packet Capture on Node    ${OS_CONTROL_NODE_IP}    file_Name=${filename_prefix}_OS
+    # Because of bug 8389 which is infrequently happening, it's requested to add these extra debugs just before and after the
+    # nova reboot step. Once 8389 is resolved, we can remove this line to get debugs before nova reboot. The debugs will be
+    # collected immediately after when that step fails, as is the nature of robot test cases.
+    Reboot Nova VM    ${VM_INSTANCES_ELAN2[0]}
+    @{VM_IP_ELAN2}    ${DHCP_IP_ELAN2} =    Get VM IPs    @{VM_INSTANCES_ELAN2}
+    Should Not Contain    ${VM_IP_ELAN2}    None
+    Should Not Contain    ${DHCP_IP_ELAN2}    None
+    Wait Until Keyword Succeeds    30s    10s    Verify Flows Are Present For ELAN Service    ${OS_COMPUTE_1_IP}    ${SRCMAC_CN1}    ${MAC_LIST}
+    ${output} =    Execute Command on VM Instance    @{NETWORKS}[1]    ${VM_IP_ELAN2[1]}    ping -c 3 @{VM_IP_ELAN2}[0]
+    Should Contain    ${output}    ${PING_PASS}
+    [Teardown]    Run Keywords    Get Test Teardown Debugs
+    ...    AND    MultipleElan Testsuite Cleanup
+    ...    AND    Stop Packet Capture on Node    ${cn1_conn_id}
+    ...    AND    Stop Packet Capture on Node    ${cn2_conn_id}
+    ...    AND    Stop Packet Capture on Node    ${os_conn_id}
 
 *** Keywords ***
 Elan SuiteSetup
     [Documentation]    Elan suite setup
     SetupUtils.Setup_Utils_For_Setup_And_Teardown
+    KarafKeywords.Execute_Controller_Karaf_Command_On_Background    log:set DEBUG org.opendaylight.genius.mdsalutil.internal.MDSALManager
     DevstackUtils.Devstack Suite Setup
-    SingleElan SuiteSetup
 
 Elan SuiteTeardown
     [Documentation]    Elan suite teardown
+    Get OvsDebugInfo
+    KarafKeywords.Execute_Controller_Karaf_Command_On_Background    log:set INFO org.opendaylight.genius.mdsalutil.internal.MDSALManager
     SingleElan SuiteTeardown
     Close All Connections
 
@@ -82,29 +166,50 @@ SingleElan SuiteTeardown
     \    Delete Port    ${Port}
     Delete SubNet    ${SUBNETS[0]}
     Delete Network    ${NETWORKS[0]}
-    Delete SecurityGroup    sg-elanservice
+    Delete SecurityGroup    ${SECURITY_GROUP}
 
 SingleElan SuiteSetup
     [Documentation]    Create single ELAN with Multiple DPN
-    Log    Create ELAN1 network, subnet , port and VM
-    Create SecurityGroup    sg-elanservice
-    Create Network    ${NETWORKS[0]}
-    Create SubNet    ${NETWORKS[0]}    ${SUBNETS[0]}    ${SUBNET_CIDR[0]}
-    Create Port    ${NETWORKS[0]}    ${ELAN1_PORT_LIST[0]}    sg=sg-elanservice
-    Create Port    ${NETWORKS[0]}    ${ELAN1_PORT_LIST[1]}    sg=sg-elanservice
-    Create Vm Instance With Port On Compute Node    ${ELAN1_PORT_LIST[0]}    ${VM_INSTANCES_ELAN1[0]}    ${OS_COMPUTE_1_IP}    sg=sg-elanservice
-    Create Vm Instance With Port On Compute Node    ${ELAN1_PORT_LIST[1]}    ${VM_INSTANCES_ELAN1[1]}    ${OS_COMPUTE_2_IP}    sg=sg-elanservice
-    Log    Verify ELAN1 VM active
-    : FOR    ${VM}    IN    @{VM_INSTANCES_ELAN1}
-    \    Wait Until Keyword Succeeds    25s    5s    Verify VM Is ACTIVE    ${VM}
-    Log    Get IP address for ELAN1
-    ${VM_IP_ELAN1}    Wait Until Keyword Succeeds    30s    10s    Verify VMs received IP    ${VM_INSTANCES_ELAN1}
-    Log    ${VM_IP_ELAN1}
-    Set Suite Variable    ${VM_IP_ELAN1}
-    Log    Get MACAddr for ELAN1
-    ${VM_MACAddr_ELAN1}    Wait Until Keyword Succeeds    30s    10s    Get Ports MacAddr    ${ELAN1_PORT_LIST}
-    Log    ${VM_MACAddr_ELAN1}
-    Set Suite Variable    ${VM_MACAddr_ELAN1}
+
+MultipleElan Testsuite Setup
+    [Documentation]    Create additional ELAN for multipleElan with Multiple DPN test
+    OpenStackOperations.Create Network    ${NETWORKS[1]}
+    OpenStackOperations.Create Network    ${NETWORKS[2]}
+    OpenStackOperations.Create SubNet    ${NETWORKS[1]}    ${SUBNETS[1]}    ${SUBNET_CIDR[1]}
+    OpenStackOperations.Create SubNet    ${NETWORKS[2]}    ${SUBNETS[2]}    ${SUBNET_CIDR[2]}
+    OpenStackOperations.Create Port    ${NETWORKS[1]}    ${ELAN2_PORT_LIST[0]}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Port    ${NETWORKS[1]}    ${ELAN2_PORT_LIST[1]}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Port    ${NETWORKS[2]}    ${ELAN3_PORT_LIST[0]}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Port    ${NETWORKS[2]}    ${ELAN3_PORT_LIST[1]}    sg=${SECURITY_GROUP}
+    Builtin.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${ELAN3_PORT_LIST}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${ELAN2_PORT_LIST[0]}    ${VM_INSTANCES_ELAN2[0]}    ${OS_COMPUTE_1_IP}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${ELAN2_PORT_LIST[1]}    ${VM_INSTANCES_ELAN2[1]}    ${OS_COMPUTE_2_IP}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${ELAN3_PORT_LIST[0]}    ${VM_INSTANCES_ELAN3[0]}    ${OS_COMPUTE_1_IP}    sg=${SECURITY_GROUP}
+    OpenStackOperations.Create Vm Instance With Port On Compute Node    ${ELAN3_PORT_LIST[1]}    ${VM_INSTANCES_ELAN3[1]}    ${OS_COMPUTE_2_IP}    sg=${SECURITY_GROUP}
+    @{VM_IP_ELAN2}    ${DHCP_IP_ELAN2} =    Get VM IPs    @{VM_INSTANCES_ELAN2}
+    @{VM_IP_ELAN3}    ${DHCP_IP_ELAN3} =    Get VM IPs    @{VM_INSTANCES_ELAN3}
+    Set Suite Variable    @{VM_IP_ELAN2}
+    Set Suite Variable    @{VM_IP_ELAN3}
+    Should Not Contain    ${VM_IP_ELAN2}    None
+    Should Not Contain    ${DHCP_IP_ELAN2}    None
+    Should Not Contain    ${VM_IP_ELAN3}    None
+    Should Not Contain    ${DHCP_IP_ELAN3}    None
+    @{VM_MACAddr_ELAN2}    BuiltIn.Wait Until Keyword Succeeds    30s    10s    OpenStackOperations.Get Ports MacAddr    ${ELAN2_PORT_LIST}
+    Set Suite Variable    @{VM_MACAddr_ELAN2}
+    @{VM_MACAddr_ELAN3}    BuiltIn.Wait Until Keyword Succeeds    30s    10s    OpenStackOperations.Get Ports MacAddr    ${ELAN3_PORT_LIST}
+    Set Suite Variable    @{VM_MACAddr_ELAN3}
+
+MultipleElan Testsuite Cleanup
+    [Documentation]    Delete ELAN2 network,subnet and port
+    Get Test Teardown Debugs
+    : FOR    ${VmInstance}    IN    @{VM_INSTANCES_ELAN2}    @{VM_INSTANCES_ELAN3}
+    \    Delete Vm Instance    ${VmInstance}
+    : FOR    ${Port}    IN    @{ELAN2_PORT_LIST}    @{ELAN3_PORT_LIST}
+    \    Delete Port    ${Port}
+    Delete SubNet    ${SUBNETS[1]}
+    Delete SubNet    ${SUBNETS[2]}
+    Delete Network    ${NETWORKS[1]}
+    Delete Network    ${NETWORKS[2]}
 
 Verify Flows Are Present For ELAN Service
     [Arguments]    ${ip}    ${srcMacAddrs}    ${destMacAddrs}
@@ -140,22 +245,3 @@ Verify Flows Are Removed For ELAN Service
     Log    ${dMac_output}
     : FOR    ${dMacAddr}    IN    @{srcMacAddrs}
     \    ${resp}=    Should Not Contain    ${dMac_output}    ${dMacAddr}
-
-Create SecurityGroup
-    [Arguments]    ${sg_name}
-    [Documentation]    Allow all TCP/UDP/ICMP packets for this suite
-    Neutron Security Group Create    ${sg_name}
-    Neutron Security Group Rule Create    ${sg_name}    direction=ingress    port_range_max=65535    port_range_min=1    protocol=tcp    remote_ip_prefix=0.0.0.0/0
-    Neutron Security Group Rule Create    ${sg_name}    direction=egress    port_range_max=65535    port_range_min=1    protocol=tcp    remote_ip_prefix=0.0.0.0/0
-    Neutron Security Group Rule Create    ${sg_name}    direction=ingress    protocol=icmp    remote_ip_prefix=0.0.0.0/0
-    Neutron Security Group Rule Create    ${sg_name}    direction=egress    protocol=icmp    remote_ip_prefix=0.0.0.0/0
-    Neutron Security Group Rule Create    ${sg_name}    direction=ingress    port_range_max=65535    port_range_min=1    protocol=udp    remote_ip_prefix=0.0.0.0/0
-    Neutron Security Group Rule Create    ${sg_name}    direction=egress    port_range_max=65535    port_range_min=1    protocol=udp    remote_ip_prefix=0.0.0.0/0
-
-Verify VMs received IP
-    [Arguments]    ${VM_INSTANCES}
-    [Documentation]    Verify VM received IP
-    ${VM_IP}    ${DHCP_IP}    Verify VMs Received DHCP Lease    @{VM_INSTANCES}
-    Log    ${VM_IP}
-    Should Not Contain    ${VM_IP}    None
-    [Return]    ${VM_IP}