Update Robot Framework format - step 11
[integration/test.git] / csit / suites / netvirt / subnet_routing / subnet_routing_and_multicast.robot
index 10ae0c43a3060d46d516be4a7ea8fcf50c1679fc..975c02cc200d937ed6dd80b70bea94d331531980 100644 (file)
 *** Settings ***
-Documentation     Test suite to validate subnet routing and multicast functionality in an openstack integrated environment.
-...               The assumption of this suite is that the environment is already configured with the proper
-...               integration bridges and vxlan tunnels.
-Suite Setup       Suite Setup
-Suite Teardown    Stop Suite
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown     OpenStackOperations.Get Test Teardown Debugs
-Resource          ../../../libraries/BgpOperations.robot
-Resource          ../../../libraries/KarafKeywords.robot
-Resource          ../../../libraries/OpenStackOperations.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../variables/netvirt/Variables.robot
-Resource          ../../../libraries/VpnOperations.robot
+Documentation       Test suite to validate subnet routing and multicast functionality in an openstack integrated environment.
+...                 The assumption of this suite is that the environment is already configured with the proper
+...                 integration bridges and vxlan tunnels.
+
+Resource            ../../../libraries/BgpOperations.robot
+Resource            ../../../libraries/KarafKeywords.robot
+Resource            ../../../libraries/OpenStackOperations.robot
+Resource            ../../../libraries/Utils.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../variables/netvirt/Variables.robot
+Resource            ../../../libraries/VpnOperations.robot
+
+Suite Setup         Suite Setup
+Suite Teardown      Stop Suite
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown       OpenStackOperations.Get Test Teardown Debugs
+
 
 *** Variables ***
-${AS_ID}          100
-${SECURITY_GROUP}    mc_sg
-${NUM_OF_PORTS_PER_NETWORK}    4
-${NUM_OF_INSTANCES}    20
-${VPN_INSTANCE_ID}    4ae8cd92-48ca-49b5-94e1-b2921a261111
-${VPN_NAME}       mc_vpn1
-${LOOPBACK_IP}    5.5.5.2
-${L3VPN_RD}       2200:2
-${DCGW_SYSTEM_IP}    ${TOOLS_SYSTEM_1_IP}
-${RPING_MIP_IP}    sudo arping -I eth0:1 -c 5 -b -s @{EXTRA_NW_SUBNET}[0] @{EXTRA_NW_SUBNET}[0]
-${RPING_MIP_IP1}    sudo arping -I eth0:1 -c 5 -b -s @{EXTRA_NW_SUBNET}[1] @{EXTRA_NW_SUBNET}[1]
-${RPING_MIP_IP2}    sudo arping -I eth0:1 -c 5 -b -s @{EXTRA_NW_SUBNET}[2] @{EXTRA_NW_SUBNET}[2]
-${RPING_MIP_IP3}    sudo arping -I eth0:1 -c 5 -b -s ${NEW_EXTRA_NW_SUBNET} ${NEW_EXTRA_NW_SUBNET}
-@{INTERFACE_STATE}    up    down
-@{NETWORKS}       mc_net_1    mc_net_2    mc_net_3
-@{NET_1_VMS}      mc_net_1_vm_1    mc_net_1_vm_2    mc_net_1_vm_3    mc_net_1_vm_4
-@{NET_2_VMS}      mc_net_2_vm_1    mc_net_2_vm_2    mc_net_2_vm_3    mc_net_2_vm_4
-@{NET_3_VMS}      mc_net_3_vm_1    mc_net_3_vm_2    mc_net_3_vm_3    mc_net_3_vm_4
-@{NET_1_PORTS}    mc_net_1_port_1    mc_net_1_port_2    mc_net_1_port_3    mc_net_1_port_4
-@{NET_2_PORTS}    mc_net_2_port_1    mc_net_2_port_2    mc_net_2_port_3    mc_net_2_port_4
-@{NET_3_PORTS}    mc_net_3_port_1    mc_net_3_port_2    mc_net_3_port_3    mc_net_3_port_4
-@{SUBNETS}        mc_sub_1    mc_sub_2    mc_sub_3
-@{SUBNET_CIDR}    10.1.0.0/24    10.2.0.0/24    10.3.0.0/24
-@{EXTRA_NW_SUBNET}    10.1.0.100    10.2.0.100    10.3.0.100
-${NEW_EXTRA_NW_SUBNET}    10.1.0.110
-${MASK}           255.255.255.0
+${AS_ID}                        100
+${SECURITY_GROUP}               mc_sg
+${NUM_OF_PORTS_PER_NETWORK}     4
+${NUM_OF_INSTANCES}             20
+${VPN_INSTANCE_ID}              4ae8cd92-48ca-49b5-94e1-b2921a261111
+${VPN_NAME}                     mc_vpn1
+${LOOPBACK_IP}                  5.5.5.2
+${L3VPN_RD}                     2200:2
+${DCGW_SYSTEM_IP}               ${TOOLS_SYSTEM_1_IP}
+${RPING_MIP_IP}                 sudo arping -I eth0:1 -c 5 -b -s ${EXTRA_NW_SUBNET}[0] ${EXTRA_NW_SUBNET}[0]
+${RPING_MIP_IP1}                sudo arping -I eth0:1 -c 5 -b -s ${EXTRA_NW_SUBNET}[1] ${EXTRA_NW_SUBNET}[1]
+${RPING_MIP_IP2}                sudo arping -I eth0:1 -c 5 -b -s ${EXTRA_NW_SUBNET}[2] ${EXTRA_NW_SUBNET}[2]
+${RPING_MIP_IP3}                sudo arping -I eth0:1 -c 5 -b -s ${NEW_EXTRA_NW_SUBNET} ${NEW_EXTRA_NW_SUBNET}
+@{INTERFACE_STATE}              up    down
+@{NETWORKS}                     mc_net_1    mc_net_2    mc_net_3
+@{NET_1_VMS}                    mc_net_1_vm_1    mc_net_1_vm_2    mc_net_1_vm_3    mc_net_1_vm_4
+@{NET_2_VMS}                    mc_net_2_vm_1    mc_net_2_vm_2    mc_net_2_vm_3    mc_net_2_vm_4
+@{NET_3_VMS}                    mc_net_3_vm_1    mc_net_3_vm_2    mc_net_3_vm_3    mc_net_3_vm_4
+@{NET_1_PORTS}                  mc_net_1_port_1    mc_net_1_port_2    mc_net_1_port_3    mc_net_1_port_4
+@{NET_2_PORTS}                  mc_net_2_port_1    mc_net_2_port_2    mc_net_2_port_3    mc_net_2_port_4
+@{NET_3_PORTS}                  mc_net_3_port_1    mc_net_3_port_2    mc_net_3_port_3    mc_net_3_port_4
+@{SUBNETS}                      mc_sub_1    mc_sub_2    mc_sub_3
+@{SUBNET_CIDR}                  10.1.0.0/24    10.2.0.0/24    10.3.0.0/24
+@{EXTRA_NW_SUBNET}              10.1.0.100    10.2.0.100    10.3.0.100
+${NEW_EXTRA_NW_SUBNET}          10.1.0.110
+${MASK}                         255.255.255.0
+
 
 *** Test Cases ***
 Verify The Subnet Route When Neutron Port Hosting Subnet Route Is Down/up On Single VSwitch Topology
     [Documentation]    Verify the subnet route when enterprise host is down and up.
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Configure_IP_On_Sub_Interface    @{NETWORKS}[0]    @{EXTRA_NW_SUBNET}[0]    @{NET_1_VM_IPS}[0]
-    ...    ${MASK}    @{INTERFACE_STATE}[1]
-    ${allowed_ip_list} =    BuiltIn.Create List    @{EXTRA_NW_SUBNET}[0]
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    Utils.Check For Elements At URI    ${FIB_ENTRY_URL}    ${allowed_ip_list}
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Configure_IP_On_Sub_Interface    @{NETWORKS}[0]    @{EXTRA_NW_SUBNET}[0]    @{NET_1_VM_IPS}[0]
-    ...    ${MASK}    @{INTERFACE_STATE}[0]
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface    @{NETWORKS}[0]    @{EXTRA_NW_SUBNET}[0]    @{NET_1_VM_IPS}[0]
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    Utils.Check For Elements At URI    ${FIB_ENTRY_URL}    ${allowed_ip_list}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Configure_IP_On_Sub_Interface
+    ...    ${NETWORKS}[0]
+    ...    ${EXTRA_NW_SUBNET}[0]
+    ...    ${NET_1_VM_IPS}[0]
+    ...    ${MASK}
+    ...    ${INTERFACE_STATE}[1]
+    ${allowed_ip_list} =    BuiltIn.Create List    ${EXTRA_NW_SUBNET}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    10s
+    ...    Utils.Check For Elements At URI
+    ...    ${FIB_ENTRY_URL}
+    ...    ${allowed_ip_list}
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Configure_IP_On_Sub_Interface
+    ...    ${NETWORKS}[0]
+    ...    ${EXTRA_NW_SUBNET}[0]
+    ...    ${NET_1_VM_IPS}[0]
+    ...    ${MASK}
+    ...    ${INTERFACE_STATE}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface
+    ...    ${NETWORKS}[0]
+    ...    ${EXTRA_NW_SUBNET}[0]
+    ...    ${NET_1_VM_IPS}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    10s
+    ...    Utils.Check For Elements At URI
+    ...    ${FIB_ENTRY_URL}
+    ...    ${allowed_ip_list}
     Verify Ping between Inter Intra And Enterprise host
 
 Verify Enterprise Hosts Reachability After VM Reboot
     [Documentation]    Restart the VSwitch1 which is hosting the enterprise host and check the subnet route
     OpenStackOperations.Get ControlNode Connection
     @{NET_1_VM_IPS}    ${NET1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    OpenStackOperations.Reboot Nova VM    @{NET_1_VMS}[0]
+    OpenStackOperations.Reboot Nova VM    ${NET_1_VMS}[0]
     @{NET_1_VM_IPS}    ${NET1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Configure_IP_On_Sub_Interface    @{NETWORKS}[0]    @{EXTRA_NW_SUBNET}[0]    @{NET_1_VM_IPS}[0]
-    ...    ${MASK}    @{INTERFACE_STATE}[0]
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface    @{NETWORKS}[0]    @{EXTRA_NW_SUBNET}[0]    @{NET_1_VM_IPS}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Configure_IP_On_Sub_Interface
+    ...    ${NETWORKS}[0]
+    ...    ${EXTRA_NW_SUBNET}[0]
+    ...    ${NET_1_VM_IPS}[0]
+    ...    ${MASK}
+    ...    ${INTERFACE_STATE}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface
+    ...    ${NETWORKS}[0]
+    ...    ${EXTRA_NW_SUBNET}[0]
+    ...    ${NET_1_VM_IPS}[0]
     Verify Ping between Inter Intra And Enterprise host
 
 Verify The Subnet Route For Multiple Subnets On Multi VSwitch Topology When DC-GW Is Restarted
@@ -96,7 +143,10 @@ Verify The Subnet Route When Vswitch Hosting Subnet Enterprise Host Is Restarted
 
 Verify The Subnet Route For One Subnet On Single Vswitch
     [Documentation]    Verify the subnet route for one subnet on a single VSwitch
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    @{NETWORKS}[2]    @{NET_2_VM_IPS}[1]    ping -c 3 @{EXTRA_NW_SUBNET}[1]
+    ${output} =    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[2]
+    ...    ${NET_2_VM_IPS}[1]
+    ...    ping -c 3 ${EXTRA_NW_SUBNET}[1]
     BuiltIn.Should Contain    ${output}    64 bytes
     Utils.Check For Elements At URI    ${FIB_ENTRY_URL}    ${EXTRA_NW_SUBNET}
     Verify Ping between Inter Intra And Enterprise host
@@ -104,15 +154,37 @@ Verify The Subnet Route For One Subnet On Single Vswitch
 Verify The Subnet Route For Multiple Subnets On Multi Vswitch Topology
     [Documentation]    Configure one more IP on sub interface and verify the subnet route for multiple subnets on multi VSwitch topology
     BuiltIn.Log    Bring up enterprise host in another vswitch
-    Configure_IP_On_Sub_Interface    @{NETWORKS}[0]    ${NEW_EXTRA_NW_SUBNET}    @{NET_1_VM_IPS}[2]    ${MASK}
-    Verify_IP_Configured_On_Sub_Interface    @{NETWORKS}[0]    ${NEW_EXTRA_NW_SUBNET}    @{NET_1_VM_IPS}[2]
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    @{NETWORKS}[0]    @{NET_1_VM_IPS}[2]    ${RPING_MIP_IP3}
+    Configure_IP_On_Sub_Interface    ${NETWORKS}[0]    ${NEW_EXTRA_NW_SUBNET}    ${NET_1_VM_IPS}[2]    ${MASK}
+    Verify_IP_Configured_On_Sub_Interface    ${NETWORKS}[0]    ${NEW_EXTRA_NW_SUBNET}    ${NET_1_VM_IPS}[2]
+    ${output} =    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VM_IPS}[2]
+    ...    ${RPING_MIP_IP3}
     BuiltIn.Should Contain    ${output}    broadcast
     BuiltIn.Should Contain    ${output}    Received 0 reply
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    @{NETWORKS}[2]    @{NET_1_VM_IPS}[2]    ping -c 3 ${NEW_EXTRA_NW_SUBNET}
+    ${output} =    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[2]
+    ...    ${NET_1_VM_IPS}[2]
+    ...    ping -c 3 ${NEW_EXTRA_NW_SUBNET}
     BuiltIn.Should Contain    ${output}    64 bytes
     Verify Ping between Inter Intra And Enterprise host
 
+Verify The Subnet Route When The Network Is Removed From The Vpn
+    [Documentation]    Dissociate vpn from the network and verify the subnet route
+    FOR    ${network}    IN    @{NETWORKS}
+        ${network_id} =    OpenStackOperations.Get Net Id    ${network}
+        VpnOperations.Dissociate L3VPN From Networks    networkid=${network_id}    vpnid=${VPN_INSTANCE_ID}
+    END
+    ${vm_ip_list} =    BuiltIn.Create List    @{NET_1_VM_IPS}    @{NET_2_VM_IPS}    @{NET_3_VM_IPS}
+    Utils.Check For Elements Not At URI    ${FIB_ENTRY_URL}    ${vm_ip_list}
+    FOR    ${network}    IN    @{NETWORKS}
+        ${network_id} =    OpenStackOperations.Get Net Id    ${network}
+        VpnOperations.Associate L3VPN To Network    networkid=${network_id}    vpnid=${VPN_INSTANCE_ID}
+    END
+    Utils.Check For Elements At URI    ${FIB_ENTRY_URL}    ${vm_ip_list}
+    Verify Ping between Inter Intra And Enterprise host
+
+
 *** Keywords ***
 Suite Setup
     [Documentation]    Test Suite for Subnet_Routing_and_Multicast_Deployments.
@@ -141,53 +213,113 @@ Create Setup
     Create Nova VMs
     Create Sub Interfaces And Verify
     Create L3VPN
-    : FOR    ${network}    IN    @{NETWORKS}
-    \    ${network_id} =    OpenStackOperations.Get Net Id    ${network}
-    \    VpnOperations.Associate L3VPN To Network    networkid=${network_id}    vpnid=${VPN_INSTANCE_ID}
+    FOR    ${network}    IN    @{NETWORKS}
+        ${network_id} =    OpenStackOperations.Get Net Id    ${network}
+        VpnOperations.Associate L3VPN To Network    networkid=${network_id}    vpnid=${VPN_INSTANCE_ID}
+    END
     Create BGP Config On ODL
     Create BGP Config On DCGW
     BuiltIn.Wait Until Keyword Succeeds    60s    10s    VpnOperations.Verify Tunnel Status as UP
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    @{NETWORKS}[0]    @{NET_1_VM_IPS}[0]    ${RPING_MIP_IP}
+    ${output} =    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[0]
+    ...    ${NET_1_VM_IPS}[0]
+    ...    ${RPING_MIP_IP}
     BuiltIn.Should Contain    ${output}    broadcast    Received 0 reply
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    @{NETWORKS}[1]    @{NET_2_VM_IPS}[0]    ${RPING_MIP_IP1}
+    ${output} =    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[1]
+    ...    ${NET_2_VM_IPS}[0]
+    ...    ${RPING_MIP_IP1}
     BuiltIn.Should Contain    ${output}    broadcast    Received 0 reply
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    @{NETWORKS}[2]    @{NET_3_VM_IPS}[0]    ${RPING_MIP_IP2}
+    ${output} =    OpenStackOperations.Execute Command on VM Instance
+    ...    ${NETWORKS}[2]
+    ...    ${NET_3_VM_IPS}[0]
+    ...    ${RPING_MIP_IP2}
     BuiltIn.Should Contain    ${output}    broadcast    Received 0 reply
 
 Create Neutron Networks
     [Documentation]    Create required number of networks
-    : FOR    ${net}    IN    @{NETWORKS}
-    \    OpenStackOperations.Create Network    ${net}
+    FOR    ${net}    IN    @{NETWORKS}
+        OpenStackOperations.Create Network    ${net}
+    END
     BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
 
 Create Neutron Subnets
-    [Arguments]    ${num_of_network}    ${additional_args}=${EMPTY}    ${verbose}=TRUE
     [Documentation]    Create required number of subnets for previously created networks
-    : FOR    ${index}    IN RANGE    0    ${num_of_network}
-    \    OpenStackOperations.Create SubNet    @{NETWORKS}[${index}]    @{SUBNETS}[${index}]    @{SUBNET_CIDR}[${index}]
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${SUBNETWORK_URL}    ${SUBNETS}
+    [Arguments]    ${num_of_network}    ${additional_args}=${EMPTY}    ${verbose}=TRUE
+    FOR    ${index}    IN RANGE    0    ${num_of_network}
+        OpenStackOperations.Create SubNet    ${NETWORKS}[${index}]    ${SUBNETS}[${index}]    ${SUBNET_CIDR}[${index}]
+    END
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    3s
+    ...    1s
+    ...    Utils.Check For Elements At URI
+    ...    ${SUBNETWORK_URL}
+    ...    ${SUBNETS}
 
 Create Neutron Ports
     [Documentation]    Create required number of ports under previously created subnets
-    ${allowed_address_pairs_args1} =    BuiltIn.Set Variable    --allowed-address ip-address=@{EXTRA_NW_SUBNET}[0] --allowed-address ip-address=@{EXTRA_NW_SUBNET}[1]
-    ${allowed_address_pairs_args2} =    BuiltIn.Set Variable    --allowed-address ip-address=@{EXTRA_NW_SUBNET}[1] --allowed-address ip-address=@{EXTRA_NW_SUBNET}[2]
-    ${allowed_address_pairs_args3} =    BuiltIn.Set Variable    --allowed-address ip-address=@{EXTRA_NW_SUBNET}[2] --allowed-address ip-address=@{EXTRA_NW_SUBNET}[0]
-    : FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_NETWORK}
-    \    OpenStackOperations.Create Port    @{NETWORKS}[0]    @{NET_1_PORTS}[${index}]    sg=${SECURITY_GROUP}    additional_args=${allowed_address_pairs_args1}
-    : FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_NETWORK}
-    \    OpenStackOperations.Create Port    @{NETWORKS}[1]    @{NET_2_PORTS}[${index}]    sg=${SECURITY_GROUP}    additional_args=${allowed_address_pairs_args2}
-    : FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_NETWORK}
-    \    OpenStackOperations.Create Port    @{NETWORKS}[2]    @{NET_3_PORTS}[${index}]    sg=${SECURITY_GROUP}    additional_args=${allowed_address_pairs_args3}
+    ${allowed_address_pairs_args1} =    BuiltIn.Set Variable
+    ...    --allowed-address ip-address=${EXTRA_NW_SUBNET}[0] --allowed-address ip-address=${EXTRA_NW_SUBNET}[1]
+    ${allowed_address_pairs_args2} =    BuiltIn.Set Variable
+    ...    --allowed-address ip-address=${EXTRA_NW_SUBNET}[1] --allowed-address ip-address=${EXTRA_NW_SUBNET}[2]
+    ${allowed_address_pairs_args3} =    BuiltIn.Set Variable
+    ...    --allowed-address ip-address=${EXTRA_NW_SUBNET}[2] --allowed-address ip-address=${EXTRA_NW_SUBNET}[0]
+    FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_NETWORK}
+        OpenStackOperations.Create Port
+        ...    ${NETWORKS}[0]
+        ...    ${NET_1_PORTS}[${index}]
+        ...    sg=${SECURITY_GROUP}
+        ...    additional_args=${allowed_address_pairs_args1}
+    END
+    FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_NETWORK}
+        OpenStackOperations.Create Port
+        ...    ${NETWORKS}[1]
+        ...    ${NET_2_PORTS}[${index}]
+        ...    sg=${SECURITY_GROUP}
+        ...    additional_args=${allowed_address_pairs_args2}
+    END
+    FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_NETWORK}
+        OpenStackOperations.Create Port
+        ...    ${NETWORKS}[2]
+        ...    ${NET_3_PORTS}[${index}]
+        ...    sg=${SECURITY_GROUP}
+        ...    additional_args=${allowed_address_pairs_args3}
+    END
 
 Create Nova VMs
     [Documentation]    Create Vm instances on compute nodes
-    : FOR    ${index}    IN RANGE    0    2
-    \    OpenStackOperations.Create Vm Instance With Port On Compute Node    @{NET_1_PORTS}[${index}]    @{NET_1_VMS}[${index}]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    \    OpenStackOperations.Create Vm Instance With Port On Compute Node    @{NET_1_PORTS}[${index+2}]    @{NET_1_VMS}[${index+2}]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    \    OpenStackOperations.Create Vm Instance With Port On Compute Node    @{NET_2_PORTS}[${index}]    @{NET_2_VMS}[${index}]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    \    OpenStackOperations.Create Vm Instance With Port On Compute Node    @{NET_2_PORTS}[${index+2}]    @{NET_2_VMS}[${index+2}]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
-    \    OpenStackOperations.Create Vm Instance With Port On Compute Node    @{NET_3_PORTS}[${index}]    @{NET_3_VMS}[${index}]    ${OS_CMP1_HOSTNAME}    sg=${SECURITY_GROUP}
-    \    OpenStackOperations.Create Vm Instance With Port On Compute Node    @{NET_3_PORTS}[${index+2}]    @{NET_3_VMS}[${index+2}]    ${OS_CMP2_HOSTNAME}    sg=${SECURITY_GROUP}
+    FOR    ${index}    IN RANGE    0    2
+        OpenStackOperations.Create Vm Instance With Port On Compute Node
+        ...    ${NET_1_PORTS}[${index}]
+        ...    ${NET_1_VMS}[${index}]
+        ...    ${OS_CMP1_HOSTNAME}
+        ...    sg=${SECURITY_GROUP}
+        OpenStackOperations.Create Vm Instance With Port On Compute Node
+        ...    ${NET_1_PORTS}[${index+2}]
+        ...    ${NET_1_VMS}[${index+2}]
+        ...    ${OS_CMP2_HOSTNAME}
+        ...    sg=${SECURITY_GROUP}
+        OpenStackOperations.Create Vm Instance With Port On Compute Node
+        ...    ${NET_2_PORTS}[${index}]
+        ...    ${NET_2_VMS}[${index}]
+        ...    ${OS_CMP1_HOSTNAME}
+        ...    sg=${SECURITY_GROUP}
+        OpenStackOperations.Create Vm Instance With Port On Compute Node
+        ...    ${NET_2_PORTS}[${index+2}]
+        ...    ${NET_2_VMS}[${index+2}]
+        ...    ${OS_CMP2_HOSTNAME}
+        ...    sg=${SECURITY_GROUP}
+        OpenStackOperations.Create Vm Instance With Port On Compute Node
+        ...    ${NET_3_PORTS}[${index}]
+        ...    ${NET_3_VMS}[${index}]
+        ...    ${OS_CMP1_HOSTNAME}
+        ...    sg=${SECURITY_GROUP}
+        OpenStackOperations.Create Vm Instance With Port On Compute Node
+        ...    ${NET_3_PORTS}[${index+2}]
+        ...    ${NET_3_VMS}[${index+2}]
+        ...    ${OS_CMP2_HOSTNAME}
+        ...    sg=${SECURITY_GROUP}
+    END
     @{NET_1_VM_IPS}    ${NET1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
     @{NET_2_VM_IPS}    ${NET2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
     @{NET_3_VM_IPS}    ${NET3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_3_VMS}
@@ -201,21 +333,66 @@ Create Nova VMs
 
 Create Sub Interfaces And Verify
     [Documentation]    Create Sub Interface and verify for all VMs
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Configure_IP_On_Sub_Interface    @{NETWORKS}[0]    @{EXTRA_NW_SUBNET}[0]    @{NET_1_VM_IPS}[0]
-    ...    ${MASK}    @{INTERFACE_STATE}[0]
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface    @{NETWORKS}[0]    @{EXTRA_NW_SUBNET}[0]    @{NET_1_VM_IPS}[0]
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Configure_IP_On_Sub_Interface    @{NETWORKS}[1]    @{EXTRA_NW_SUBNET}[1]    @{NET_2_VM_IPS}[0]
-    ...    ${MASK}    @{INTERFACE_STATE}[0]
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface    @{NETWORKS}[1]    @{EXTRA_NW_SUBNET}[1]    @{NET_2_VM_IPS}[0]
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Configure_IP_On_Sub_Interface    @{NETWORKS}[2]    @{EXTRA_NW_SUBNET}[2]    @{NET_3_VM_IPS}[0]
-    ...    ${MASK}    @{INTERFACE_STATE}[0]
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface    @{NETWORKS}[2]    @{EXTRA_NW_SUBNET}[2]    @{NET_3_VM_IPS}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Configure_IP_On_Sub_Interface
+    ...    ${NETWORKS}[0]
+    ...    ${EXTRA_NW_SUBNET}[0]
+    ...    ${NET_1_VM_IPS}[0]
+    ...    ${MASK}
+    ...    ${INTERFACE_STATE}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface
+    ...    ${NETWORKS}[0]
+    ...    ${EXTRA_NW_SUBNET}[0]
+    ...    ${NET_1_VM_IPS}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Configure_IP_On_Sub_Interface
+    ...    ${NETWORKS}[1]
+    ...    ${EXTRA_NW_SUBNET}[1]
+    ...    ${NET_2_VM_IPS}[0]
+    ...    ${MASK}
+    ...    ${INTERFACE_STATE}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface
+    ...    ${NETWORKS}[1]
+    ...    ${EXTRA_NW_SUBNET}[1]
+    ...    ${NET_2_VM_IPS}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Configure_IP_On_Sub_Interface
+    ...    ${NETWORKS}[2]
+    ...    ${EXTRA_NW_SUBNET}[2]
+    ...    ${NET_3_VM_IPS}[0]
+    ...    ${MASK}
+    ...    ${INTERFACE_STATE}[0]
+    BuiltIn.Wait Until Keyword Succeeds
+    ...    30s
+    ...    5s
+    ...    OpenStackOperations.Verify_IP_Configured_On_Sub_Interface
+    ...    ${NETWORKS}[2]
+    ...    ${EXTRA_NW_SUBNET}[2]
+    ...    ${NET_3_VM_IPS}[0]
 
 Create L3VPN
     [Documentation]    Create L3VPN and verify the same
-    ${net_id} =    OpenStackOperations.Get Net Id    @{NETWORKS}[0]
+    ${net_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[0]
     ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
-    VpnOperations.VPN Create L3VPN    vpnid=${VPN_INSTANCE_ID}    name=${VPN_NAME}    rd=["${L3VPN_RD}"]    exportrt=["${L3VPN_RD}"]    importrt=["${L3VPN_RD}"]    tenantid=${tenant_id}
+    VpnOperations.VPN Create L3VPN
+    ...    vpnid=${VPN_INSTANCE_ID}
+    ...    name=${VPN_NAME}
+    ...    rd=["${L3VPN_RD}"]
+    ...    exportrt=["${L3VPN_RD}"]
+    ...    importrt=["${L3VPN_RD}"]
+    ...    tenantid=${tenant_id}
     VpnOperations.Verify L3VPN On ODL    ${VPN_INSTANCE_ID}
 
 Create BGP Config On ODL
@@ -228,16 +405,27 @@ Create BGP Config On ODL
 
 Create BGP Config On DCGW
     [Documentation]    Configure BGP on DCGW
-    BgpOperations.Configure BGP And Add Neighbor On DCGW    ${DCGW_SYSTEM_IP}    ${AS_ID}    ${DCGW_SYSTEM_IP}    ${ODL_SYSTEM_IP}    ${VPN_NAME}    ${L3VPN_RD}
+    BgpOperations.Configure BGP And Add Neighbor On DCGW
+    ...    ${DCGW_SYSTEM_IP}
+    ...    ${AS_ID}
+    ...    ${DCGW_SYSTEM_IP}
+    ...    ${ODL_SYSTEM_IP}
+    ...    ${VPN_NAME}
+    ...    ${L3VPN_RD}
     ...    ${LOOPBACK_IP}
     ${output} =    BgpOperations.Execute Show Command On Quagga    ${DCGW_SYSTEM_IP}    ${RUN_CONFIG}
     BuiltIn.Should Contain    ${output}    ${ODL_SYSTEM_IP}
-    ${output} =    BuiltIn.Wait Until Keyword Succeeds    180s    10s    BgpOperations.Verify BGP Neighbor Status On Quagga    ${DCGW_SYSTEM_IP}    ${ODL_SYSTEM_IP}
+    ${output} =    BuiltIn.Wait Until Keyword Succeeds
+    ...    180s
+    ...    10s
+    ...    BgpOperations.Verify BGP Neighbor Status On Quagga
+    ...    ${DCGW_SYSTEM_IP}
+    ...    ${ODL_SYSTEM_IP}
 
 Verify Ping between Inter Intra And Enterprise host
     [Documentation]    Ping Enterprise Host for Intra, Inter from different and same network
     ${dst_ip_list} =    BuiltIn.Create List    @{NET_1_VM_IPS}    @{NET_2_VM_IPS}    @{EXTRA_NW_SUBNET}
-    OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[0]    @{NET_1_VM_IPS}[0]    ${dst_ip_list}
-    OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[1]    @{NET_2_VM_IPS}[0]    ${dst_ip_list}
-    OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[0]    @{NET_1_VM_IPS}[2]    ${dst_ip_list}
-    OpenStackOperations.Test Operations From Vm Instance    @{NETWORKS}[1]    @{NET_2_VM_IPS}[2]    ${dst_ip_list}
+    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${dst_ip_list}
+    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_VM_IPS}[0]    ${dst_ip_list}
+    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[2]    ${dst_ip_list}
+    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_VM_IPS}[2]    ${dst_ip_list}