Remove suites for netvirt 26/109326/7
authorOleksandr Zharov <oleksandr.zharov@pantheon.tech>
Wed, 13 Dec 2023 15:26:28 +0000 (16:26 +0100)
committerVenkatrangan Govindarajan <gvrangan@gmail.com>
Fri, 16 Feb 2024 09:15:15 +0000 (09:15 +0000)
Removed test suites for netvirt project.

JIRA: INTTEST-140
Change-Id: Iea59e2149ae2b2a51d017968ef2076dab9de3e6b
Signed-off-by: Oleksandr Zharov <oleksandr.zharov@pantheon.tech>
21 files changed:
csit/suites/netvirt/aclservicerecovery/aclservicerecovery.robot [deleted file]
csit/suites/netvirt/bgpvpn/bgpvpn.robot [deleted file]
csit/suites/netvirt/elan/elan.robot [deleted file]
csit/suites/netvirt/elan/elan_service_recovery.robot [deleted file]
csit/suites/netvirt/host_route/host_route_handling.robot [deleted file]
csit/suites/netvirt/l2l3_gatewaymac_arp.robot [deleted file]
csit/suites/netvirt/l3vpn_bgp/bfd_bgp.robot [deleted file]
csit/suites/netvirt/l3vpn_bgp/l3vpn_bgp_multipath_maxpath_cli.robot [deleted file]
csit/suites/netvirt/l3vpn_bgp/multi_vpn_bgp.robot [deleted file]
csit/suites/netvirt/ofpunt_path/openflow_punt_path_protection.robot [deleted file]
csit/suites/netvirt/snatdnat/snat_dnat.robot [deleted file]
csit/suites/netvirt/subnet_routing/subnet_routing_and_multicast.robot [deleted file]
csit/suites/netvirt/upgrade/upgrade.robot [deleted file]
csit/suites/netvirt/vnibasedIpv6forwarding/vnibasedIpv6forwarding.robot [deleted file]
csit/suites/netvirt/vnibasedl2switching/vnibasedl2switching.robot [deleted file]
csit/suites/netvirt/vnibasedl3forwarding/vnibasedl3forwarding.robot [deleted file]
csit/suites/netvirt/vpnservice/arp_learning.robot [deleted file]
csit/suites/netvirt/vpnservice/vpn_basic.robot [deleted file]
csit/suites/netvirt/vpnservice/vpn_basic_dualstack_one_router.robot [deleted file]
csit/suites/netvirt/vpnservice/vpn_basic_dualstack_subnet_routing.robot [deleted file]
csit/suites/netvirt/vpnservice/vpn_basic_ipv6.robot [deleted file]

diff --git a/csit/suites/netvirt/aclservicerecovery/aclservicerecovery.robot b/csit/suites/netvirt/aclservicerecovery/aclservicerecovery.robot
deleted file mode 100644 (file)
index 1e8197e..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-*** Settings ***
-Documentation       Test Suite for ACL Service Recovery:
-...                 The Service Recovery Manager provides
-...                 common interface to recover services in ODL.
-...                 This feature will register ACL service for recovery
-...                 and implement the mechanism to recover ACL service.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Library             String
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/KarafKeywords.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/OvsManager.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../variables/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Run Keywords    OpenStackOperations.OpenStack Suite Teardown
-...                     AND    SetupUtils.Setup_Logging_For_Debug_Purposes_On_List_Or_All    INFO    ${TEST_LOG_COMPONENTS}
-Test Setup          Run Keywords    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-...                     AND    OpenStackOperations.Get DumpFlows And Ovsconfig    ${OS_CMP1_CONN_ID}
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${acl_sr_security_group}    acl_sr_sg
-@{acl_sr_networks}          acl_sr_net_1    acl_sr_net_2    acl_sr_net_3
-@{acl_sr_subnets}           acl_sr_sub_1    acl_sr_sub_2    acl_sr_sub_3
-@{acl_sr_subnet_cidrs}      81.1.1.0/24    82.1.1.0/24    83.1.1.0/24
-@{acl_sr_net_1_ports}       acl_sr_net_1_port_1    acl_sr_net_1_port_2
-@{acl_sr_net_1_vms}         acl_sr_net_1_vm_1    acl_sr_net_1_vm_2
-${TEST_LOG_LEVEL}           trace
-@{TEST_LOG_COMPONENTS}
-...                         org.opendaylight.netvirt.aclservice
-
-
-*** Test Cases ***
-ACL Service Recovery CLI
-    [Documentation]    This test case covers ACL service recovery.
-    ${count_before} =    OvsManager.Get Dump Flows Count    ${OS_CMP1_CONN_ID}    ${INGRESS_ACL_REMOTE_ACL_TABLE}
-    ${node_id} =    OVSDB.Get DPID    ${OS_CMP1_IP}
-    ${resp} =    RequestsLibrary.Delete Request
-    ...    session
-    ...    ${CONFIG_NODES_API}/node/openflow:${node_id}/flow-node-inventory:table/${INGRESS_ACL_REMOTE_ACL_TABLE}
-    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
-    OpenStackOperations.Ping From DHCP Should Not Succeed    ${acl_sr_networks}[0]    ${ACL_SR_NET_1_VM_IPS}[0]
-    ${flow_after_delete} =    OvsManager.Get Dump Flows Count    ${OS_CMP1_CONN_ID}    ${INGRESS_ACL_REMOTE_ACL_TABLE}
-    BuiltIn.Should Be Equal As Strings    ${flow_after_delete}    0
-    ${output} =    Issue_Command_On_Karaf_Console    srm:recover service acl
-    BuiltIn.Should Contain    ${output}    RPC call to recover was successful
-    OpenStackOperations.Ping Vm From DHCP Namespace    ${acl_sr_networks}[0]    ${ACL_SR_NET_1_VM_IPS}[0]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Verify Flow Counts Are Same
-    ...    ${count_before}
-    ...    ${INGRESS_ACL_REMOTE_ACL_TABLE}
-
-ACL Instance Recovery CLI
-    [Documentation]    This test case covers ACL instance recovery.
-    ${count_before} =    OvsManager.Get Dump Flows Count    ${OS_CMP1_CONN_ID}    ${EGRESS_LEARN_ACL_FILTER_TABLE}
-    ${node_id} =    OVSDB.Get DPID    ${OS_CMP1_IP}
-    Write Commands Until Expected Prompt
-    ...    sudo ovs-ofctl del-flows br-int -OOpenflow13 "table=${EGRESS_LEARN_ACL_FILTER_TABLE},icmp"
-    ...    ${DEFAULT_LINUX_PROMPT_STRICT}
-    Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${EGRESS_LEARN_ACL_FILTER_TABLE}
-    ...    False
-    ...    |grep icmp
-    OpenStackOperations.Ping From DHCP Should Not Succeed    ${acl_sr_networks}[0]    ${ACL_SR_NET_1_VM_IPS}[0]
-    ${output} =    OpenStack CLI    openstack security group show ${acl_sr_security_group} | awk '/ id / {print $4}'
-    ${splitted_output} =    String.Split String    ${output}    ${EMPTY}
-    ${instance_id} =    Collections.Get from List    ${splitted_output}    0
-    ${output} =    Issue_Command_On_Karaf_Console    srm:recover instance acl-instance ${instance_id}
-    BuiltIn.Should Contain    ${output}    RPC call to recover was successful
-    OpenStackOperations.Ping Vm From DHCP Namespace    ${acl_sr_networks}[0]    ${ACL_SR_NET_1_VM_IPS}[0]
-    Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${EGRESS_LEARN_ACL_FILTER_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    icmp
-    Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Verify Flow Counts Are Same
-    ...    ${count_before}
-    ...    ${EGRESS_LEARN_ACL_FILTER_TABLE}
-
-ACL Interface Recovery CLI
-    [Documentation]    This test case covers ACL interface recovery.
-    ${output} =    OpenStack CLI    openstack port show ${acl_sr_net_1_ports[0]} |awk '/ mac_address / {print$4}'
-    @{list} =    Split String    ${output}
-    ${port_mac} =    Set Variable    ${list[0]}
-    ${count_before} =    OvsManager.Get Dump Flows Count
-    ...    ${OS_CMP1_CONN_ID}
-    ...    ${EGRESS_ACL_TABLE}
-    ...    port_mac=${port_mac}
-    ${node_id} =    OVSDB.Get DPID    ${OS_CMP1_IP}
-    Write Commands Until Expected Prompt
-    ...    sudo ovs-ofctl del-flows br-int -OOpenflow13 "table=${EGRESS_ACL_TABLE},dl_dst=${port_mac}"
-    ...    ${DEFAULT_LINUX_PROMPT_STRICT}
-    OpenStackOperations.Ping From DHCP Should Not Succeed    ${acl_sr_networks}[0]    ${ACL_SR_NET_1_VM_IPS}[0]
-    Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${EGRESS_LEARN_ACL_FILTER_TABLE}
-    ...    False
-    ...    |grep ${port_mac}
-    ${output} =    OpenStack CLI    openstack port show ${acl_sr_net_1_ports[0]} |awk '/ id / {print$4}'
-    ${splitted_output} =    String.Split String    ${output}    ${EMPTY}
-    ${interface_id} =    Collections.Get from List    ${splitted_output}    0
-    ${output} =    Issue_Command_On_Karaf_Console    srm:recover instance acl-interface ${interface_id}
-    BuiltIn.Should Contain    ${output}    RPC call to recover was successful
-    OpenStackOperations.Ping Vm From DHCP Namespace    ${acl_sr_networks}[0]    ${ACL_SR_NET_1_VM_IPS}[0]
-    Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${EGRESS_ACL_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    ${port_mac}
-    Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Verify Flow Counts Are Same
-    ...    ${count_before}
-    ...    ${EGRESS_ACL_TABLE}
-    ...    port_mac=${port_mac}
-
-
-*** Keywords ***
-Verify Flow Counts Are Same
-    [Documentation]    Verify flows count should be same as before and after for a table id with a given port mac.
-    [Arguments]    ${count_before}    ${table_id}    ${port_mac}=""
-    ${count_after} =    OvsManager.Get Dump Flows Count    ${OS_CMP1_CONN_ID}    ${table_id}    port_mac=${port_mac}
-    BuiltIn.Should Be Equal As Numbers    ${count_before}    ${count_after}
-
-Suite Setup
-    [Documentation]    Create Basic setup for the feature. Creates single network, subnet, two ports and two VMs.
-    OpenStackOperations.OpenStack Suite Setup
-    SetupUtils.Setup_Logging_For_Debug_Purposes_On_List_Or_All    ${TEST_LOG_LEVEL}    ${TEST_LOG_COMPONENTS}
-    OpenStackOperations.Create Allow All SecurityGroup    ${acl_sr_security_group}
-    OpenStackOperations.Create Network    ${acl_sr_networks}[0]
-    OpenStackOperations.Create SubNet    ${acl_sr_networks}[0]    ${acl_sr_subnets}[0]    ${acl_sr_subnet_cidrs[0]}
-    OpenStackOperations.Create Port    ${acl_sr_networks}[0]    ${acl_sr_net_1_ports[0]}    sg=${acl_sr_security_group}
-    OpenStackOperations.Create Port    ${acl_sr_networks}[0]    ${acl_sr_net_1_ports[1]}    sg=${acl_sr_security_group}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${PORT_URL}
-    ...    ${acl_sr_net_1_ports}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${acl_sr_net_1_ports[0]}
-    ...    ${acl_sr_net_1_vms[0]}
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${acl_sr_security_group}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${acl_sr_net_1_ports[1]}
-    ...    ${acl_sr_net_1_vms[1]}
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${acl_sr_security_group}
-    @{ACL_SR_NET_1_VM_IPS}    ${net1_dhcp_ip} =    OpenStackOperations.Get VM IPs    @{acl_sr_net_1_vms}
-    BuiltIn.Set Suite Variable    @{ACL_SR_NET_1_VM_IPS}
-    BuiltIn.Should Not Contain    ${ACL_SR_NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${net1_dhcp_ip}    None
-    OpenStackOperations.Ping Vm From DHCP Namespace    ${acl_sr_networks}[0]    ${ACL_SR_NET_1_VM_IPS}[0]
-    OpenStackOperations.Ping Vm From DHCP Namespace    ${acl_sr_networks}[0]    ${ACL_SR_NET_1_VM_IPS}[1]
diff --git a/csit/suites/netvirt/bgpvpn/bgpvpn.robot b/csit/suites/netvirt/bgpvpn/bgpvpn.robot
deleted file mode 100644 (file)
index 28caca1..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-*** Settings ***
-Documentation       Test suite to validate bgpvpn configuration commands in an openstack integrated environment.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Resource            ../../../libraries/BgpOperations.robot
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Tcpdump.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.robot
-
-Suite Setup         OpenStackOperations.OpenStack Suite Setup
-Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Test Cases ***
-Verify ODL supports VPN creation via neutron bgpvpn create command
-    [Documentation]    Verify ODL supports VPN creation via neutron bgpvpn create command
-    OpenStackOperations.Create Bgpvpn    BgpVpn1    --route-distinguisher 100:10
-    ${vpnid} =    OpenStackOperations.Get Bgpvpn Id    BgpVpn1
diff --git a/csit/suites/netvirt/elan/elan.robot b/csit/suites/netvirt/elan/elan.robot
deleted file mode 100644 (file)
index 95f9c40..0000000
+++ /dev/null
@@ -1,342 +0,0 @@
-*** Settings ***
-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.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Library             String
-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            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${SECURITY_GROUP}       elan_sg
-@{NETWORKS}             elan_net_1    elan_net_2    elan_net_3
-@{SUBNETS}              elan_sub_1    elan_sub_2    elan_sub_3
-@{SUBNET_CIDRS}         81.1.1.0/24    82.1.1.0/24    83.1.1.0/24
-@{NET_1_PORTS}          elan_net_1_port_1    elan_net_1_port_2
-@{NET_2_PORTS}          elan_net_2_port_1    elan_net_2_port_2
-@{NET_3_PORTS}          elan_net_3_port_1    elan_net_3_port_2
-@{NET_1_VMS}            elan_net_1_vm_1    elan_net_1_vm_2
-@{NET_2_VMS}            elan_net_2_vm_1    elan_net_2_vm_2
-@{NET_3_VMS}            elan_net_3_vm_1    elan_net_3_vm_2
-
-
-*** Test Cases ***
-Verify Datapath for Single ELAN with Multiple DPN
-    [Documentation]    Verify Flow Table and Datapath
-    ${smac_cn1} =    BuiltIn.Create List    ${NET_1_MACS}[0]
-    ${smac_cn2} =    BuiltIn.Create List    ${NET_1_MACS}[1]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Verify Flows Are Present For ELAN Service
-    ...    ${OS_CMP1_IP}
-    ...    ${smac_cn1}
-    ...    ${NET_1_MACS}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Verify Flows Are Present For ELAN Service
-    ...    ${OS_CMP2_IP}
-    ...    ${smac_cn2}
-    ...    ${NET_1_MACS}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ping -c 3 ${NET_1_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Verify Datapath After OVS Restart
-    [Documentation]    Verify datapath after OVS restart
-    FOR    ${ip}    IN    @{OS_CMP_IPS}
-        OVSDB.Restart OVSDB    ${ip}
-    END
-    FOR    ${ip}    IN    @{OS_CMP_IPS}
-        BuiltIn.Wait Until Keyword Succeeds    30s    10s    OVSDB.Verify OVS Reports Connected    tools_system=${ip}
-    END
-    ${smac_cn1} =    BuiltIn.Create List    ${NET_1_MACS}[0]
-    ${smac_cn2} =    BuiltIn.Create List    ${NET_1_MACS}[1]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    10s
-    ...    Verify Flows Are Present For ELAN Service
-    ...    ${OS_CMP1_IP}
-    ...    ${smac_cn1}
-    ...    ${NET_1_MACS}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    10s
-    ...    Verify Flows Are Present For ELAN Service
-    ...    ${OS_CMP2_IP}
-    ...    ${smac_cn2}
-    ...    ${NET_1_MACS}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ping -c 3 ${NET_1_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Verify Datapath After Recreate VM Instance
-    [Documentation]    Verify datapath after recreating Vm instance
-    OpenStackOperations.Delete Vm Instance    ${NET_1_VMS[0]}
-    ${smac_cn1} =    BuiltIn.Create List    ${NET_1_MACS}[0]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Verify Flows Are Removed For ELAN Service
-    ...    ${OS_CMP1_IP}
-    ...    ${smac_cn1}
-    OpenStackOperations.Remove RSA Key From KnownHosts    ${NET_1_VM_IPS}[0]
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${NET_1_PORTS[0]}
-    ...    ${NET_1_VMS[0]}
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    Builtin.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Verify Flows Are Present For ELAN Service
-    ...    ${OS_CMP1_IP}
-    ...    ${smac_cn1}
-    ...    ${NET_1_MACS}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ping -c 3 ${NET_1_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Delete All elan_net_1 VM And Verify Flow Table Updated
-    [Documentation]    Verify Flow table after all VM instance deleted
-    FOR    ${vm}    IN    @{NET_1_VMS}
-        OpenStackOperations.Delete Vm Instance    ${vm}
-    END
-    Verify Flows Are Removed For ELAN Service On All compute Nodes    ${NET_1_MACS}
-
-Verify Datapath for Multiple ELAN with Multiple DPN
-    [Documentation]    Verify Flow Table and Data path for Multiple ELAN with Multiple DPN
-    [Setup]    BuiltIn.Run Keywords    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-    ...    AND    MultipleElan Testsuite Setup
-    ${smac_cn1} =    BuiltIn.Create List    ${VM_MACAddr_elan_net_2}[0]    ${VM_MACAddr_elan_net_3}[0]
-    ${smac_cn2} =    BuiltIn.Create List    ${VM_MACAddr_elan_net_2}[1]    ${VM_MACAddr_elan_net_3}[1]
-    ${MAC_LIST} =    BuiltIn.Create List    @{VM_MACAddr_elan_net_2}    @{VM_MACAddr_elan_net_3}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Verify Flows Are Present For ELAN Service
-    ...    ${OS_CMP1_IP}
-    ...    ${smac_cn1}
-    ...    ${MAC_LIST}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Verify Flows Are Present For ELAN Service
-    ...    ${OS_CMP2_IP}
-    ...    ${smac_cn2}
-    ...    ${MAC_LIST}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ping -c 3 ${NET_2_VM_IPS[1]}
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[2]
-    ...    ${NET_3_VM_IPS}[1]
-    ...    ping -c 3 ${NET_3_VM_IPS[0]}
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ping -c 3 ${NET_3_VM_IPS[0]}
-    BuiltIn.Should Not Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[2]
-    ...    ${NET_3_VM_IPS}[1]
-    ...    ping -c 3 ${NET_2_VM_IPS[1]}
-    BuiltIn.Should Not Contain    ${output}    ${PING_REGEXP}
-    @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Verify Flows Are Present For ELAN Service
-    ...    ${OS_CMP1_IP}
-    ...    ${smac_cn1}
-    ...    ${MAC_LIST}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS[1]}
-    ...    ping -c 3 ${NET_2_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-
-*** Keywords ***
-Suite Setup
-    OpenStackOperations.OpenStack Suite Setup
-    Create Single Elan
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Create Single Elan
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    OpenStackOperations.Create Network    ${NETWORKS}[0]
-    OpenStackOperations.Create SubNet    ${NETWORKS}[0]    ${SUBNETS}[0]    ${SUBNET_CIDRS[0]}
-    OpenStackOperations.Create Port    ${NETWORKS}[0]    ${NET_1_PORTS[0]}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${NETWORKS}[0]    ${NET_1_PORTS[1]}    sg=${SECURITY_GROUP}
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${NET_1_PORTS}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${NET_1_PORTS[0]}
-    ...    ${NET_1_VMS[0]}
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${NET_1_PORTS[1]}
-    ...    ${NET_1_VMS[1]}
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    Builtin.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
-    @{NET_1_MACS} =    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    OpenStackOperations.Get Ports MacAddr
-    ...    ${NET_1_PORTS}
-    Builtin.Set Suite Variable    @{NET_1_MACS}
-
-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_CIDRS[1]}
-    OpenStackOperations.Create SubNet    ${NETWORKS}[2]    ${SUBNETS}[2]    ${SUBNET_CIDRS[2]}
-    OpenStackOperations.Create Port    ${NETWORKS}[1]    ${NET_2_PORTS[0]}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${NETWORKS}[1]    ${NET_2_PORTS[1]}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${NETWORKS}[2]    ${NET_3_PORTS[0]}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${NETWORKS}[2]    ${NET_3_PORTS[1]}    sg=${SECURITY_GROUP}
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${NET_3_PORTS}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${NET_2_PORTS[0]}
-    ...    ${NET_2_VMS[0]}
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${NET_2_PORTS[1]}
-    ...    ${NET_2_VMS[1]}
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${NET_3_PORTS[0]}
-    ...    ${NET_3_VMS[0]}
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${NET_3_PORTS[1]}
-    ...    ${NET_3_VMS[1]}
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
-    @{NET_3_VM_IPS}    ${NET_3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_3_VMS}
-    Builtin.Set Suite Variable    @{NET_2_VM_IPS}
-    Builtin.Set Suite Variable    @{NET_3_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_3_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_3_DHCP_IP}    None
-    @{VM_MACAddr_elan_net_2} =    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    OpenStackOperations.Get Ports MacAddr
-    ...    ${NET_2_PORTS}
-    Builtin.Set Suite Variable    @{VM_MACAddr_elan_net_2}
-    @{VM_MACAddr_elan_net_3} =    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    OpenStackOperations.Get Ports MacAddr
-    ...    ${NET_3_PORTS}
-    Builtin.Set Suite Variable    @{VM_MACAddr_elan_net_3}
-    OpenStackOperations.Show Debugs    @{NET_2_VMS}    @{NET_3_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Verify Flows Are Present For ELAN Service
-    [Arguments]    ${ip}    ${smacs}    ${dmacs}
-    ${flow_output} =    Utils.Run Command On Remote System And Log
-    ...    ${ip}
-    ...    sudo ovs-ofctl -O OpenFlow13 dump-flows ${INTEGRATION_BRIDGE}
-    BuiltIn.Should Contain    ${flow_output}    table=${ELAN_SMACTABLE}
-    ${smac_output} =    String.Get Lines Containing String    ${flow_output}    table=${ELAN_SMACTABLE}
-    Builtin.Log    ${smac_output}
-    FOR    ${smac}    IN    @{smacs}
-        ${resp} =    BuiltIn.Should Contain    ${smac_output}    ${smac}
-    END
-    BuiltIn.Should Contain    ${flow_output}    table=${ELAN_DMACTABLE}
-    ${dmac_output} =    String.Get Lines Containing String    ${flow_output}    table=${ELAN_DMACTABLE}
-    Builtin.Log    ${dmac_output}
-    FOR    ${dmac}    IN    @{dmacs}
-        ${resp} =    BuiltIn.Should Contain    ${dmac_output}    ${dmac}
-    END
-    BuiltIn.Should Contain    ${flow_output}    table=${ELAN_UNKNOWNMACTABLE}
-    ${smac_output} =    String.Get Lines Containing String    ${flow_output}    table=${ELAN_UNKNOWNMACTABLE}
-    Builtin.Log    ${smac_output}
-
-Verify Flows Are Removed For ELAN Service
-    [Arguments]    ${ip}    ${smacs}
-    ${flow_output} =    Utils.Run Command On Remote System And Log
-    ...    ${ip}
-    ...    sudo ovs-ofctl -O OpenFlow13 dump-flows ${INTEGRATION_BRIDGE}
-    BuiltIn.Should Contain    ${flow_output}    table=${ELAN_SMACTABLE}
-    ${smac_output} =    String.Get Lines Containing String    ${flow_output}    table=${ELAN_SMACTABLE}
-    Builtin.Log    ${smac_output}
-    FOR    ${smac}    IN    @{smacs}
-        ${resp} =    BuiltIn.Should Not Contain    ${smac_output}    ${smac}
-    END
-    BuiltIn.Should Contain    ${flow_output}    table=${ELAN_DMACTABLE}
-    ${dmac_output} =    String.Get Lines Containing String    ${flow_output}    table=${ELAN_DMACTABLE}
-    Builtin.Log    ${dmac_output}
-    FOR    ${dmac}    IN    @{smacs}
-        ${resp} =    BuiltIn.Should Not Contain    ${dmac_output}    ${dmac}
-    END
-
-Verify Flows Are Removed For ELAN Service On All compute Nodes
-    [Arguments]    ${smacs}
-    FOR    ${ip}    IN    @{OS_CMP_IPS}
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    30s
-        ...    10s
-        ...    Verify Flows Are Removed For ELAN Service
-        ...    ${ip}
-        ...    ${smacs}
-    END
diff --git a/csit/suites/netvirt/elan/elan_service_recovery.robot b/csit/suites/netvirt/elan/elan_service_recovery.robot
deleted file mode 100644 (file)
index 41cfc07..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-*** Settings ***
-Documentation       Test Suite for elan interface and service recovery
-
-Library             Collections
-Library             String
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/FlowLib.robot
-Resource            ../../../libraries/KarafKeywords.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../variables/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${REQ_NETWORK}              elansr_net_1
-${REQ_SUBNET}               elansr_sub_1
-${REQ_SUBNET_CIDR}          85.1.0.0/16
-${SECURITY_GROUP}           elansr_sg
-${SERVICE-STATUS-CLI}       srm:recover service elan
-${INTERFACE-STATUS-CLI}     srm:recover instance elan-interface
-${NUM_OF_PORTS_PER_HOST}    2
-@{NET_1_VMS}                elansr_net_1_vm_1    elansr_net_1_vm_2
-@{NET_2_VMS}                elansr_net_2_vm_3    elansr_net_2_vm_4
-@{PORT_LIST}                elansr_net_1_port_1    elansr_net_1_port_2    elansr_net_1_port_3    elansr_net_1_port_4
-
-
-*** Test Cases ***
-To Verify ELAN Service Recovery
-    [Documentation]    To Verify Elan Service recovery by deleting and recovering multiple flows
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ELAN_SMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    dl_src=${PORT_MAC_ADDR}[0]
-    ...    actions=goto_table:${ELAN_DMACTABLE}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP2_IP}
-    ...    ${ELAN_SMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    dl_src=${PORT_MAC_ADDR}[2]
-    ...    actions=goto_table:${ELAN_DMACTABLE}
-    ${flow_id} =    FlowLib.Get Flow Id    ${DPNID_1}    ${ELAN_SMAC_TABLE}    ${PORT_MAC_ADDR}[0]
-    FlowLib.Delete Flow Via Restconf    ${DPNID_1}    ${ELAN_SMAC_TABLE}    ${flow_id}
-    ${flow_id} =    FlowLib.Get Flow Id    ${DPNID_2}    ${ELAN_SMAC_TABLE}    ${PORT_MAC_ADDR}[2]
-    FlowLib.Delete Flow Via Restconf    ${DPNID_2}    ${ELAN_SMAC_TABLE}    ${flow_id}
-    ${mac_elements} =    BuiltIn.Create List    ${PORT_MAC_ADDR}[0]
-    Utils.Check For Elements Not At URI
-    ...    ${CONFIG_NODES_API}/node/openflow:${DPNID_1}/table/${ELAN_SMAC_TABLE}
-    ...    ${mac_elements}
-    ${mac_elements} =    BuiltIn.Create List    ${PORT_MAC_ADDR}[2]
-    Utils.Check For Elements Not At URI
-    ...    ${CONFIG_NODES_API}/node/openflow:${DPNID_2}/table/${ELAN_SMAC_TABLE}
-    ...    ${mac_elements}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    10s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ELAN_SMAC_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    dl_src=${PORT_MAC_ADDR}[0]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    10s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP2_IP}
-    ...    ${ELAN_SMAC_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    dl_src=${PORT_MAC_ADDR}[2]
-    KarafKeywords.Issue Command On Karaf Console    ${SERVICE-STATUS-CLI}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ELAN_SMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    dl_src=${PORT_MAC_ADDR}[0]
-    ...    actions=goto_table:${ELAN_DMACTABLE}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP2_IP}
-    ...    ${ELAN_SMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    dl_src=${PORT_MAC_ADDR}[2]
-    ...    actions=goto_table:${ELAN_DMACTABLE}
-    ${mac_elements} =    BuiltIn.Create List    ${PORT_MAC_ADDR}[0]
-    Utils.Check For Elements At URI
-    ...    ${CONFIG_NODES_API}/node/openflow:${DPNID_1}/table/${ELAN_SMAC_TABLE}
-    ...    ${mac_elements}
-    ${mac_elements} =    BuiltIn.Create List    ${PORT_MAC_ADDR}[2]
-    Utils.Check For Elements At URI
-    ...    ${CONFIG_NODES_API}/node/openflow:${DPNID_2}/table/${ELAN_SMAC_TABLE}
-    ...    ${mac_elements}
-
-To Verify Elan Interface recovery
-    [Documentation]    To Verify the Elan Interface recovery by deleting single Flow
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ELAN_SMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    dl_src=${PORT_MAC_ADDR}[0]
-    ...    actions=goto_table:${ELAN_DMACTABLE}
-    ${flow_id} =    FlowLib.Get Flow Id    ${DPNID_1}    ${ELAN_SMAC_TABLE}    ${PORT_MAC_ADDR}[0]
-    FlowLib.Delete Flow Via Restconf    ${DPNID_1}    ${ELAN_SMAC_TABLE}    ${flow_id}
-    ${mac_elements} =    BuiltIn.Create List    ${PORT_MAC_ADDR}[0]
-    Utils.Check For Elements Not At URI
-    ...    ${CONFIG_NODES_API}/node/openflow:${DPNID_1}/table/${ELAN_SMAC_TABLE}
-    ...    ${mac_elements}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ELAN_SMAC_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    dl_src=${PORT_MAC_ADDR}[0]
-    ${elan_instance_id} =    Get Elan Instance ID
-    ${elan_interface_id} =    Get Elan Interfaces ID    ${elan_instance_id}    ${PORT_MAC_ADDR}[0]
-    Recover Elan Flows    ${elan_interface_id}
-    ${mac_elements} =    BuiltIn.Create List    ${PORT_MAC_ADDR}[0]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    10s
-    ...    5s
-    ...    Utils.Check For Elements At URI
-    ...    ${CONFIG_NODES_API}/node/openflow:${DPNID_1}/table/${ELAN_SMAC_TABLE}
-    ...    ${mac_elements}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ELAN_SMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    dl_src=${PORT_MAC_ADDR}[0]
-    ...    actions=goto_table:${ELAN_DMACTABLE}
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Test Suite for Elan interface and service recovery
-    OpenStackOperations.OpenStack Suite Setup
-    Create Setup
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Create Neutron Ports
-    [Documentation]    Create required number of ports under previously created subnets
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_HOST}
-        OpenStackOperations.Create Port    ${REQ_NETWORK}    ${PORT_LIST}[${index}]    sg=${SECURITY_GROUP}
-        OpenStackOperations.Create Port    ${REQ_NETWORK}    ${PORT_LIST}[${index + 2}]    sg=${SECURITY_GROUP}
-    END
-    @{PORT_MAC_ADDR} =    OpenStackOperations.Get Ports MacAddr    ${PORT_LIST}
-    BuiltIn.Set Suite Variable    @{PORT_MAC_ADDR}
-
-Create Nova VMs
-    [Documentation]    Create Vm instances on compute nodes
-    [Arguments]    ${num_of_vms_per_dpn}
-    FOR    ${index}    IN RANGE    0    ${num_of_vms_per_dpn}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORT_LIST}[${index}]
-        ...    ${NET_1_VMS}[${index}]
-        ...    ${OS_CMP1_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORT_LIST}[${index + 2}]
-        ...    ${NET_2_VMS}[${index}]
-        ...    ${OS_CMP2_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-    END
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
-
-Create Setup
-    [Documentation]    Create basic topology
-    BuiltIn.Wait Until Keyword Succeeds    60s    10s    VpnOperations.Verify Tunnel Status as UP
-    OpenStackOperations.Create Network    ${REQ_NETWORK}
-    OpenStackOperations.Create SubNet    ${REQ_NETWORK}    ${REQ_SUBNET}    ${REQ_SUBNET_CIDR}
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    Create Neutron Ports
-    Create Nova VMs    ${2}
-    ${DPNID_1} =    OVSDB.Get DPID    ${OS_CMP1_IP}
-    ${DPNID_2} =    OVSDB.Get DPID    ${OS_CMP2_IP}
-    BuiltIn.Set Suite Variable    ${DPNID_1}
-    BuiltIn.Set Suite Variable    ${DPNID_2}
-
-Get Elan Instance ID
-    [Documentation]    Retrieving ELAN instance ID
-    ${output} =    KarafKeywords.Issue Command On Karaf Console    elaninterface:show
-    ${elan_instance} =    String.Split String    ${output}
-    ${elan_instance_with_tag} =    BuiltIn.Set Variable    ${elan_instance[5]}
-    ${elan_instance_id} =    String.Split String    ${elan_instance_with_tag}    /
-    RETURN    ${elan_instance_id}[0]
-
-Get Elan Interfaces ID
-    [Documentation]    Getting the ELAN interface ID with corresponding mac address and returning interface ID list
-    [Arguments]    ${elan_id}    ${mac}
-    ${elan_output} =    KarafKeywords.Issue Command On Karaf Console    elanmactable:show ${elan_id}
-    ${interface_id} =    String.Get Regexp Matches    ${elan_output}    (${REGEX_UUID})\\s*${mac}    1
-    RETURN    ${interface_id}[0]
-
-Recover Elan Flows
-    [Documentation]    Recover ELAN flows for the given interfaces
-    [Arguments]    ${interface}
-    ${recover_msg} =    KarafKeywords.Issue Command On Karaf Console    ${INTERFACE-STATUS-CLI} ${interface}
-    BuiltIn.Should Contain    ${recover_msg}    RPC call to recover was successful
diff --git a/csit/suites/netvirt/host_route/host_route_handling.robot b/csit/suites/netvirt/host_route/host_route_handling.robot
deleted file mode 100644 (file)
index 543d93a..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-*** Settings ***
-Documentation       Test suite for VM based Host Route Handling
-
-Library             Collections
-Library             RequestsLibrary
-Library             SSHLibrary
-Library             String
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../variables/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-@{NETWORKS}
-...                             host_route_network_1
-...                             host_route_network_2
-...                             host_route_network_3
-...                             host_route_network_4
-@{SUBNETS}
-...                             host_route_subnet_1
-...                             host_route_subnet_2
-...                             host_route_subnet_3
-...                             host_route_subnet_4
-@{SUBNET_CIDR}                  10.10.10.0    10.20.20.0    10.30.30.0    10.40.40.0
-${PREFIX24}                     /24
-${SECURITY_GROUP}               host_route_security_group
-@{PORTS}
-...                             host_route_port_1
-...                             host_route_port_2
-...                             host_route_port_3
-...                             host_route_port_4
-...                             host_route_port_5
-...                             host_route_port_6
-...                             host_route_port_7
-@{GATEWAY_PORTS}
-...                             host_route_gw_port_1
-...                             host_route_gw_port_2
-...                             host_route_gw_port_3
-...                             host_route_gw_port_4
-...                             host_route_gw_port_5
-...                             host_route_gw_port_6
-...                             host_route_gw_port_7
-${ALLOWED_ADDRESS_PAIR}         0.0.0.0/0
-${NETWORK_1_VM}                 host_route_vm_1
-@{NETWORK_2_VMS}                host_route_vm_2    host_route_vm_3
-@{NETWORK_3_VMS}                host_route_vm_4    host_route_vm_5
-@{NETWORK_4_VMS}                host_route_vm_6    host_route_vm_7
-@{GATEWAY_VMS}                  host_route_gw_vm_1    host_route_gw_vm_2
-${ROUTER}                       host_route_router_1
-@{NON_NEUTRON_DESTINATION}      5.5.5.0    6.6.6.0
-${NON_NEUTRON_NEXTHOP}          10.10.10.250
-
-
-*** Test Cases ***
-Verify creation of host route via openstack subnet create option
-    [Documentation]    Creating subnet host route via openstack cli and verifying in controller and openstack.
-    OpenStackOperations.Create SubNet
-    ...    ${NETWORKS}[0]
-    ...    ${SUBNETS}[0]
-    ...    ${SUBNET_CIDR}[0]${PREFIX24}
-    ...    --host-route destination=${SUBNET_CIDR}[2]${PREFIX24},gateway=${NON_NEUTRON_NEXTHOP}
-    ${SUBNET_GW_IP} =    BuiltIn.Create List
-    FOR    ${subnet}    IN    @{SUBNETS}
-        ${ip} =    OpenStackOperations.Get Subnet Gateway Ip    ${subnet}
-        Collections.Append To List    ${SUBNET_GW_IP}    ${ip}
-    END
-    BuiltIn.Set Suite Variable    ${SUBNET_GW_IP}
-    ${elements} =    BuiltIn.Create List
-    ...    "destination":"${SUBNET_CIDR}[2]${PREFIX24}","nexthop":"${NON_NEUTRON_NEXTHOP}"
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${elements}
-    Verify Hostroutes In Subnet
-    ...    ${SUBNETS}[0]
-    ...    destination='${SUBNET_CIDR}[2]${PREFIX24}',\\sgateway='${NON_NEUTRON_NEXTHOP}'
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${PORTS}[0]
-    ...    sg=${SECURITY_GROUP}
-    ...    allowed_address_pairs=${ALLOWED_ADDRESS_PAIR}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[0]
-    ...    ${NETWORK_1_VM}
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${GATEWAY_PORTS}[0]
-    ...    sg=${SECURITY_GROUP}
-    ...    allowed_address_pairs=${ALLOWED_ADDRESS_PAIR}
-    OpenStackOperations.Create Vm Instance With Ports On Compute Node
-    ...    ${GATEWAY_PORTS}[0]
-    ...    ${GATEWAY_PORTS}[1]
-    ...    ${GATEWAY_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Ports On Compute Node
-    ...    ${GATEWAY_PORTS}[4]
-    ...    ${GATEWAY_PORTS}[5]
-    ...    ${GATEWAY_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Poll VM Is ACTIVE    ${NETWORK_1_VM}
-    BuiltIn.Wait Until Keyword Succeeds    180s    15s    OpenStackOperations.Get VM IP    true    ${NETWORK_1_VM}
-    ${NETWORK_1_VM_IPS}    ${NETWORK_1_DHCP_IP}    ${VM_COSOLE_OUTPUT} =    OpenStackOperations.Get VM IP
-    ...    true
-    ...    ${NETWORK_1_VM}
-    BuiltIn.Set Suite Variable    ${NETWORK_1_VM_IPS}
-    @{GATEWAY_VM_IPS}    ${GATEWAY_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{GATEWAY_VMS}
-    BuiltIn.Set Suite Variable    @{GATEWAY_VM_IPS}
-    #TODO: Verifiy the routes in VM.
-    OpenStackOperations.Show Debugs    ${NETWORK_1_VM}    @{GATEWAY_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Verify creation of host route via openstack subnet update option
-    [Documentation]    Creating host route using subnet update option and setting nexthop ip to subnet gateway ip. Verifying in controller and openstack.
-    OpenStackOperations.Update SubNet
-    ...    ${SUBNETS}[0]
-    ...    --host-route destination=${NON_NEUTRON_DESTINATION}[0]${PREFIX24},gateway=${SUBNET_GW_IP}[0]
-    ${elements} =    BuiltIn.Create List
-    ...    "destination":"${NON_NEUTRON_DESTINATION}[0]${PREFIX24}","nexthop":"${SUBNET_GW_IP}[0]"
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${elements}
-    Verify Hostroutes In Subnet
-    ...    ${SUBNETS}[0]
-    ...    destination='${NON_NEUTRON_DESTINATION}[0]${PREFIX24}',\\sgateway='${SUBNET_GW_IP}[0]'
-
-Verify removal of host route
-    [Documentation]    Removing subnet host routes via cli and verifying in controller and openstack.
-    OpenStackOperations.Unset SubNet
-    ...    ${SUBNETS}[0]
-    ...    --host-route destination=${NON_NEUTRON_DESTINATION}[0]${PREFIX24},gateway=${SUBNET_GW_IP}[0]
-    ${elements} =    BuiltIn.Create List
-    ...    "destination":"${NON_NEUTRON_DESTINATION}[0]${PREFIX24}","nexthop":"${SUBNET_GW_IP}[0]"
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Utils.Check For Elements Not At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${elements}
-    Verify No Hostroutes In Subnet
-    ...    ${SUBNETS}[0]
-    ...    destination='${NON_NEUTRON_DESTINATION}[0]${PREFIX24}',\\sgateway='${SUBNET_GW_IP}[0]'
-
-Verify creation of host route via openstack subnet set option with VM port as next hop IP
-    [Documentation]    Creating host route using subnet update option and setting nexthop to gateway vm ip and verifying in controller and openstack.
-    OpenStackOperations.Update SubNet
-    ...    ${SUBNETS}[0]
-    ...    --host-route destination=${SUBNET_CIDR}[2]${PREFIX24},gateway=${GATEWAY_VM_IPS}[0]
-    ${elements} =    BuiltIn.Create List
-    ...    "destination":"${SUBNET_CIDR}[2]${PREFIX24}","nexthop":"${GATEWAY_VM_IPS}[0]"
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${elements}
-    Verify Hostroutes In Subnet
-    ...    ${SUBNETS}[0]
-    ...    destination='${SUBNET_CIDR}[2]${PREFIX24}',\\sgateway='${GATEWAY_VM_IPS}[0]'
-
-Verify creation of host route via openstack subnet set option with VM port as next hop IP with change in destination prefix
-    [Documentation]    Creating host route using subnet update option and setting nexthop ip to gateway vm ip and changing destination prefix.
-    ...    Verifying in controller and openstack.
-    OpenStackOperations.Update SubNet
-    ...    ${SUBNETS}[0]
-    ...    --host-route destination=${SUBNET_CIDR}[1]${PREFIX24},gateway=${GATEWAY_VM_IPS}[0]
-    ${elements} =    BuiltIn.Create List
-    ...    "destination":"${SUBNET_CIDR}[1]${PREFIX24}","nexthop":"${GATEWAY_VM_IPS}[0]"
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${elements}
-    Verify Hostroutes In Subnet
-    ...    ${SUBNETS}[0]
-    ...    destination='${SUBNET_CIDR}[1]${PREFIX24}',\\sgateway='${GATEWAY_VM_IPS}[0]'
-
-Verify creation of host route via openstack subnet set option with change in next hop IP
-    [Documentation]    Creating host route using subnet update option and setting nexthop ip to new gateway vm ip without changing the
-    ...    destination prefix. Verifying in controller and openstack.
-    OpenStackOperations.Update SubNet
-    ...    ${SUBNETS}[0]
-    ...    --host-route destination=${SUBNET_CIDR}[1]${PREFIX24},gateway=${GATEWAY_VM_IPS}[1]
-    ${elements} =    BuiltIn.Create List
-    ...    "destination":"${SUBNET_CIDR}[1]${PREFIX24}","nexthop":"${GATEWAY_VM_IPS}[1]"
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${elements}
-    Verify Hostroutes In Subnet
-    ...    ${SUBNETS}[0]
-    ...    destination='${SUBNET_CIDR}[1]${PREFIX24}',\\sgateway='${GATEWAY_VM_IPS}[1]'
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Creates initial setup.
-    VpnOperations.Basic Suite Setup
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    FOR    ${network}    IN    @{NETWORKS}
-        OpenStackOperations.Create Network    ${network}
-    END
-    FOR    ${i}    IN RANGE    1    4
-        OpenStackOperations.Create SubNet    ${NETWORKS}[${i}]    ${SUBNETS}[${i}]    ${SUBNET_CIDR}[${i}]${PREFIX24}
-        OpenStackOperations.Create Port
-        ...    ${NETWORKS}[${i}]
-        ...    ${PORTS}[${i}]
-        ...    sg=${SECURITY_GROUP}
-        ...    allowed_address_pairs=${ALLOWED_ADDRESS_PAIR}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORTS}[${i}]
-        ...    ${NETWORK_${i+1}_VMS}[0]
-        ...    ${OS_CMP1_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-        OpenStackOperations.Create Port
-        ...    ${NETWORKS}[${i}]
-        ...    ${PORTS}[${i+3}]
-        ...    sg=${SECURITY_GROUP}
-        ...    allowed_address_pairs=${ALLOWED_ADDRESS_PAIR}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORTS}[${i+3}]
-        ...    ${NETWORK_${i+1}_VMS}[1]
-        ...    ${OS_CMP2_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-        OpenStackOperations.Create Port
-        ...    ${NETWORKS}[${i}]
-        ...    ${GATEWAY_PORTS}[${i}]
-        ...    sg=${SECURITY_GROUP}
-        ...    allowed_address_pairs=${ALLOWED_ADDRESS_PAIR}
-        OpenStackOperations.Create Port
-        ...    ${NETWORKS}[${i}]
-        ...    ${GATEWAY_PORTS}[${i+3}]
-        ...    sg=${SECURITY_GROUP}
-        ...    allowed_address_pairs=${ALLOWED_ADDRESS_PAIR}
-    END
-    @{NETWORK_2_VM_IPS}    ${NETWORK_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NETWORK_2_VMS}
-    BuiltIn.Set Suite Variable    @{NETWORK_2_VM_IPS}
-    @{NETWORK_3_VM_IPS}    ${NETWORK_3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NETWORK_3_VMS}
-    BuiltIn.Set Suite Variable    @{NETWORK_3_VM_IPS}
-    @{NETWORK_4_VM_IPS}    ${NETWORK_4_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NETWORK_4_VMS}
-    BuiltIn.Set Suite Variable    @{NETWORK_4_VM_IPS}
-    OpenStackOperations.Show Debugs    @{NETWORK_2_VMS}    @{NETWORK_3_VMS}    @(NETWORK_4_VMS)
-    OpenStackOperations.Get Suite Debugs
-
-Verify Hostroutes In Subnet
-    [Documentation]    Show subnet with openstack request and verifies given hostroute in subnet.
-    [Arguments]    ${subnet_name}    @{elements}
-    ${output} =    OpenStackOperations.Show SubNet    ${subnet_name}
-    FOR    ${element}    IN    @{elements}
-        BuiltIn.Should Match Regexp    ${output}    ${element}
-    END
-
-Verify No Hostroutes In Subnet
-    [Documentation]    Show subnet with openstack request and verifies no given hostroute in subnet.
-    [Arguments]    ${subnet_name}    @{elements}
-    ${output} =    OpenStackOperations.Show SubNet    ${subnet_name}
-    FOR    ${element}    IN    @{elements}
-        BuiltIn.Should Not Match Regexp    ${output}    ${element}
-    END
diff --git a/csit/suites/netvirt/l2l3_gatewaymac_arp.robot b/csit/suites/netvirt/l2l3_gatewaymac_arp.robot
deleted file mode 100644 (file)
index 85f68a7..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-*** Settings ***
-Documentation       Test Suite for Gateway mac based L2L3 seggragation
-
-Library             Collections
-Library             RequestsLibrary
-Library             SSHLibrary
-Library             String
-Resource            ../../libraries/BgpOperations.robot
-Resource            ../../libraries/DevstackUtils.robot
-Resource            ../../libraries/KarafKeywords.robot
-Resource            ../../libraries/OVSDB.robot
-Resource            ../../libraries/OpenStackOperations.robot
-Resource            ../../libraries/OvsManager.robot
-Resource            ../../libraries/SetupUtils.robot
-Resource            ../../libraries/Utils.robot
-Resource            ../../libraries/VpnOperations.robot
-Resource            ../../variables/netvirt/Variables.robot
-Resource            ../../variables/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${REQ_NUM_NET}                      2
-${REQ_NUM_SUBNET}                   2
-${REQ_NUM_OF_PORTS}                 4
-${REQ_NUM_OF_VMS_PER_DPN}           2
-${NUM_OF_PORTS_PER_HOST}            2
-${NEXTHOP}                          0.0.0.0
-@{REQ_NETWORKS}                     l2l3_gw_mac_arp_net1    l2l3_gw_mac_arp_net2
-@{VM_NAMES}
-...                                 l2l3_gw_mac_arp_vm1
-...                                 l2l3_gw_mac_arp_vm2
-...                                 l2l3_gw_mac_arp_vm3
-...                                 l2l3_gw_mac_arp_vm4
-@{NET_1_VMS}                        l2l3_gw_mac_arp_vm1    l2l3_gw_mac_arp_vm2
-@{NET_2_VMS}                        l2l3_gw_mac_arp_vm3    l2l3_gw_mac_arp_vm4
-@{PORT_LIST}
-...                                 l2l3_gw_mac_arp_port1
-...                                 l2l3_gw_mac_arp_port2
-...                                 l2l3_gw_mac_arp_port3
-...                                 l2l3_gw_mac_arp_port4
-@{REQ_SUBNETS}                      l2l3_gw_mac_arp_subnet1    l2l3_gw_mac_arp_subnet2
-@{REQ_SUBNET_CIDR}                  10.1.0.0/16    10.2.0.0/16
-${REQ_ROUTER}                       l2l3_gw_mac_arp_rtr1
-@{DEFAULT_GATEWAY_IPS}              10.1.0.1    10.2.0.1
-${VPN_INSTANCE_ID}                  4ae8cd92-48ca-49b5-94e1-b2921a261112
-${VPN_NAME}                         l2l3_gw_mac_arp_vpn1
-${VPN_REST}                         ${CONFIG_API}/odl-l3vpn:vpn-instance-to-vpn-id/
-${VRF_ID}                           100:31
-${L3VPN_RD}                         ["${VRF_ID}"]
-${SECURITY_GROUP}                   l2l3_gw_mac_arp_sg
-${TABLE_NO_0}                       0
-${TABLE_NO_220}                     220
-${DUMP_FLOWS}                       sudo ovs-ofctl -O OpenFlow13 dump-flows ${INTEGRATION_BRIDGE}
-${GROUP_FLOWS}                      sudo ovs-ofctl -O OpenFlow13 dump-groups ${INTEGRATION_BRIDGE}
-${ARP_REQUEST_OPERATIONAL_CODE}     1
-${ARP_RESPONSE_OPERATIONAL_CODE}    2
-${RESUBMIT_VALUE}                   actions=resubmit\(,${DISPATCHER_TABLE}\)
-${PING_COUNT_VALUE}                 0
-
-
-*** Test Cases ***
-Verify that table Miss entry for GWMAC table 19 points to table 17 dispatcher table
-    [Documentation]    To Verify there should be an entry for table=17,in the table=19 DUMP_FLOWS
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${GWMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    priority=0
-    ...    actions=resubmit(,17)
-
-Verify the pipeline flow from dispatcher table 17 (L3VPN) to table 19
-    [Documentation]    To Verify the end to end pipeline flow from table=17 to table=19 DUMP_FLOWS
-    ${subport_id_1} =    OpenStackOperations.Get Sub Port Id    ${PORT_LIST[0]}
-    ${subport_id_2} =    OpenStackOperations.Get Sub Port Id    ${PORT_LIST[1]}
-    ${port_num_1} =    OVSDB.Get Port Number    ${subport_id_1}    ${OS_CMP1_IP}
-    ${port_num_2} =    OVSDB.Get Port Number    ${subport_id_2}    ${OS_CMP1_IP}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${TABLE_NO_0}
-    ...    True
-    ...    ${EMPTY}
-    ...    in_port=${port_num_1}
-    ...    goto_table:${DISPATCHER_TABLE}
-    ${metadata} =    OVSDB.Get Port Metadata    ${OS_CMP1_IP}    ${port_num_1}
-    ${vpn_id} =    VpnOperations.VPN Get L3VPN ID    ${VRF_ID}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${DISPATCHER_TABLE}
-    ...    True
-    ...    |grep ${vpn_id}
-    ...    ${vpn_id}
-    ...    goto_table:${GWMAC_TABLE}
-    ${gw_mac_addr} =    OpenStackOperations.Get Port Mac Address From Ip    ${DEFAULT_GATEWAY_IPS[0]}
-    Verify Flows Are Present For ARP    ${ARP_REQUEST_OPERATIONAL_CODE}    |grep ${metadata}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_RESPONSE_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    set_field:${gw_mac_addr}
-    ...    resubmit(,220)
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${TABLE_NO_220}
-    ...    True
-    ...    ${EMPTY}
-    ...    output:${port_num_2}
-
-Verify that ARP requests and ARP response received on GWMAC table are punted to controller for learning ,resubmitted to table 17,sent to ARP responder
-    [Documentation]    To verify the ARP Request and ARP response entry should be there after the dump_groups and dispatcher table should point to ARP responder
-    Verify Flows Are Present For ARP    ${ARP_REQUEST_OPERATIONAL_CODE}
-    Verify Flows Are Present For ARP    ${ARP_RESPONSE_OPERATIONAL_CODE}
-
-Verify that table miss entry for table 17 should not point to table 81 arp table
-    [Documentation]    To Verify there should not be an entry for the arp_responder_table in table=17
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${DISPATCHER_TABLE}
-    ...    False
-    ...    |grep priority=0
-    ...    goto_table:${ARP_RESPONSE_TABLE}
-
-Verify that Multiple GWMAC entries in GWMAC table points to FIB table 21 (L3VPN pipeline)
-    [Documentation]    To Verify the one or more default gateway mac enteries on the table=19 flows that points to FIB table 21
-    ${gw_mac_addr_1} =    OpenStackOperations.Get Port Mac Address From Ip    ${DEFAULT_GATEWAY_IPS[0]}
-    ${gw_mac_addr_2} =    OpenStackOperations.Get Port Mac Address From Ip    ${DEFAULT_GATEWAY_IPS[1]}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${GWMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    dl_dst=${gw_mac_addr_1}
-    ...    actions=goto_table:${L3_TABLE}
-    ${pkt_count_before_ping} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${GWMAC_TABLE} | grep dl_dst=${gw_mac_addr_1}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${REQ_NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 8 ${NET_2_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${pkt_count_after_ping} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${GWMAC_TABLE} | grep dl_dst=${gw_mac_addr_1}
-    ${pkt_diff} =    Evaluate    int(${pkt_count_after_ping})-int(${pkt_count_before_ping})
-    BuiltIn.Should Be True    ${pkt_diff} > ${PING_COUNT_VALUE}
-    ${pkt_count_before_ping} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${GWMAC_TABLE} | grep dl_dst=${gw_mac_addr_1}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${REQ_NETWORKS}[0]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ping -c 8 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${pkt_count_after_ping} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${GWMAC_TABLE} | grep dl_dst=${gw_mac_addr_1}
-    ${pkt_diff} =    Evaluate    int(${pkt_count_after_ping})-int(${pkt_count_before_ping})
-    BuiltIn.Should Be True    ${pkt_diff} > ${PING_COUNT_VALUE}
-
-Verify table miss entry of ARP responder table points to drop actions
-    [Documentation]    To Verify the default flow entry of table=81 drops when openflow controller connected to compute node
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_RESPONSE_TABLE}
-    ...    True
-    ...    |grep priority=0
-    ...    actions=drop
-
-Verify ARP eth_type entries and actions for ARP request and ARP response are populated on GWMAC table
-    [Documentation]    To Verify the entry of ARP request(arp=1) and ARP response(arp=2) in table=19
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${GWMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    arp_op=${ARP_REQUEST_OPERATIONAL_CODE}
-    ...    ${RESUBMIT_VALUE}
-
-Verify GWMAC entires are populated with Neutron Router MAC address per network in GWMAC table
-    [Documentation]    To Verify gateway mac entires are populated with neutron router mac address for network with vpn dissociation from router
-    VpnOperations.Dissociate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID}
-    ${gw_mac_addr} =    OpenStackOperations.Get Port Mac Address From Ip    ${DEFAULT_GATEWAY_IPS[1]}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${GWMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    dl_dst=${gw_mac_addr}
-    ...    actions=goto_table:${L3_TABLE}
-    ${output} =    VpnOperations.Get Fib Entries    session
-    BuiltIn.Should Match Regexp    ${output}    .*${DEFAULT_GATEWAY_IPS}[1]/32.*${NEXTHOP}
-
-Verify GWMAC entires are populated with port MAC address for network with vpn association to router in GWMAC table
-    [Documentation]    To Verify gateway mac entires are populated with port MAC address for network with vpn association to router
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID}
-    ${gw_mac_addr} =    OpenStackOperations.Get Port Mac Address From Ip    ${DEFAULT_GATEWAY_IPS[1]}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${GWMAC_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    dl_dst=${gw_mac_addr}
-    ...    actions=goto_table:${L3_TABLE}
-    ${output} =    VpnOperations.Get Fib Entries    session
-    BuiltIn.Should Match Regexp    ${output}    .*${VRF_ID}.*${REQ_SUBNET_CIDR[0]}
-    BuiltIn.Should Match Regexp    ${output}    .*${VRF_ID}.*${REQ_SUBNET_CIDR[1]}
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Test Suite for Gateway mac based L2L3 seggragation
-    VpnOperations.Basic Suite Setup
-    Create Setup
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Create Neutron Networks
-    [Documentation]    Create required number of networks
-    [Arguments]    ${NUM_OF_NETWORK}
-    FOR    ${NET}    IN    @{REQ_NETWORKS}
-        OpenStackOperations.Create Network    ${NET}
-    END
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${NETWORK_URL}
-    ...    ${REQ_NETWORKS}
-
-Create Neutron Subnets
-    [Documentation]    Create required number of subnets for previously created networks
-    [Arguments]    ${NUM_OF_NETWORK}
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_NETWORK}
-        OpenStackOperations.Create SubNet
-        ...    ${REQ_NETWORKS[${index}]}
-        ...    ${REQ_SUBNETS[${index}]}
-        ...    ${REQ_SUBNET_CIDR[${index}]}
-    END
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${REQ_SUBNETS}
-
-Create Neutron Ports
-    [Documentation]    Create required number of ports under previously created subnets
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_HOST}
-        OpenStackOperations.Create Port    ${REQ_NETWORKS}[${index}]    ${PORT_LIST}[${index}]    sg=${SECURITY_GROUP}
-        OpenStackOperations.Create Port
-        ...    ${REQ_NETWORKS}[${index}]
-        ...    ${PORT_LIST}[${index + 2}]
-        ...    sg=${SECURITY_GROUP}
-    END
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${PORT_LIST}
-
-Create Nova VMs
-    [Documentation]    Create Vm instances on compute nodes
-    [Arguments]    ${NUM_OF_VMS_PER_DPN}
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_VMS_PER_DPN}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORT_LIST[${index}]}
-        ...    ${VM_NAMES[${index}]}
-        ...    ${OS_CMP1_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-    END
-    ${start} =    Evaluate    ${index}+1
-    ${NUM_OF_VMS_PER_DPN} =    Evaluate    ${start}+${NUM_OF_VMS_PER_DPN}
-    FOR    ${index}    IN RANGE    ${start}    ${NUM_OF_VMS_PER_DPN}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORT_LIST[${index}]}
-        ...    ${VM_NAMES[${index}]}
-        ...    ${OS_CMP2_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-    END
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
-    BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
-
-Create Setup
-    [Documentation]    Create Two Networks, Two Subnets, Four Ports And Four VMs on each DPN
-    ${output} =    Issue Command On Karaf Console    ${TEP_SHOW}
-    Create Neutron Networks    ${REQ_NUM_NET}
-    Create Neutron Subnets    ${REQ_NUM_SUBNET}
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    Create Neutron Ports
-    OpenStackOperations.Create Router    ${REQ_ROUTER}
-    Add Interfaces To Routers
-    Create Nova VMs    ${REQ_NUM_OF_VMS_PER_DPN}
-    ${router_id} =    OpenStackOperations.Get Router Id    ${REQ_ROUTER}
-    Builtin.Set Suite Variable    ${router_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_ID}
-    ...    name=${VPN_NAME}
-    ...    rd=${L3VPN_RD}
-    ...    exportrt=${L3VPN_RD}
-    ...    importrt=${L3VPN_RD}
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID}
-
-Add Interfaces To Routers
-    [Documentation]    Add Multiple Interfaces to Router and Verify
-    FOR    ${INTERFACE}    IN    @{REQ_SUBNETS}
-        OpenStackOperations.Add Router Interface    ${REQ_ROUTER}    ${INTERFACE}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${REQ_ROUTER}
-    FOR    ${INTERFACE}    IN    @{REQ_SUBNETS}
-        ${subnet_id} =    OpenStackOperations.Get Subnet Id    ${INTERFACE}
-        BuiltIn.Should Contain    ${interface_output}    ${subnet_id}
-    END
-
-Verify Flows Are Present For ARP
-    [Documentation]    Verify Flows Are Present For ARP entry
-    [Arguments]    ${arp_op_code}    ${additional_args}=${EMPTY}
-    ${flow_output} =    Utils.Run Command On Remote System
-    ...    ${OS_CMP1_IP}
-    ...    ${DUMP_FLOWS} | grep table=${GWMAC_TABLE}
-    BuiltIn.Should Contain    ${flow_output}    arp,arp_op=${arp_op_code} ${RESUBMIT_VALUE}
-    ${flow_output} =    Utils.Run Command On Remote System
-    ...    ${OS_CMP1_IP}
-    ...    ${DUMP_FLOWS} | grep table=${DISPATCHER_TABLE} ${additional_args}
-    BuiltIn.Should Contain    ${flow_output}    goto_table:${ARP_CHECK_TABLE}
-    ${flow_output} =    Utils.Run Command On Remote System
-    ...    ${OS_CMP1_IP}
-    ...    ${DUMP_FLOWS} | grep table=${ARP_CHECK_TABLE}
-    @{group_id} =    String.Get Regexp Matches    ${flow_output}    group:(\\d+)    1
-    BuiltIn.Should Contain    ${flow_output}    arp,arp_op=1 actions=group:${group_id[0]}
-    ${flow_output} =    Utils.Run Command On Remote System
-    ...    ${OS_CMP1_IP}
-    ...    ${GROUP_FLOWS} | grep group_id=${group_id[0]}
-    BuiltIn.Should Contain    ${flow_output}    bucket=actions=resubmit(,81)
diff --git a/csit/suites/netvirt/l3vpn_bgp/bfd_bgp.robot b/csit/suites/netvirt/l3vpn_bgp/bfd_bgp.robot
deleted file mode 100644 (file)
index 640c9ef..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-*** Settings ***
-Documentation       Test Case to configure and validate default bfd configuration
-
-Resource            ../../../libraries/KarafKeywords.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${BFD_CONFIG_ADD_CMD}       bfd-config add
-${BFD_CONFIG_REMOVE_CMD}    bfd-config del
-${BFD_CACHE_CMD}            bfd-cache
-${BFD_TX}                   6000
-${BFD_RX}                   500
-${BFD_STATE}                yes
-${BFD_MULTIPLIER}           3
-${BFD_MULTIHOP}             yes
-
-
-*** Test Cases ***
-Verify BGP_BFD Configuration
-    [Documentation]    Validate bfd configuration parameters in ODL
-    KarafKeywords.Issue Command On Karaf Console    ${BFD_CONFIG_ADD_CMD}
-    ${output} =    KarafKeywords.Issue Command On Karaf Console    ${BFD_CACHE_CMD}
-    BuiltIn.Should Match Regexp
-    ...    ${output}
-    ...    .*${BFD_STATE}\\s+.*${BFD_RX}\\s+.*${BFD_TX}\\s+.*${BFD_MULTIPLIER}\\s+.*${BFD_MULTIHOP}
-    KarafKeywords.Issue Command On Karaf Console    ${BFD_CONFIG_REMOVE_CMD}
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Setup start suite
-    VpnOperations.Basic Suite Setup
diff --git a/csit/suites/netvirt/l3vpn_bgp/l3vpn_bgp_multipath_maxpath_cli.robot b/csit/suites/netvirt/l3vpn_bgp/l3vpn_bgp_multipath_maxpath_cli.robot
deleted file mode 100644 (file)
index 8da3442..0000000
+++ /dev/null
@@ -1,387 +0,0 @@
-*** Settings ***
-Documentation       The objective of this testsuite is to test QBGP and ODL for multipath/ECMP support.
-...                 QBGP should be capable to receive multiple ECMP paths from different DC-GWs and
-...                 to export the ECMP paths to ODL instead of best path selection.
-...                 ODL should be capable to receive ECMP paths and it should program the FIB with ECMP paths.
-
-Resource            ../../../libraries/BgpOperations.robot
-Resource            ../../../libraries/KarafKeywords.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Stop Suite
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       Test Cleanup
-
-
-*** Variables ***
-@{DCGW_RD_IRT_ERT}          11:1    22:2    33:3
-@{DCGW_IP_LIST}             ${TOOLS_SYSTEM_1_IP}    ${TOOLS_SYSTEM_2_IP}    ${TOOLS_SYSTEM_3_IP}
-@{LABEL}                    51    52    53
-${L3VPN_RD_IRT_ERT}         ["${DCGW_RD_IRT_ERT}[0]"]    ["${DCGW_RD_IRT_ERT}[1]"]    ["${DCGW_RD_IRT_ERT}[2]"]
-@{MAX_PATH_LIST}            1    2    3    8    64
-@{MAX_PATH_INVALID_LIST}    -1    0    65
-@{NETWORK_IP}               10.1.1.1    20.1.1.1    30.1.1.1
-@{NUM_OF_ROUTES}            1    2    3    4    5    6
-@{VPN_NAME}                 multipath_vpn_1    multipath_vpn_2    multipath_vpn_3
-@{VPN_ID}
-...                         12345678-1234-1234-1234-123456789301
-...                         12345678-1234-1234-1234-123456789302
-...                         12345678-1234-1234-1234-123456789303
-@{NETWORKS}                 multipath_net_1    multipath_net_2    multipath_net_3
-@{SUBNETS}                  multipath_subnet_1    multipath_subnet_2    multipath_subnet_3
-@{SUBNET_CIDR}              22.1.1.0/24    33.1.1.0/24    44.1.1.0/24
-@{ROUTERS}                  multipath_router_1    multipath_router_2    multipath_router_3
-${AS_ID}                    100
-${BGP_CACHE}                bgp-cache
-${DIPSLAY_FIB}              fib-show
-${ENABLE}                   enable
-${DISABLE}                  disable
-${MAXPATH_ERROR}            error: --maxpath range[1 - 64]
-${NUM_OF_DCGW}              3
-${NUM_OF_L3VPN}             3
-${START_VALUE}              0
-
-
-*** Test Cases ***
-Verify ODL supports CLI for multipath configuration (enable/disable multipath)
-    [Documentation]    Enable and disable multipath on ODL using karaf CLI and verify
-    Configure Multipath On ODL    ${ENABLE}
-    Verify Multipath    ${ENABLE}
-    Configure Multipath On ODL    ${DISABLE}
-    Verify Multipath    ${DISABLE}
-    Configure Multipath On ODL    ${ENABLE}
-    Verify Multipath    ${ENABLE}
-
-Verify CSC supports CLI for max path configuration
-    [Documentation]    Verify CSC supports CLI for max path configuration
-    FOR    ${idx}    IN RANGE    ${START_VALUE}    ${NUM_OF_DCGW}
-        VpnOperations.VPN Create L3VPN
-        ...    name=${VPN_NAME}[${idx}]
-        ...    vpnid=${VPN_ID}[${idx}]
-        ...    rd=${L3VPN_RD_IRT_ERT}[${idx}]
-        ...    exportrt=${L3VPN_RD_IRT_ERT}[${idx}]
-        ...    importrt=${L3VPN_RD_IRT_ERT}[${idx}]
-    END
-    VpnOperations.Verify L3VPN On ODL    @{VPN_ID}
-    FOR    ${dcgw}    IN    @{DCGW_IP_LIST}
-        BgpOperations.Create L3VPN on DCGW    ${dcgw}    ${AS_ID}    ${VPN_NAME}[0]    ${DCGW_RD_IRT_ERT}[0]
-        BgpOperations.Verify L3VPN On DCGW    ${dcgw}    ${VPN_NAME}[0]    ${DCGW_RD_IRT_ERT}[0]
-    END
-    FOR    ${idx}    IN RANGE    ${START_VALUE}    ${NUM_OF_DCGW}
-        Configure Maxpath    ${MAX_PATH_LIST}[2]    ${DCGW_RD_IRT_ERT}[${idx}]
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    10s
-        ...    2s
-        ...    Verify Maxpath
-        ...    ${MAX_PATH_LIST}[2]
-        ...    ${DCGW_RD_IRT_ERT}[${idx}]
-    END
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    10s
-    ...    BgpOperations.Check BGP VPNv4 Nbr On ODL
-    ...    ${NUM_OF_DCGW}
-    ...    False
-
-Verify max-path error message with invalid inputs
-    [Documentation]    Verify max path error message while configuring maxpath with invalid range
-    VpnOperations.VPN Create L3VPN
-    ...    name=${VPN_NAME}[0]
-    ...    vpnid=${VPN_ID}[0]
-    ...    rd=${L3VPN_RD_IRT_ERT}[0]
-    ...    exportrt=${L3VPN_RD_IRT_ERT}[0]
-    ...    importrt=${L3VPN_RD_IRT_ERT}[0]
-    VpnOperations.Verify L3VPN On ODL    ${VPN_ID}[0]
-    FOR    ${dcgw}    IN    @{DCGW_IP_LIST}
-        BgpOperations.Create L3VPN on DCGW    ${dcgw}    ${AS_ID}    ${VPN_NAME}[0]    ${DCGW_RD_IRT_ERT}[0]
-        BgpOperations.Verify L3VPN On DCGW    ${dcgw}    ${VPN_NAME}[0]    ${DCGW_RD_IRT_ERT}[0]
-    END
-    FOR    ${invalid}    IN    @{MAX_PATH_INVALID_LIST}
-        Configure Maxpath    ${invalid}    ${DCGW_RD_IRT_ERT}[0]
-        BuiltIn.Wait Until Keyword Succeeds    10s    2s    Verify Maxpath    ${invalid}    ${DCGW_RD_IRT_ERT}[0]
-    END
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    10s
-    ...    BgpOperations.Check BGP VPNv4 Nbr On ODL
-    ...    ${NUM_OF_DCGW}
-    ...    False
-
-Verify ODL supports dynamic configuration changes for max path value
-    [Documentation]    Verify ODL supports dynamic configuration changes for max path value
-    VpnOperations.VPN Create L3VPN
-    ...    name=${VPN_NAME}[0]
-    ...    vpnid=${VPN_ID}[0]
-    ...    rd=${L3VPN_RD_IRT_ERT}[0]
-    ...    exportrt=${L3VPN_RD_IRT_ERT}[0]
-    ...    importrt=${L3VPN_RD_IRT_ERT}[0]
-    VpnOperations.Verify L3VPN On ODL    ${VPN_ID}[0]
-    VpnOperations.Associate VPN to Router    routerid=${router_id_list}[0]    vpnid=${VPN_ID}[0]
-    FOR    ${dcgw}    IN    @{DCGW_IP_LIST}
-        BgpOperations.Create L3VPN on DCGW    ${dcgw}    ${AS_ID}    ${VPN_NAME}[0]    ${DCGW_RD_IRT_ERT}[0]
-        BgpOperations.Verify L3VPN On DCGW    ${dcgw}    ${VPN_NAME}[0]    ${DCGW_RD_IRT_ERT}[0]
-    END
-    Configure Maxpath    ${MAX_PATH_LIST}[2]    ${DCGW_RD_IRT_ERT}[0]
-    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Verify Maxpath    ${MAX_PATH_LIST}[2]    ${DCGW_RD_IRT_ERT}[0]
-    FOR    ${idx}    IN RANGE    ${START_VALUE}    ${NUM_OF_DCGW}
-        BgpOperations.Add Routes On DCGW
-        ...    ${DCGW_IP_LIST}[${idx}]
-        ...    ${DCGW_RD_IRT_ERT}[0]
-        ...    ${NETWORK_IP}[0]
-        ...    ${LABEL}[${idx}]
-    END
-    BuiltIn.Wait Until Keyword Succeeds    60s    10s    BgpOperations.Check BGP VPNv4 Nbr On ODL    ${NUM_OF_DCGW}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    10s
-    ...    Verify Routing Entry On ODL
-    ...    ${DCGW_RD_IRT_ERT}[0]
-    ...    ${NETWORK_IP}[0]
-    ...    ${NUM_OF_ROUTES}[2]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Verify FIB Entry On ODL
-    ...    ${NETWORK_IP}[0]
-    ...    ${NUM_OF_ROUTES}[2]
-    FOR    ${index}    IN RANGE    0    3
-        Configure Maxpath    ${MAX_PATH_LIST}[${index}]    ${DCGW_RD_IRT_ERT}[0]
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    10s
-        ...    2s
-        ...    Verify Maxpath
-        ...    ${MAX_PATH_LIST}[${index}]
-        ...    ${DCGW_RD_IRT_ERT}[0]
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    60s
-        ...    10s
-        ...    Verify Routing Entry On ODL
-        ...    ${DCGW_RD_IRT_ERT}[0]
-        ...    ${NETWORK_IP}[0]
-        ...    ${NUM_OF_ROUTES}[2]
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    60s
-        ...    10s
-        ...    Verify FIB Entry On ODL
-        ...    ${NETWORK_IP}[0]
-        ...    ${NUM_OF_ROUTES}[${index}]
-    END
-
-Verify that ECMP path gets withdrawn by QBGP after disabling multipath
-    [Documentation]    Verify that ECMP path gets withdrawn by QBGP after disabling multipath by setting multipath value to 1
-    VpnOperations.VPN Create L3VPN
-    ...    name=${VPN_NAME}[0]
-    ...    vpnid=${VPN_ID}[0]
-    ...    rd=${L3VPN_RD_IRT_ERT}[0]
-    ...    exportrt=${L3VPN_RD_IRT_ERT}[0]
-    ...    importrt=${L3VPN_RD_IRT_ERT}[0]
-    VpnOperations.Verify L3VPN On ODL    ${VPN_ID}[0]
-    VpnOperations.Associate VPN to Router    routerid=${router_id_list}[0]    vpnid=${VPN_ID}[0]
-    FOR    ${dcgw}    IN    @{DCGW_IP_LIST}
-        BgpOperations.Create L3VPN on DCGW    ${dcgw}    ${AS_ID}    ${VPN_NAME}[0]    ${DCGW_RD_IRT_ERT}[0]
-        BgpOperations.Verify L3VPN On DCGW    ${dcgw}    ${VPN_NAME}[0]    ${DCGW_RD_IRT_ERT}[0]
-    END
-    Configure Maxpath    ${MAX_PATH_LIST}[2]    ${DCGW_RD_IRT_ERT}[0]
-    BuiltIn.Wait Until Keyword Succeeds    10s    2s    Verify Maxpath    ${MAX_PATH_LIST}[2]    ${DCGW_RD_IRT_ERT}[0]
-    FOR    ${idx}    IN RANGE    ${START_VALUE}    ${NUM_OF_DCGW}
-        BgpOperations.Add Routes On DCGW
-        ...    ${DCGW_IP_LIST}[${idx}]
-        ...    ${DCGW_RD_IRT_ERT}[0]
-        ...    ${NETWORK_IP}[0]
-        ...    ${LABEL}[${idx}]
-    END
-    BuiltIn.Wait Until Keyword Succeeds    60s    10s    BgpOperations.Check BGP VPNv4 Nbr On ODL    ${NUM_OF_DCGW}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    10s
-    ...    Verify Routing Entry On ODL
-    ...    ${DCGW_RD_IRT_ERT}[0]
-    ...    ${NETWORK_IP}[0]
-    ...    ${NUM_OF_ROUTES}[2]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Verify FIB Entry On ODL
-    ...    ${NETWORK_IP}[0]
-    ...    ${NUM_OF_ROUTES}[2]
-    Configure Maxpath    ${MAX_PATH_LIST}[0]    ${DCGW_RD_IRT_ERT}[0]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    10s
-    ...    Verify Routing Entry On ODL
-    ...    ${DCGW_RD_IRT_ERT}[0]
-    ...    ${NETWORK_IP}[0]
-    ...    ${NUM_OF_ROUTES}[2]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Verify FIB Entry On ODL
-    ...    ${NETWORK_IP}[0]
-    ...    ${NUM_OF_ROUTES}[0]
-    Configure Maxpath    ${MAX_PATH_LIST}[2]    ${DCGW_RD_IRT_ERT}[0]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    10s
-    ...    Verify Routing Entry On ODL
-    ...    ${DCGW_RD_IRT_ERT}[0]
-    ...    ${NETWORK_IP}[0]
-    ...    ${NUM_OF_ROUTES}[2]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Verify FIB Entry On ODL
-    ...    ${NETWORK_IP}[0]
-    ...    ${NUM_OF_ROUTES}[2]
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Setup start suite
-    VpnOperations.Basic Suite Setup
-    Create Setup
-
-Stop Suite
-    [Documentation]    Deleting all BGP neighbors and configurations
-    BgpOperations.Delete BGP Configuration On ODL    session
-    OpenStackOperations.OpenStack Suite Teardown
-
-Test Cleanup
-    [Documentation]    Posttest case cleanup
-    FOR    ${l3vpn_rd}    IN    @{DCGW_RD_IRT_ERT}
-        Configure Maxpath    ${MAX_PATH_LIST}[0]    ${l3vpn_rd}
-    END
-    FOR    ${vpn}    IN    @{VPN_ID}
-        BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${vpn}
-    END
-    FOR    ${dcgw}    IN    @{DCGW_IP_LIST}
-        BuiltIn.Run Keyword And Ignore Error
-        ...    BgpOperations.Delete L3VPN on DCGW
-        ...    ${dcgw}
-        ...    ${AS_ID}
-        ...    ${VPN_NAME}
-    END
-
-Create Setup
-    [Documentation]    Starting BGP process on each DCGW and ODL
-    ...    Verifying BGP neighbor session status
-    ...    Creating 3 networks, 3 subnets, one router
-    FOR    ${dcgw}    IN    @{DCGW_IP_LIST}
-        BgpOperations.Start Quagga Processes On DCGW    ${dcgw}
-    END
-    BgpOperations.Start Quagga Processes On ODL    ${ODL_SYSTEM_IP}
-    KarafKeywords.Issue Command On Karaf Console    ${BGP_CONFIG_SERVER_CMD}
-    BgpOperations.Create BGP Configuration On ODL    localas=${AS_ID}    routerid=${ODL_SYSTEM_IP}
-    FOR    ${dcgw}    IN    @{DCGW_IP_LIST}
-        BgpOperations.AddNeighbor To BGP Configuration On ODL    remoteas=${AS_ID}    neighborAddr=${dcgw}
-        ${output} =    BgpOperations.Get BGP Configuration On ODL    session
-        BuiltIn.Should Contain    ${output}    ${dcgw}
-        BgpOperations.Configure BGP And Add Neighbor On DCGW
-        ...    ${dcgw}
-        ...    ${AS_ID}
-        ...    ${dcgw}
-        ...    ${ODL_SYSTEM_IP}
-        ...    ${VPN_NAME}[0]
-        ...    ${DCGW_RD_IRT_ERT}[0]
-        ...    ${NETWORK_IP}[0]
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    120s
-        ...    20s
-        ...    BgpOperations.Verify BGP Neighbor Status On Quagga
-        ...    ${dcgw}
-        ...    ${ODL_SYSTEM_IP}
-    END
-    FOR    ${network}    IN    @{NETWORKS}
-        OpenStackOperations.Create Network    ${network}
-    END
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    10s
-    ...    2s
-    ...    Utils.Check For Elements At URI
-    ...    ${NETWORK_URL}
-    ...    ${NETWORKS}
-    FOR    ${index}    IN RANGE    0    3
-        OpenStackOperations.Create SubNet    ${NETWORKS}[${index}]    ${SUBNETS}[${index}]    ${SUBNET_CIDR}[${index}]
-    END
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    10s
-    ...    2s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${SUBNETS}
-    ${router_id_list} =    BuiltIn.Create List    @{EMPTY}
-    FOR    ${router}    IN    @{ROUTERS}
-        OpenStackOperations.Create Router    ${router}
-        ${router_id} =    OpenStackOperations.Get Router Id    ${router}
-        Collections.Append To List    ${router_id_list}    ${router_id}
-    END
-    BuiltIn.Set Suite Variable    ${router_id_list}
-    FOR    ${index}    IN RANGE    0    3
-        OpenStackOperations.Add Router Interface    ${ROUTERS}[${index}]    ${SUBNETS}[${index}]
-        ${output} =    OpenStackOperations.Show Router Interface    ${ROUTERS}[${index}]
-        ${subnet_id} =    OpenStackOperations.Get Subnet Id    ${SUBNETS}[${index}]
-        BuiltIn.Should Contain    ${output}    ${subnet_id}
-    END
-
-Configure Multipath On ODL
-    [Documentation]    Enabling or disabling multipath on ODL using karaf CLI
-    [Arguments]    ${setting}
-    IF    '${setting}' == 'enable'
-        KarafKeywords.Issue Command On Karaf Console    odl:multipath -f ${VPNV4_ADDR_FAMILY} ${setting}
-    ELSE
-        KarafKeywords.Issue Command On Karaf Console    odl:multipath -f ${VPNV4_ADDR_FAMILY} ${setting}
-    END
-
-Verify Multipath
-    [Documentation]    verify multipath on ODL
-    [Arguments]    ${setting}
-    ${output} =    KarafKeywords.Issue Command On Karaf Console    ${BGP_CACHE}
-    IF    '${setting}' == 'enable'
-        BuiltIn.Should Contain    ${output}    ${VPNV4_ADDR_FAMILY}
-    ELSE
-        BuiltIn.Should Not Contain    ${output}    ${VPNV4_ADDR_FAMILY}
-    END
-
-Configure Maxpath
-    [Documentation]    Setting maxpath on ODL using karaf CLI
-    [Arguments]    ${maxpath}    ${rd}
-    ${maxpath_command} =    BuiltIn.Set Variable    multipath -r ${rd} -f ${VPNV4_ADDR_FAMILY} -n ${maxpath} setmaxpath
-    ${output} =    KarafKeywords.Issue Command On Karaf Console    ${maxpath_command}
-    IF    0 < ${maxpath} < 65
-        BuiltIn.Should Not Contain    ${output}    ${MAXPATH_ERROR}
-    ELSE
-        BuiltIn.Should Contain    ${output}    ${MAXPATH_ERROR}
-    END
-
-Verify Maxpath
-    [Documentation]    Verify maxpath is set properly on ODL
-    [Arguments]    ${maxpath}    ${rd}
-    ${output} =    KarafKeywords.Issue Command On Karaf Console    ${BGP_CACHE}
-    IF    0 < ${maxpath} < 65
-        BuiltIn.Should Match Regexp    ${output}    ${rd}\\s*${maxpath}
-    ELSE
-        BuiltIn.Should Not Match Regexp    ${output}    ${rd}\\s*${maxpath}
-    END
-
-Verify Routing Entry On ODL
-    [Documentation]    Verify routing table for specific prefix
-    [Arguments]    ${rd}    ${prefix}    ${no_of_times}
-    ${output} =    KarafKeywords.Issue Command On Karaf Console    show-bgp --cmd "ip bgp vrf ${rd}"
-    BuiltIn.Should Contain X Times
-    ...    ${output}
-    ...    ${prefix}
-    ...    ${no_of_times}
-    ...    msg="Routing table does not contain ${prefix} prefix ${no_of_times} times"
-
-Verify FIB Entry On ODL
-    [Documentation]    Checking FIB entries with valid counts
-    [Arguments]    ${prefix}    ${no_of_times}
-    ${output} =    KarafKeywords.Issue Command On Karaf Console    ${DIPSLAY_FIB}
-    BuiltIn.Should Contain X Times
-    ...    ${output}
-    ...    ${prefix}
-    ...    ${no_of_times}
-    ...    msg="FIB table does not contain ${prefix} prefix ${no_of_times} times"
diff --git a/csit/suites/netvirt/l3vpn_bgp/multi_vpn_bgp.robot b/csit/suites/netvirt/l3vpn_bgp/multi_vpn_bgp.robot
deleted file mode 100644 (file)
index ca7c1af..0000000
+++ /dev/null
@@ -1,541 +0,0 @@
-*** Settings ***
-Documentation       Test suite to validate multiple vpnservice 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.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Resource            ../../../libraries/BgpOperations.robot
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Tcpdump.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${NUM_OF_PORTS_PER_HOST}    3
-${NUM_OF_VMS_PER_HOST}      3
-${NUM_OF_L3VPN}             3
-${AS_ID}                    100
-${DCGW_SYSTEM_IP}           ${TOOLS_SYSTEM_1_IP}
-${NET}                      mvpn_net_new
-${ROUTER}                   mvpn_router
-${LOOPBACK_IP}              5.5.5.2/32
-${CREATE_RT}                ["2200:2","2300:2","2400:2"]
-${RT_LIST_1}                ["2200:2","2300:2"]
-${RT_LIST_2}                ["2200:2","2400:2"]
-@{SECURITY_GROUP}           mvpn_sg    mvpn_custom_sg
-@{REQ_PREFIXLENGTHS}        40.1.0.0/28    41.1.0.0/16
-@{REQ_SUBNETS_PREFIX}       mvpn_subnet10    mvpn_subnet11
-@{NETWORKS}                 mvpn_net_1    mvpn_net_2    mvpn_net_3
-@{SUBNETS}                  mvpn_sub_1    mvpn_sub_2    mvpn_sub_3
-@{SUBNET_CIDRS}             11.1.1.0/24    22.1.1.0/24    33.1.1.0/24
-@{PORTS_HOST1}
-...                         mvpn_net_1_port_1
-...                         mvpn_net_2_port_1
-...                         mvpn_net_3_port_1
-...                         mvpn_net_1_port1_csg
-...                         mvpn_net_2_port1_csg
-@{PORTS_HOST2}              mvpn_net_1_port_2    mvpn_net_2_port_2    mvpn_net_3_port_2    mvpn_net_2_port2_csg
-@{VMS_HOST1}
-...                         mvpn_net_1_vm_1
-...                         mvpn_net_2_vm_1
-...                         mvpn_net_3_vm_1
-...                         mvpn_net_1_vm1_csg
-...                         mvpn_net_2_vm1_csg
-@{VMS_HOST2}                mvpn_net_1_vm_2    mvpn_net_2_vm_2    mvpn_net_3_vm_2    mvpn_net_2_vm2_csg
-@{NET_1_VMS}                mvpn_net_1_vm_1    mvpn_net_1_vm_2    mvpn_net_1_vm1_csg
-@{NET_2_VMS}                mvpn_net_2_vm_1    mvpn_net_2_vm_2    mvpn_net_2_vm1_csg    mvpn_net_2_vm2_csg
-@{NET_3_VMS}                mvpn_net_3_vm_1    mvpn_net_3_vm_2
-@{VPN_INSTANCE_IDS}
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261441
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261442
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261443
-@{VPN_NAMES}                mvpn_1    mvpn_2    mvpn_3
-@{RDS}                      ["2200:2"]    ["2300:2"]    ["2400:2"]
-@{DCGW_RD}                  2200:2    2300:2    2400:2
-@{LOOPBACK_IPS}             5.5.5.2    2.2.2.2    3.3.3.3
-@{LOOPBACK_NAMES}           int1    int2    int3
-
-
-*** Test Cases ***
-Check Datapath Traffic Across Networks With L3VPN
-    [Documentation]    Datapath Test Across the networks with VPN.
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 20 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 20 ${NET_2_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 20 ${NET_2_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[2]
-    ...    ping -c 20 ${NET_2_VM_IPS}[2]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[2]
-    ...    ping -c 20 ${NET_2_VM_IPS}[3]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Verify Route Update In Bgp For Routes With Default Route And Various Prefix Lengths
-    [Documentation]    Create network with different prefix lengths and check the route update in bgp.
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${SUBNET_CIDRS}
-    OpenStackOperations.Create Network    ${NET}
-    ${length} =    BuiltIn.Get Length    ${REQ_SUBNETS_PREFIX}
-    FOR    ${idx}    IN RANGE    ${length}
-        OpenStackOperations.Create SubNet    ${NET}    ${REQ_SUBNETS_PREFIX}[${idx}]    ${REQ_PREFIXLENGTHS}[${idx}]
-    END
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${REQ_SUBNETS_PREFIX}
-    ${net_id} =    OpenStackOperations.Get Net Id    ${NET}
-    VpnOperations.Associate L3VPN To Network    networkid=${net_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    VpnOperations.Verify L3VPN On ODL    ${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${REQ_PREFIXLENGTHS}
-    [Teardown]    BuiltIn.Run Keywords    VpnOperations.Dissociate L3VPN From Networks    networkid=${net_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ...    AND    OpenStackOperations.Delete Network    ${NET}
-    ...    AND    Post Test Cleanup    ${VPN_INSTANCE_IDS}[0]
-
-Verification Of Route Download With Three Vpns In SE And Qbgp With One-One Export Import Route Target
-    [Documentation]    Check the datapath traffic with one-one export import route target with three vpns.
-    Create Multiple L3VPN    ${NETWORKS}[0]    ${3}
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_L3VPN}
-        BgpOperations.Configure BGP And Add Neighbor On DCGW
-        ...    ${DCGW_SYSTEM_IP}
-        ...    ${AS_ID}
-        ...    ${DCGW_SYSTEM_IP}
-        ...    ${ODL_SYSTEM_IP}
-        ...    ${VPN_NAMES}[${index}]
-        ...    ${DCGW_RD}[${index}]
-        ...    ${LOOPBACK_IPS}[${index}]
-    END
-    VpnOperations.Associate L3VPNs To Networks    ${VPN_INSTANCE_IDS}    ${NETWORKS}
-    ${fib_values} =    BuiltIn.Create List
-    ...    @{NET_1_VM_IPS}
-    ...    @{NET_2_VM_IPS}
-    ...    @{NET_3_VM_IPS}
-    ...    @{SUBNET_CIDRS}
-    ...    @{LOOPBACK_IPS}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${fib_values}
-    ${fib1_values} =    BuiltIn.Create List    ${NET_1_VM_IPS}    ${SUBNET_CIDRS}[0]    ${LOOPBACK_IPS}[0]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    BgpOperations.Verify Routes On Quagga
-    ...    ${DCGW_SYSTEM_IP}
-    ...    ${DCGW_RD}[0]
-    ...    ${fib1_values}
-    ${fib2_values} =    BuiltIn.Create List    ${NET_2_VM_IPS}    ${SUBNET_CIDRS}[1]    ${LOOPBACK_IPS}[1]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    BgpOperations.Verify Routes On Quagga
-    ...    ${DCGW_SYSTEM_IP}
-    ...    ${DCGW_RD}[1]
-    ...    ${fib2_values}
-    ${fib3_values} =    BuiltIn.Create List    ${NET_3_VM_IPS}    ${SUBNET_CIDRS}[2]    ${LOOPBACK_IPS}[2]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    BgpOperations.Verify Routes On Quagga
-    ...    ${DCGW_SYSTEM_IP}
-    ...    ${DCGW_RD}[2]
-    ...    ${fib3_values}
-    VpnOperations.Verify Flows Are Present For L3VPN    ${OS_CMP1_IP}    ${NET_1_VM_IPS}
-    VpnOperations.Verify Flows Are Present For L3VPN    ${OS_CMP1_IP}    ${NET_2_VM_IPS}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ping -c 3 ${NET_2_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${NET_2_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${NET_2_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    [Teardown]    Post Test Cleanup    @{VPN_INSTANCE_IDS}
-
-Verification Of Route Download With Three Vpns In SE And Qbgp With One-Many Export Import Route Target
-    [Documentation]    Check the datapath traffic with one-many export import route target with three vpns.
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[0]
-    ...    name=${VPN_NAMES}[0]
-    ...    rd=${RDS}[0]
-    ...    exportrt=${CREATE_RT}
-    ...    importrt=${RDS}[0]
-    FOR    ${index}    IN RANGE    1    ${NUM_OF_L3VPN}
-        VpnOperations.VPN Create L3VPN
-        ...    vpnid=${VPN_INSTANCE_IDS}[${index}]
-        ...    name=${VPN_NAMES}[${index}]
-        ...    rd=${RDS}[${index}]
-        ...    exportrt=${RDS}[${index}]
-        ...    importrt=${RT_LIST_${index}}
-    END
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_L3VPN}
-        BgpOperations.Configure BGP And Add Neighbor On DCGW
-        ...    ${DCGW_SYSTEM_IP}
-        ...    ${AS_ID}
-        ...    ${DCGW_SYSTEM_IP}
-        ...    ${ODL_SYSTEM_IP}
-        ...    ${VPN_NAMES}[${index}]
-        ...    ${DCGW_RD}[${index}]
-        ...    ${LOOPBACK_IPS}[${index}]
-    END
-    ${networks} =    BuiltIn.Create List    ${NETWORKS}[0]    ${NETWORKS}[1]
-    VpnOperations.Associate L3VPNs To Networks    ${VPN_INSTANCE_IDS}    ${networks}
-    ${fib_values} =    BuiltIn.Create List
-    ...    ${NET_1_VM_IPS}
-    ...    ${NET_2_VM_IPS}
-    ...    ${SUBNET_CIDRS}[0]
-    ...    ${SUBNET_CIDRS}[1]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${fib_values}
-    VpnOperations.Verify Flows Are Present For L3VPN    ${OS_CMP1_IP}    ${NET_1_VM_IPS}
-    VpnOperations.Verify Flows Are Present For L3VPN    ${OS_CMP1_IP}    ${NET_2_VM_IPS}
-    [Teardown]    Post Test Cleanup    @{VPN_INSTANCE_IDS}
-
-Verification Of Route Download With Three Vpns In SE And Qbgp With Many-One Export Import Route Target
-    [Documentation]    Check the datapath traffic with many-one export import route target with three vpns.
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[0]
-    ...    name=${VPN_NAMES}[0]
-    ...    rd=${RDS}[0]
-    ...    exportrt=${RDS}[0]
-    ...    importrt=${CREATE_RT}
-    FOR    ${index}    IN RANGE    1    ${NUM_OF_L3VPN}
-        VpnOperations.VPN Create L3VPN
-        ...    vpnid=${VPN_INSTANCE_IDS}[${index}]
-        ...    name=${VPN_NAMES}[${index}]
-        ...    rd=${RDS}[${index}]
-        ...    exportrt=${RT_LIST_${index}}
-        ...    importrt=${RDS}[${index}]
-    END
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_L3VPN}
-        BgpOperations.Configure BGP And Add Neighbor On DCGW
-        ...    ${DCGW_SYSTEM_IP}
-        ...    ${AS_ID}
-        ...    ${DCGW_SYSTEM_IP}
-        ...    ${ODL_SYSTEM_IP}
-        ...    ${VPN_NAMES}[${index}]
-        ...    ${DCGW_RD}[${index}]
-        ...    ${LOOPBACK_IPS}[${index}]
-    END
-    ${networks} =    BuiltIn.Create List    ${NETWORKS}[0]    ${NETWORKS}[1]
-    VpnOperations.Associate L3VPNs To Networks    ${VPN_INSTANCE_IDS}    ${networks}
-    ${fib_values} =    BuiltIn.Create List
-    ...    ${NET_1_VM_IPS}
-    ...    ${NET_2_VM_IPS}
-    ...    ${SUBNET_CIDRS}[0]
-    ...    ${SUBNET_CIDRS}[1]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${fib_values}
-    VpnOperations.Verify Flows Are Present For L3VPN    ${OS_CMP1_IP}    ${NET_1_VM_IPS}
-    VpnOperations.Verify Flows Are Present For L3VPN    ${OS_CMP1_IP}    ${NET_2_VM_IPS}
-    [Teardown]    Post Test Cleanup    @{VPN_INSTANCE_IDS}
-
-Verification Of Route Download With Three Vpns In SE And Qbgp With Many-Many Export Import Route Target
-    [Documentation]    Check the datapath traffic with many-many export import route target with three vpns.
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_L3VPN}
-        VpnOperations.VPN Create L3VPN
-        ...    vpnid=${VPN_INSTANCE_IDS}[${index}]
-        ...    name=${VPN_NAMES}[${index}]
-        ...    rd=${RDS}[${index}]
-        ...    exportrt=${CREATE_RT}
-        ...    importrt=${CREATE_RT}
-    END
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_L3VPN}
-        BgpOperations.Configure BGP And Add Neighbor On DCGW
-        ...    ${DCGW_SYSTEM_IP}
-        ...    ${AS_ID}
-        ...    ${DCGW_SYSTEM_IP}
-        ...    ${ODL_SYSTEM_IP}
-        ...    ${VPN_NAMES}[${index}]
-        ...    ${DCGW_RD}[${index}]
-        ...    ${LOOPBACK_IPS}[${index}]
-    END
-    ${networks} =    BuiltIn.Create List    ${NETWORKS}[0]    ${NETWORKS}[1]
-    VpnOperations.Associate L3VPNs To Networks    ${VPN_INSTANCE_IDS}    ${networks}
-    ${fib_values} =    BuiltIn.Create List
-    ...    ${NET_1_VM_IPS}
-    ...    ${NET_2_VM_IPS}
-    ...    ${SUBNET_CIDRS}[0]
-    ...    ${SUBNET_CIDRS}[1]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${fib_values}
-    VpnOperations.Verify Flows Are Present For L3VPN    ${OS_CMP1_IP}    ${NET_1_VM_IPS}
-    VpnOperations.Verify Flows Are Present For L3VPN    ${OS_CMP1_IP}    ${NET_2_VM_IPS}
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Basic setup.
-    VpnOperations.Basic Suite Setup
-    BgpOperations.Start Quagga Processes On ODL    ${ODL_SYSTEM_IP}
-    BgpOperations.Start Quagga Processes On DCGW    ${DCGW_SYSTEM_IP}
-    Create Setup
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}    @{NET_3_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Create Setup
-    [Documentation]    Create basic topology
-    Create Neutron Networks
-    Create Neutron Subnets
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP[0]}
-    Security Group Rule with Remote SG    ${SECURITY_GROUP[1]}
-    Create Neutron Ports
-    Create Nova VMs
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[0]
-    ...    name=${VPN_NAMES}[0]
-    ...    rd=${RDS}[0]
-    ...    exportrt=${RDS}[0]
-    ...    importrt=${RDS}[0]
-    VpnOperations.Verify L3VPN On ODL    ${VPN_INSTANCE_IDS}[0]
-    FOR    ${network}    IN    @{NETWORKS}
-        ${network_id} =    OpenStackOperations.Get Net Id    ${network}
-        VpnOperations.Associate L3VPN To Network    networkid=${network_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    END
-    Create BGP Config On ODL
-    Create BGP Config On DCGW
-    Create External Tunnel Endpoint
-
-Create Neutron Networks
-    [Documentation]    Create required number of networks
-    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
-    [Documentation]    Create required number of subnets for previously created networks
-    ${num_of_networks} =    BuiltIn.Get Length    ${NETWORKS}
-    FOR    ${index}    IN RANGE    0    ${num_of_networks}
-        OpenStackOperations.Create SubNet    ${NETWORKS}[${index}]    ${SUBNETS}[${index}]    ${SUBNET_CIDRS}[${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
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_HOST}
-        OpenStackOperations.Create Port    ${NETWORKS}[${index}]    ${PORTS_HOST1}[${index}]    sg=${SECURITY_GROUP}[0]
-    END
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_PORTS_PER_HOST}
-        OpenStackOperations.Create Port    ${NETWORKS}[${index}]    ${PORTS_HOST2}[${index}]    sg=${SECURITY_GROUP}[0]
-    END
-    OpenStackOperations.Create Port    ${NETWORKS}[0]    ${PORTS_HOST1}[3]    ${SECURITY_GROUP}[1]
-    OpenStackOperations.Create Port    ${NETWORKS}[1]    ${PORTS_HOST1}[4]    ${SECURITY_GROUP}[1]
-    OpenStackOperations.Create Port    ${NETWORKS}[1]    ${PORTS_HOST2}[3]    ${SECURITY_GROUP}[1]
-    ${PORTS} =    BuiltIn.Create List    @{PORTS_HOST1}    @{PORTS_HOST2}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${CONFIG_API}/neutron:neutron/ports/
-    ...    ${PORTS}
-
-Create Nova VMs
-    [Documentation]    Create Vm instances on compute nodes
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_VMS_PER_HOST}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORTS_HOST1}[${index}]
-        ...    ${VMS_HOST1}[${index}]
-        ...    ${OS_CMP1_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}[0]
-    END
-    FOR    ${index}    IN RANGE    0    ${NUM_OF_VMS_PER_HOST}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORTS_HOST2}[${index}]
-        ...    ${VMS_HOST2}[${index}]
-        ...    ${OS_CMP2_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}[0]
-    END
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS_HOST1}[3]
-    ...    ${VMS_HOST1}[3]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}[1]
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS_HOST1}[4]
-    ...    ${VMS_HOST1}[4]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}[1]
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS_HOST2}[3]
-    ...    ${VMS_HOST2}[3]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}[1]
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
-    @{NET_3_VM_IPS}    ${NET_3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_3_VMS}
-    BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_3_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_3_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_3_DHCP_IP}    None
-
-Create External Tunnel Endpoint
-    [Documentation]    Create and verify external tunnel endpoint between ODL and GWIP
-    BgpOperations.Create External Tunnel Endpoint Configuration    destIp=${DCGW_SYSTEM_IP}
-    ${output} =    BgpOperations.Get External Tunnel Endpoint Configuration    ${DCGW_SYSTEM_IP}
-    BuiltIn.Should Contain    ${output}    ${DCGW_SYSTEM_IP}
-
-Create BGP Config On ODL
-    [Documentation]    Configure BGP Config on ODL
-    KarafKeywords.Issue Command On Karaf Console    ${BGP_CONFIG_SERVER_CMD}
-    BgpOperations.Create BGP Configuration On ODL    localas=${AS_ID}    routerid=${ODL_SYSTEM_IP}
-    BgpOperations.AddNeighbor To BGP Configuration On ODL    remoteas=${AS_ID}    neighborAddr=${DCGW_SYSTEM_IP}
-    ${output} =    BgpOperations.Get BGP Configuration On ODL    session
-    BuiltIn.Should Contain    ${output}    ${DCGW_SYSTEM_IP}
-
-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_NAMES}[0]
-    ...    ${DCGW_RD}[0]
-    ...    ${LOOPBACK_IPS}[0]
-    ${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}
-
-Create Multiple L3VPN
-    [Documentation]    Creates multiple L3VPNs and then verify the same
-    [Arguments]    ${network}    ${num_of_l3vpns}
-    FOR    ${index}    IN RANGE    0    ${num_of_l3vpns}
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    40s
-        ...    10s
-        ...    VpnOperations.VPN Create L3VPN
-        ...    vpnid=${VPN_INSTANCE_IDS}[${index}]
-        ...    name=${VPN_NAMES}[${index}]
-        ...    rd=${RDS}[${index}]
-        ...    exportrt=${RDS}[${index}]
-        ...    importrt=${RDS}[${index}]
-        VpnOperations.Verify L3VPN On ODL    ${VPN_INSTANCE_IDS}[${index}]
-    END
-
-Security Group Rule with Remote SG
-    [Documentation]    Allow all TCP/UDP/ICMP packets for this suite
-    [Arguments]    ${sec_grp}
-    OpenStackOperations.Neutron Security Group Create    ${sec_grp}
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${sec_grp}
-    ...    direction=ingress
-    ...    port_range_max=65535
-    ...    port_range_min=1
-    ...    protocol=tcp
-    ...    remote-group-id=${sec_grp}
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${sec_grp}
-    ...    direction=egress
-    ...    port_range_max=65535
-    ...    port_range_min=1
-    ...    protocol=tcp
-    ...    remote-group-id=${sec_grp}
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${sec_grp}
-    ...    direction=ingress
-    ...    protocol=icmp
-    ...    remote-group-id=${sec_grp}
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${sec_grp}
-    ...    direction=egress
-    ...    protocol=icmp
-    ...    remote-group-id=${sec_grp}
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${sec_grp}
-    ...    direction=ingress
-    ...    port_range_max=65535
-    ...    port_range_min=1
-    ...    protocol=udp
-    ...    remote_group_id=${sec_grp}
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${sec_grp}
-    ...    direction=egress
-    ...    port_range_max=65535
-    ...    port_range_min=1
-    ...    protocol=udp
-    ...    remote-group-id=${sec_grp}
-
-Post Test Cleanup
-    [Documentation]    Test Case Cleanup.
-    [Arguments]    @{vpn_ids}
-    VpnOperations.Delete Multiple L3VPNs    @{vpn_ids}
-    BgpOperations.Delete BGP Config On Quagga    ${DCGW_SYSTEM_IP}    ${AS_ID}
diff --git a/csit/suites/netvirt/ofpunt_path/openflow_punt_path_protection.robot b/csit/suites/netvirt/ofpunt_path/openflow_punt_path_protection.robot
deleted file mode 100644 (file)
index 81c5477..0000000
+++ /dev/null
@@ -1,774 +0,0 @@
-*** Settings ***
-Documentation       Test suite for OpenFlow punt path protection for subnet route, SNAT, ARP and GARP
-
-Resource            ../../../libraries/ClusterManagement.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/OvsManager.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-@{NETWORKS}                 of_punt_net_1    of_punt_net_2    of_punt_net_3
-${EXT_NETWORKS}             of_punt_ext_net_1
-@{PORT_LIST}
-...                         of_punt_net1_port_1
-...                         of_punt_net1_port_2
-...                         of_punt_net2_port_1
-...                         of_punt_net2_port_2
-...                         of_punt_net3_port_1
-...                         of_punt_net3_port_2
-@{EXTRA_PORTS}              of_punt_net_1_port_3    of_punt_net_2_port_3
-@{EXTRA_VMS}                of_punt_net_1_vm_3    of_punt_net_2_vm_3
-@{EXTRA_NW_IP}              11.1.1.100    22.1.1.100    12.1.1.12    13.1.1.13
-@{VM_LIST}
-...                         of_punt_net1_vm_1
-...                         of_punt_net1_vm_2
-...                         of_punt_net2_vm_1
-...                         of_punt_net2_vm_2
-...                         of_punt_net3_vm_1
-...                         of_punt_net3_vm_2
-@{SUBNETS}                  of_punt_sub_1    of_punt_sub_2    of_punt_sub_3
-${EXT_SUBNETS}              of_punt_ext_sub_1
-@{SUBNETS_CIDR}             11.1.1.0/24    22.1.1.0/24    33.1.1.0/24
-${EXT_SUBNETS_CIDR}         55.1.1.0/24
-${EXT_SUBNETS_FIXED_IP}     55.1.1.100
-@{VPN_ID}                   4ae8cd92-48ca-49b5-94e1-b2921a261111    4ae8cd92-48ca-49b5-94e1-b2921a262222
-@{VPN_NAME}                 of_punt_vpn_1    of_punt_vpn_2
-@{ROUTERS}                  of_punt_router_1    of_punt_router_2
-@{ROUTERS_ID}               @{EMPTY}
-@{DPN_IDS}                  @{EMPTY}
-${SECURITY_GROUP}           of_punt_sg
-@{DCGW_RD_IRT_ERT}          11:1    22:1
-${L3VPN_RD_IRT_ERT}         ["${DCGW_RD_IRT_ERT}[0]"]    ["${DCGW_RD_IRT_ERT}[1]"]
-@{FILES_PATH}
-...                         ${KARAF_HOME}/etc/opendaylight/datastore/initial/config/netvirt-vpnmanager-config.xml
-...                         ${KARAF_HOME}/etc/opendaylight/datastore/initial/config/netvirt-natservice-config.xml
-...                         ${KARAF_HOME}/etc/opendaylight/datastore/initial/config/netvirt-elanmanager-config.xml
-${SNAT_ORIGINAL_TIMEOUT}    5
-${L3_ORIGINAL_TIMEOUT}      10
-${ARP_ORIGINAL_TIMEOUT}     5
-@{ORIGINAL_TIMEOUTS}        ${L3_ORIGINAL_TIMEOUT}    ${SNAT_ORIGINAL_TIMEOUT}    ${ARP_ORIGINAL_TIMEOUT}
-@{OF_PUNT_TABLES}           ${L3_PUNT_TABLE}    ${SNAT_PUNT_TABLE}    ${ARP_PUNT_TABLE}    ${ARP_LEARN_TABLE}
-@{VALID_TIMEOUTS}           20    30    100    1000    10000
-${TCP_PORT}                 80
-${UDP_PORT}                 33435
-${TELNET_PORT}              23
-${ARP_REG}                  0x1
-${GARP_REG}                 0x101
-
-
-*** Test Cases ***
-Verify default punt timeout values and flows
-    [Documentation]    Verify default time out for subnet route, SNAT and ARP in respective defualt openflow tables
-    ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
-    FOR    ${index}    IN RANGE    0    3
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    120s
-        ...    20s
-        ...    OVSDB.Verify Dump Flows For Specific Table
-        ...    ${snat_napt_switch_ip}
-        ...    ${OF_PUNT_TABLES}[${index}]
-        ...    True
-        ...    ${EMPTY}
-        ...    learn(table=${OF_PUNT_TABLES}[${index}],hard_timeout=${ORIGINAL_TIMEOUTS}[${index}]
-    END
-
-Set punt timeout to zero and verify flows
-    [Documentation]    Verify default flows in OVS for subnet route, SNAT and ARP after the changing the default punt timeout value to zero.
-    ...    Default subnet route, SNAT and ARP should get deleted after changing default timeout value to zero
-    FOR    ${index}    IN RANGE    0    3
-        Change Hard Timeout Value In XML File    ${FILES_PATH}[${index}]    ${ORIGINAL_TIMEOUTS}[${index}]    ${0}
-        Verify Punt Values In XML File    ${FILES_PATH}[${index}]    ${0}
-    END
-    ClusterManagement.Stop_Members_From_List_Or_All
-    ClusterManagement.Start_Members_From_List_Or_All
-    ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
-    BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
-    FOR    ${index}    IN RANGE    0    3
-        OVSDB.Verify Dump Flows For Specific Table
-        ...    ${snat_napt_switch_ip}
-        ...    ${OF_PUNT_TABLES}[${index}]
-        ...    False
-        ...    ${EMPTY}
-        ...    learn(table=${OF_PUNT_TABLES}[${index}],hard_timeout=${ORIGINAL_TIMEOUTS}[${index}]
-    END
-
-Set punt timeout to combination of valid ranges and verfiy flows
-    [Documentation]    Verify the default flow in OVS for subnet route, SNAT and ARP after the changing the default value to different set of values.
-    ...    Default subnet route, SNAT and ARP flows should get changed after changing default timeout value to different set of values
-    Set Original TimeOut In Xml    ${0}
-    FOR    ${index}    IN RANGE    0    3
-        Change Hard Timeout Value In XML File
-        ...    ${FILES_PATH}[${index}]
-        ...    ${ORIGINAL_TIMEOUTS}[${index}]
-        ...    ${VALID_TIMEOUTS}[0]
-        Verify Punt Values In XML File    ${FILES_PATH}[${index}]    ${VALID_TIMEOUTS}[0]
-    END
-    ${count} =    BuiltIn.Get length    ${VALID_TIMEOUTS}
-    FOR    ${index}    IN RANGE    1    ${count}
-        Change Hard Timeout Value In XML File
-        ...    ${FILES_PATH}[0]
-        ...    ${VALID_TIMEOUTS}[${index - 1}]
-        ...    ${VALID_TIMEOUTS}[${index}]
-        Verify Punt Values In XML File    ${FILES_PATH}[0]    ${VALID_TIMEOUTS}[${index}]
-        Change Hard Timeout Value In XML File
-        ...    ${FILES_PATH}[1]
-        ...    ${VALID_TIMEOUTS}[${index - 1}]
-        ...    ${VALID_TIMEOUTS}[${index}]
-        Verify Punt Values In XML File    ${FILES_PATH}[1]    ${VALID_TIMEOUTS}[${index}]
-        Change Hard Timeout Value In XML File
-        ...    ${FILES_PATH}[2]
-        ...    ${VALID_TIMEOUTS}[${index - 1}]
-        ...    ${VALID_TIMEOUTS}[${index}]
-        Verify Punt Values In XML File    ${FILES_PATH}[2]    ${VALID_TIMEOUTS}[${index}]
-        ClusterManagement.Stop_Members_From_List_Or_All
-        ClusterManagement.Start_Members_From_List_Or_All
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    120s
-        ...    20s
-        ...    OVSDB.Check OVS OpenFlow Connections
-        ...    ${OS_CMP1_IP}
-        ...    2
-        ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    120s
-        ...    5s
-        ...    OVSDB.Verify Dump Flows For Specific Table
-        ...    ${OS_COMPUTE_1_IP}
-        ...    ${L3_PUNT_TABLE}
-        ...    True
-        ...    ${EMPTY}
-        ...    learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[${index}]
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    120s
-        ...    5s
-        ...    OVSDB.Verify Dump Flows For Specific Table
-        ...    ${OS_COMPUTE_1_IP}
-        ...    ${ARP_PUNT_TABLE}
-        ...    True
-        ...    ${EMPTY}
-        ...    learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[${index}]
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    180s
-        ...    5s
-        ...    OVSDB.Verify Dump Flows For Specific Table
-        ...    ${snat_napt_switch_ip}
-        ...    ${SNAT_PUNT_TABLE}
-        ...    True
-        ...    ${EMPTY}
-        ...    learn(table=${SNAT_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[${index}]
-    END
-    Set Original TimeOut In Xml    ${VALID_TIMEOUTS}[4]
-
-Verify learnt flow for subnet route flow table
-    [Documentation]    Get default subnet table packet count before sending traffic to unkwon destination.
-    ...    Send subnet route traffic using Ping with packet count 5.
-    ...    Punt the first packet to controller and add new rule to stop pipeline processing.
-    ...    Check packet count before and after traffic for both(defualt and learnt tables).
-    FOR    ${index}    IN RANGE    0    3
-        Change Hard Timeout Value In XML File
-        ...    ${FILES_PATH}[${index}]
-        ...    ${ORIGINAL_TIMEOUTS}[${index}]
-        ...    ${VALID_TIMEOUTS}[0]
-        Verify Punt Values In XML File    ${FILES_PATH}[${index}]    ${VALID_TIMEOUTS}[0]
-    END
-    ClusterManagement.Stop_Members_From_List_Or_All
-    ClusterManagement.Start_Members_From_List_Or_All
-    BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${L3_PUNT_TABLE},
-    ...    |grep "ip actions=CONTROLLER:65535,learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IPS}[0]
-    ...    sudo ping -c 5 ${EXTRA_NW_IP}[1]
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${L3_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    nw_dst=${EXTRA_NW_IP}[1] actions=drop
-    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${L3_PUNT_TABLE},
-    ...    |grep "nw_dst=${EXTRA_NW_IP}[1] actions=drop"
-    BuiltIn.Should be true    ${learnt_packet_count} > 1
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${L3_PUNT_TABLE},
-    ...    |grep "ip actions=CONTROLLER:65535,learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    ${count_before_traffic} =    BuiltIn.Evaluate    ${count_before_traffic} + 1
-    BuiltIn.Should be true    ${count_after_traffic} == ${count_before_traffic}
-
-Verify learnt flow for UDP in SNAT flow table
-    [Documentation]    Get default SNAT table packet count before sending traffic to unkwon destination.
-    ...    Send UDP traffic using traceroute with packet count 4.
-    ...    Punt the first packet to controller and add new rule to stop pipeline processing.
-    ...    Check packet count before and after traffic for both(defualt and learnt tables).
-    ${compute_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
-    OVSDB.Verify Dump Flows For Specific Table    ${compute_ip}    ${SNAT_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${compute_ip}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${SNAT_PUNT_TABLE}
-    ...    |grep "table=46.*n_packets=[\0-9+].*udp.*learn(table=46"
-    BuiltIn.Should be true    ${count_before_traffic} == 0
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[2]
-    ...    ${VM_IPS}[4]
-    ...    traceroute ${EXTRA_NW_IP}[2] -w 1 -q 1 -m 4
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${compute_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    tp_dst=${UDP_PORT} actions=drop
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${compute_ip}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${SNAT_PUNT_TABLE}
-    ...    |grep "table=46.*n_packets=[\0-9+].*udp.*learn(table=46"
-    ${count_before_traffic} =    BuiltIn.Evaluate    ${count_before_traffic} + 1
-    BuiltIn.Should be true    ${count_after_traffic} == ${count_before_traffic}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${compute_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    actions=set_field:${EXT_SUBNETS_FIXED_IP}->ip_src
-    ${controller_packet_count} =    OvsManager.Get Packet Count From Table
-    ...    ${compute_ip}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${SNAT_PUNT_TABLE}
-    ...    |grep "table=46.*n_packets=[\0-9+].*udp.*nw_src=${VM_IPS}[4].*actions=set_field:${EXT_SUBNETS_FIXED_IP}.*goto_table:47"
-    BuiltIn.Should be true    ${controller_packet_count} > 1
-
-Verify learnt flow for TCP in SNAT flow table
-    [Documentation]    Get default SNAT table packet count before sending traffic to unkwon destination.
-    ...    Send TCP traffic using wget.
-    ...    Punt the first packet to controller and add new rule to stop pipeline processing.
-    ...    Check packet count before and after traffic for both(defualt and learnt tables).
-    ${compute_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
-    OVSDB.Verify Dump Flows For Specific Table    ${compute_ip}    ${SNAT_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${compute_ip}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${SNAT_PUNT_TABLE}
-    ...    |grep "table=46.*n_packets=[\0-9+].*tcp.*learn(table=46"
-    BuiltIn.Should be true    ${count_before_traffic} == 0
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[2]
-    ...    ${VM_IPS}[4]
-    ...    wget -qc http://${EXTRA_NW_IP}[2]/ &
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${compute_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    tp_dst=${TCP_PORT} actions=drop
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${compute_ip}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${SNAT_PUNT_TABLE}
-    ...    |grep "table=46.*n_packets=[\0-9+].*tcp.*learn(table=46"
-    ${count_before_traffic} =    BuiltIn.Evaluate    ${count_before_traffic} + 1
-    BuiltIn.Should be true    ${count_after_traffic} == ${count_before_traffic}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${compute_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    actions=set_field:${EXT_SUBNETS_FIXED_IP}->ip_src
-    ${controller_packet_count} =    OvsManager.Get Packet Count From Table
-    ...    ${compute_ip}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${SNAT_PUNT_TABLE}
-    ...    |grep "table=46.*n_packets=[\0-9+].*tcp.*nw_src=${VM_IPS}[4].*actions=set_field:${EXT_SUBNETS_FIXED_IP}.*goto_table:47"
-    BuiltIn.Should be true    ${controller_packet_count} > 1
-
-Verify learnt flow for ARP request in ARP tables
-    [Documentation]    Get default ARP table packet count before sending traffic to unkwon destination.
-    ...    Send ARP request traffic using arping.
-    ...    Punt the first packet to controller and add new rule to stop pipeline processing.
-    ...    Check packet count before and after traffic for both(defualt and learnt tables).
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP2_IP}    ${ARP_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ARP_PUNT_TABLE}
-    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    ${count_before_traffic_arp} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ELAN_BASETABLE}
-    ...    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${VM_IPS}[3]
-    ...    sudo arping -c 5 -I eth0 22.1.1.101
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP2_IP}
-    ...    ${ARP_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    arp_tpa=22.1.1.101,arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP2_IP}
-    ...    ${ARP_LEARN_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    arp_spa=22.1.1.101,arp_op=1
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ARP_PUNT_TABLE}
-    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    BuiltIn.Should be true    ${count_after_traffic} > ${count_before_traffic}
-    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ARP_PUNT_TABLE}
-    ...    |grep "n_packets=[\0-9+].*arp_tpa=22.1.1.101,arp_op=1.*actions=load:0x1"
-    BuiltIn.Should be true    ${learnt_packet_count} > 0
-    ${count_after_traffic_arp} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ELAN_BASETABLE}
-    ...    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
-    BuiltIn.Should be true    ${count_after_traffic_arp} > ${count_before_traffic_arp}
-
-Verify learnt flow for ARP reply in ARP tables
-    [Documentation]    Get default ARP table packet count before sending traffic to unkwon destination.
-    ...    Send ARP reply traffic using arping.
-    ...    Punt the first packet to controller and add new rule to stop pipeline processing.
-    ...    Check packet count before and after traffic for both(defualt and learnt tables).
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP2_IP}    ${ARP_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ARP_PUNT_TABLE}
-    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    ${count_before_traffic_arp} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ELAN_BASETABLE}
-    ...    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IPS}[1]
-    ...    sudo arping -A -c 5 -I eth0 -s ${VM_IPS}[1] 11.1.1.101
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP2_IP}
-    ...    ${ARP_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    arp_tpa=11.1.1.101,arp_op=2
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP2_IP}
-    ...    ${ARP_LEARN_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    arp_spa=11.1.1.101,arp_op=2
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ARP_PUNT_TABLE}
-    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    BuiltIn.Should be true    ${count_after_traffic} > ${count_before_traffic}
-    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ARP_PUNT_TABLE}
-    ...    |grep "n_packets=[\0-9+].*arp_tpa=11.1.1.101,arp_op=2.*actions=load:0x1"
-    BuiltIn.Should be true    ${learnt_packet_count} > 0
-    ${count_after_traffic_arp} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP2_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ELAN_BASETABLE}
-    ...    |grep "n_packets=[\0-9+].*reg4=${ARP_REG}.0xffff"
-    BuiltIn.Should be true    ${count_after_traffic_arp} > ${count_before_traffic_arp}
-
-Verify learnt flow for GARP (Gratuitous ARP) in ARP tables
-    [Documentation]    Get default ARP table packet count before sending traffic to unkwon destination.
-    ...    Send GARP traffic using arping.
-    ...    Punt the first packet to controller and add new rule to stop pipeline processing.
-    ...    Check packet count before and after traffic for both(defualt and learnt tables).
-    OVSDB.Verify Dump Flows For Specific Table    ${OS_CMP1_IP}    ${ARP_PUNT_TABLE}    ${VALID_TIMEOUTS}[0]
-    ${count_before_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ARP_PUNT_TABLE}
-    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    ${count_before_traffic_arp} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ELAN_BASETABLE}
-    ...    |grep "n_packets=[\0-9+].*reg4=${GARP_REG}.0xffff"
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IPS}[0]
-    ...    sudo arping -U -c 5 -I eth0 ${VM_IPS}[0] &
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    arp_tpa=${VM_IPS}[0],arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_LEARN_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    arp_spa=${VM_IPS}[0],arp_op=1
-    ${count_after_traffic} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ARP_PUNT_TABLE}
-    ...    |grep "arp actions=CONTROLLER:65535,learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]"
-    BuiltIn.Should be true    ${count_after_traffic} > ${count_before_traffic}
-    ${learnt_packet_count} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ARP_PUNT_TABLE}
-    ...    |grep "arp_tpa=${VM_IPS}[0],arp_op=1"
-    BuiltIn.Should be true    ${learnt_packet_count} > 0
-    ${count_after_traffic_arp} =    OvsManager.Get Packet Count From Table
-    ...    ${OS_CMP1_IP}
-    ...    ${INTEGRATION_BRIDGE}
-    ...    table=${ELAN_BASETABLE}
-    ...    |grep "n_packets=[\0-9+].*reg4=${GARP_REG}.0xffff"
-    BuiltIn.Should be true    ${count_after_traffic_arp} > ${count_before_traffic_arp}
-
-Verify resync subnet route, SNAT and ARP route flow tables after disconnect and reconnecting OVS control path
-    [Documentation]    Verify learnt subnet route, SNAT and ARP flows.
-    ...    Delete OVS manager and controller and verify learnt flows for subnet, SNAT and ARP.
-    ...    Set OVS manager and controoler again and verify learnt flows for subnet, SNAT and ARP.
-    ...    Verify subnet, SNAT and ARP default flows
-    ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
-    BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IPS}[0]
-    ...    sudo ping -c 5 ${EXTRA_NW_IP}[1]
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${L3_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    nw_dst=11.1.1.255 actions=drop
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${L3_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    nw_dst=${EXTRA_NW_IP}[1] actions=drop
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[2]
-    ...    ${VM_IPS}[4]
-    ...    traceroute ${EXTRA_NW_IP}[2] -w 1 -q 1 -m 4
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${snat_napt_switch_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    tp_dst=${UDP_PORT} actions=drop
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[2]
-    ...    ${VM_IPS}[4]
-    ...    wget -qc http://${EXTRA_NW_IP}[2]/ &
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${snat_napt_switch_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    tp_dst=${TCP_PORT} actions=drop
-    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IPS}[0]
-    ...    sudo arping -c 2 ${VM_IPS}[1]
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    arp_tpa=${VM_IPS}[1],arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_LEARN_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    arp_spa=${VM_IPS}[1],arp_op=1
-    OVSDB.Delete OVS Manager    ${OS_CMP1_IP}
-    OVSDB.Delete OVS Controller    ${OS_CMP1_IP}
-    OVSDB.Delete OVS Manager    ${snat_napt_switch_ip}
-    OVSDB.Delete OVS Controller    ${snat_napt_switch_ip}
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${L3_PUNT_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    nw_dst=11.1.1.255 actions=drop
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${L3_PUNT_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    nw_dst=${EXTRA_NW_IP}[1] actions=drop
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${snat_napt_switch_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    nw_dst=11.1.1.255 actions=drop
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${snat_napt_switch_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    tp_dst=${TCP_PORT} actions=drop
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_PUNT_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    arp_tpa=${VM_IPS}[1],arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_LEARN_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    arp_spa=${VM_IPS}[1],arp_op=1
-    OVSDB.Set Controller In OVS Bridge    ${OS_CMP1_IP}    ${INTEGRATION_BRIDGE}    tcp:${ODL_SYSTEM_IP}:6653
-    OVSDB.Set Controller In OVS Bridge    ${snat_napt_switch_ip}    ${INTEGRATION_BRIDGE}    tcp:${ODL_SYSTEM_IP}:6653
-    OVSDB.Add Multiple Managers to OVS    ${OS_CMP1_IP}
-    OVSDB.Add Multiple Managers to OVS    ${snat_napt_switch_ip}
-    ${snat_napt_switch_ip} =    Get NAPT Switch IP From DPID    ${ROUTERS}[1]
-    BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    120s
-    ...    20s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${L3_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    nw_dst=11.1.1.255 actions=drop
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    120s
-    ...    20s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${snat_napt_switch_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    tp_dst=${UDP_PORT} actions=drop
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    190s
-    ...    40s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${snat_napt_switch_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    tp_dst=${TCP_PORT} actions=drop
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    120s
-    ...    20s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_PUNT_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    arp_tpa=${EXTRA_NW_IP}[1],arp_op=1
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    120s
-    ...    20s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_LEARN_TABLE}
-    ...    False
-    ...    ${EMPTY}
-    ...    arp_spa=${EXTRA_NW_IP}[1],arp_op=1
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${L3_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    learn(table=${L3_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${snat_napt_switch_ip}
-    ...    ${SNAT_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    learn(table=${SNAT_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]
-    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${ARP_PUNT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    learn(table=${ARP_PUNT_TABLE},hard_timeout=${VALID_TIMEOUTS}[0]
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Create common setup related to openflow punt path protection
-    VpnOperations.Basic Suite Setup
-    FOR    ${network}    IN    @{NETWORKS}
-        OpenStackOperations.Create Network    ${network}
-    END
-    OpenStackOperations.Create Network    ${EXT_NETWORKS}    additional_args=--external --provider-network-type gre
-    ${elements} =    BuiltIn.Create List    ${EXT_NETWORKS}
-    ${count} =    BuiltIn.Get length    ${SUBNETS}
-    FOR    ${index}    IN RANGE    0    ${count}
-        OpenStackOperations.Create SubNet    ${NETWORKS}[${index}]    ${SUBNETS}[${index}]    ${SUBNETS_CIDR}[${index}]
-    END
-    OpenStackOperations.Create SubNet
-    ...    ${EXT_NETWORKS}
-    ...    ${EXT_SUBNETS}
-    ...    ${EXT_SUBNETS_CIDR}
-    ...    additional_args=--no-dhcp
-    FOR    ${router}    IN    @{ROUTERS}
-        OpenStackOperations.Create Router    ${router}
-        ${router_id} =    OpenStackOperations.Get Router Id    ${router}
-        Collections.Append To List    ${ROUTERS_ID}    ${router_id}
-    END
-    BuiltIn.Set Suite Variable    @{ROUTERS_ID}
-    FOR    ${index}    IN RANGE    0    2
-        OpenStackOperations.Add Router Interface    ${ROUTERS}[0]    ${SUBNETS}[${index}]
-    END
-    OpenStackOperations.Add Router Interface    ${ROUTERS}[1]    ${SUBNETS}[2]
-    OpenStackOperations.Create And Configure Security Group    ${SECURITY_GROUP}
-    ${ext_net} =    BuiltIn.Create List    ${EXT_NETWORKS}
-    ${NETWORKS_ALL} =    Collections.Combine Lists    ${NETWORKS}    ${ext_net}
-    FOR    ${index}    IN RANGE    0    3
-        OpenStackOperations.Create Port
-        ...    ${NETWORKS_ALL}[${index}]
-        ...    ${PORT_LIST}[${index + ${index}}]
-        ...    sg=${SECURITY_GROUP}
-        OpenStackOperations.Create Port
-        ...    ${NETWORKS_ALL}[${index}]
-        ...    ${PORT_LIST}[${index + ${index + 1}}]
-        ...    sg=${SECURITY_GROUP}
-    END
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${EXTRA_PORTS}[0]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=--allowed-address ip-address=0.0.0.0 --fixed-ip subnet=${SUBNETS}[0],ip-address=${EXTRA_NW_IP}[0]
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[1]
-    ...    ${EXTRA_PORTS}[1]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=--allowed-address ip-address=0.0.0.0 --fixed-ip subnet=${SUBNETS}[1],ip-address=${EXTRA_NW_IP}[1]
-    FOR    ${index}    IN RANGE    0    3
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORT_LIST}[${index + ${index}}]
-        ...    ${VM_LIST}[${index + ${index}}]
-        ...    ${OS_CMP1_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-        OpenStackOperations.Create Vm Instance With Port On Compute Node
-        ...    ${PORT_LIST}[${index + ${index + 1}}]
-        ...    ${VM_LIST}[${index + ${index + 1}}]
-        ...    ${OS_CMP2_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-    END
-    @{VM_IPS}    ${dhcp_ip} =    OpenStackOperations.Get VM IPs    @{VM_LIST}
-    BuiltIn.Set Suite Variable    ${VM_IPS}
-    OpenStackOperations.Show Debugs    @{VM_LIST}
-    BuiltIn.Should Not Contain    ${VM_IPS}    None
-    BuiltIn.Should Not Contain    ${dhcp_ip}    None
-    FOR    ${index}    IN RANGE    0    2
-        VpnOperations.VPN Create L3VPN
-        ...    name=${VPN_NAME}[${index}]
-        ...    vpnid=${VPN_ID}[${index}]
-        ...    rd=${L3VPN_RD_IRT_ERT}[${index}]
-        ...    exportrt=${L3VPN_RD_IRT_ERT}[${index}]
-        ...    importrt=${L3VPN_RD_IRT_ERT}[${index}]
-    END
-    VpnOperations.Associate VPN to Router    routerid=${ROUTERS_ID}[0]    vpnid=${VPN_ID}[0]
-    ${network_id} =    OpenStackOperations.Get Net Id    ${EXT_NETWORKS}
-    VpnOperations.Associate L3VPN To Network    networkid=${network_id}    vpnid=${VPN_ID}[1]
-    OpenStackOperations.Add Router Gateway
-    ...    ${ROUTERS}[1]
-    ...    ${EXT_NETWORKS}
-    ...    additional_args=--fixed-ip subnet=${EXT_SUBNETS},ip-address=${EXT_SUBNETS_FIXED_IP} --enable-snat
-    Create Dictionary For DPN ID And Compute IP Mapping For All DPNS
-    OpenStackOperations.Get Suite Debugs
-
-Set Original TimeOut In Xml
-    [Documentation]    Set default timeout in XML for all the punt files
-    [Arguments]    ${hard_timeout}
-    FOR    ${index}    IN RANGE    0    3
-        Change Hard Timeout Value In XML File
-        ...    ${FILES_PATH}[${index}]
-        ...    ${hard_timeout}
-        ...    ${ORIGINAL_TIMEOUTS}[${index}]
-        Verify Punt Values In XML File    ${FILES_PATH}[${index}]    ${ORIGINAL_TIMEOUTS}[${index}]
-    END
-    ClusterManagement.Stop_Members_From_List_Or_All
-    ClusterManagement.Start_Members_From_List_Or_All
-    BuiltIn.Wait Until Keyword Succeeds    120s    20s    OVSDB.Check OVS OpenFlow Connections    ${OS_CMP1_IP}    2
-
-Verify Punt Values In XML File
-    [Documentation]    Verify the default value for SNAT, ARP in ELAN, Subnet Routing in the xml file in ODL Controller
-    [Arguments]    ${file_path}    ${value}
-    ${output} =    Utils.Run Command On Remote System And Log
-    ...    ${ODL_SYSTEM_IP}
-    ...    cat ${file_path} | grep punt-timeout
-    @{matches} =    BuiltIn.Should Match Regexp    ${output}    punt.timeout.*?([0-9]+)
-    BuiltIn.Should be true    ${matches}[1] == ${value}
-
-Change Hard Timeout Value In XML File
-    [Documentation]    Change the default value in xml in the ODL controller for subnet route, SNAT and ARP
-    [Arguments]    ${file_path}    ${value_1}    ${value_2}
-    Utils.Run Command On Remote System And Log
-    ...    ${ODL_SYSTEM_IP}
-    ...    sed -i -e 's/punt-timeout\>${value_1}/punt-timeout\>${value_2}/' ${file_path}
-
-Create Dictionary For DPN ID And Compute IP Mapping For All DPNS
-    [Documentation]    Creating dictionary for DPN ID and compute IP mapping
-    FOR    ${ip}    IN    @{OS_ALL_IPS}
-        ${dpnid} =    OVSDB.Get DPID    ${ip}
-        Collections.Append To List    ${DPN_IDS}    ${dpnid}
-    END
-    ${DPN_TO_COMPUTE_IP} =    BuiltIn.Create Dictionary
-    ${count} =    BuiltIn.Get length    ${OS_ALL_IPS}
-    FOR    ${index}    IN RANGE    0    ${count}
-        Collections.Set To Dictionary    ${DPN_TO_COMPUTE_IP}    ${DPN_IDS}[${index}]    ${OS_ALL_IPS}[${index}]
-    END
-    FOR    ${dp_id}    IN    @{DPN_IDS}
-        Collections.Dictionary Should Contain Key    ${DPN_TO_COMPUTE_IP}    ${dp_id}
-    END
-    BuiltIn.Set Suite Variable    ${DPN_TO_COMPUTE_IP}
-
-Get SNAT NAPT Switch DPID
-    [Documentation]    Returns the SNAT NAPT switch dpnid from odl rest call.
-    [Arguments]    ${router_name}
-    ${router_id} =    OpenStackOperations.Get Router Id    ${router_name}
-    ${resp} =    RequestsLibrary.Get Request
-    ...    session
-    ...    ${CONFIG_API}/odl-nat:napt-switches/router-to-napt-switch/${router_id}
-    Log    ${resp.content}
-    @{matches} =    BuiltIn.Should Match Regexp    ${resp.content}    switch.id.*?([0-9]+)
-    ${dpnid} =    BuiltIn.Convert To Integer    ${matches}[1]
-    RETURN    ${dpnid}
-
-Get NAPT Switch IP From DPID
-    [Documentation]    Return SNAT NAPT switch ip for the given router name
-    [Arguments]    ${router_name}
-    ${dpnid} =    BuiltIn.Wait Until Keyword Succeeds    60s    15s    Get SNAT NAPT Switch DPID    ${router_name}
-    ${compute_ip} =    Collections.Get From Dictionary    ${DPN_TO_COMPUTE_IP}    ${dpnid}
-    RETURN    ${compute_ip}
diff --git a/csit/suites/netvirt/snatdnat/snat_dnat.robot b/csit/suites/netvirt/snatdnat/snat_dnat.robot
deleted file mode 100644 (file)
index fd63b12..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-*** Settings ***
-Documentation       Test suite to validate network address translation(snat/dnat) functionality in openstack integrated environment.
-...                 All the testcases were written to do flow validation since dc gateway is unavailable in csit environment.
-...                 This suite assumes proper integration bridges and vxlan tunnels are configured in the environment.
-
-Library             Collections
-Library             RequestsLibrary
-Library             SSHLibrary
-Library             String
-Resource            ../../../libraries/BgpOperations.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Tcpdump.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.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 ***
-${SECURITY_GROUP}           nat_sg
-${NETWORK_TYPE}             gre
-${SNAT_ENABLED}             "enable_snat": true
-${SNAT_DISABLED}            "enable_snat": false
-${ROUTER}                   nat_router
-${AS_ID}                    100
-${DCGW_SYSTEM_IP}           ${TOOLS_SYSTEM_1_IP}
-${LOOPBACK_IP}              5.5.5.2
-${DCGW_RD}                  100:1
-${VPN_NAME}                 vpn_1
-${VPN_INSTANCE_ID}          4ae8cd92-48ca-49b5-94e1-b2921a261442
-${ExtIP}                    100.100.100.24
-@{NETWORKS}                 nat_net_1    nat_net_2
-@{EXTERNAL_NETWORKS}        nat_ext_11    nat_ext_22
-@{EXTERNAL_SUB_NETWORKS}    nat_ext_sub_net_1    nat_ext_sub_net_2
-@{SUBNETS}                  nat_sub_net_1    nat_sub_net_2
-@{SUBNET_CIDRS}             10.1.1.0/24    20.1.1.0/24
-@{EXT_SUBNET_CIDRS}         100.100.100.0/24    200.200.200.0/24
-@{PORTS}                    nat_port_1    nat_port_2    nat_port_3    nat_port_4
-@{NET_1_VMS}                nat_net_1_vm_1    nat_net_1_vm_2    nat_net_1_vm_3    nat_net_1_vm_4
-
-
-*** Test Cases ***
-Verify Successful Creation Of External Network With Router External Set To TRUE
-    [Documentation]    Create external network,enable snat on router and validate the same.
-    OpenStackOperations.Add Router Gateway    ${ROUTER}    ${EXTERNAL_NETWORKS}[0]    --enable-snat
-    ${output} =    OpenStackOperations.Show Router    ${ROUTER}
-    BuiltIn.Should Contain    ${output}    ${SNAT_ENABLED}
-    ${output} =    OpenStackOperations.Show Network    ${EXTERNAL_NETWORKS}[0]
-    BuiltIn.Should Contain    ${output}    ${EXTERNAL_NETWORKS}[0]
-
-Verify Successful Update Of Router With External_gateway_info, Disable SNAT And Enable SNAT
-    [Documentation]    Disable snat, enable snat and validate the same.
-    OpenStackOperations.Add Router Gateway    ${ROUTER}    ${EXTERNAL_NETWORKS}[0]    --disable-snat
-    ${output} =    OpenStackOperations.Show Router    ${ROUTER}
-    BuiltIn.Should Contain    ${output}    ${SNAT_DISABLED}
-    OpenStackOperations.Add Router Gateway    ${ROUTER}    ${EXTERNAL_NETWORKS}[0]    --enable-snat
-    ${output} =    OpenStackOperations.Show Router    ${ROUTER}
-    BuiltIn.Should Contain    ${output}    ${SNAT_ENABLED}
-
-Verify Successful Deletion Of External Network
-    [Documentation]    Delete the external network and validate the same.
-    OpenStackOperations.Remove Gateway    ${ROUTER}
-    ${output} =    OpenStackOperations.Show Router    ${ROUTER}
-    BuiltIn.Should Not Contain    ${output}    ${SNAT_ENABLED}
-
-Verify Floating Ip Provision And Reachability From External Network Via Neutron Router Through L3vpn
-    [Documentation]    Check floating IP should be present in dump flows after creating the floating IP and associating it to external network
-    ...    which is associated to L3VPN
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_ID}
-    ...    name=${VPN_NAME}
-    ...    rd=["${DCGW_RD}"]
-    ...    exportrt=["${DCGW_RD}"]
-    ...    importrt=["${DCGW_RD}"]
-    ${ext_net_id} =    OpenStackOperations.Get Net Id    ${EXTERNAL_NETWORKS}[0]
-    VpnOperations.Associate L3VPN To Network    networkid=${ext_net_id}    vpnid=${VPN_INSTANCE_ID}
-    OpenStackOperations.Add Router Gateway    ${ROUTER}    ${EXTERNAL_NETWORKS}[0]    --disable-snat
-    ${output} =    OpenStackOperations.Show Router    ${ROUTER}
-    BuiltIn.Should Contain    ${output}    ${SNAT_DISABLED}
-    ${subnetid} =    OpenStackOperations.Get Subnet Id    ${EXTERNAL_SUB_NETWORKS}[0]
-    OpenStackOperations.Add Router Gateway
-    ...    ${ROUTER}
-    ...    ${EXTERNAL_NETWORKS}[0]
-    ...    --fixed-ip subnet=${subnetid},ip-address=${ExtIP}
-    ${float} =    OpenStackOperations.Create And Associate Floating IPs    ${EXTERNAL_NETWORKS}[0]    ${NET_1_VMS}[0]
-    ${float} =    BuiltIn.Set Variable    ${float}[0]
-    @{matching_paras} =    BuiltIn.Create List    nw_dst=${float}    goto_table:${DNAT_TABLE}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    10s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${PDNAT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    @{matching_paras}
-    @{matching_paras} =    BuiltIn.Create List    actions=set_field:${float}    goto_table:${SNAT_TABLE}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    10s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${PSNAT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    @{matching_paras}
-
-Verify Floating Ip De-provision And Reachability From External Network Via Neutron Router Through L3vpn
-    [Documentation]    Check floating IP should not be present in dump flows after deleting the floating IP
-    ...    and removing the external gateway from router which is associated to L3VPN
-    OpenStackOperations.Get ControlNode Connection
-    ${output} =    OpenStackOperations.OpenStack CLI    openstack floating ip list |awk '{print$2}'
-    ${floating_id} =    BuiltIn.Should Match Regexp
-    ...    ${output}
-    ...    [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
-    OpenStackOperations.Delete Floating IP    ${floating_id}
-    OpenStackOperations.Remove Gateway    ${ROUTER}
-    ${output} =    OVSDB.Get Flow Entries On Node    ${OS_CMP1_CONN_ID}
-    BuiltIn.Should Not Contain    ${output}    ${ExtIP}
-
-Verify Floating Ip Re-provision And Reachability From External Network Via Neutron Router Through L3vpn
-    [Documentation]    Check floating IP should be present in dump flows after creating the floating IP again wnd associating it to external network
-    ...    which is associated to L3VPN
-    ${subnetid} =    OpenStackOperations.Get Subnet Id    ${EXTERNAL_SUB_NETWORKS}[0]
-    OpenStackOperations.Add Router Gateway
-    ...    ${ROUTER}
-    ...    ${EXTERNAL_NETWORKS}[0]
-    ...    --fixed-ip subnet=${subnetid},ip-address=${ExtIP}
-    ${float} =    OpenStackOperations.Create And Associate Floating IPs    ${EXTERNAL_NETWORKS}[0]    ${NET_1_VMS}[0]
-    ${float} =    BuiltIn.Set Variable    ${float}[0]
-    @{matching_paras} =    BuiltIn.Create List    nw_dst=${float}    goto_table:${DNAT_TABLE}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    10s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${PDNAT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    @{matching_paras}
-    @{matching_paras} =    BuiltIn.Create List    actions=set_field:${float}    goto_table:${SNAT_TABLE}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    10s
-    ...    5s
-    ...    OVSDB.Verify Dump Flows For Specific Table
-    ...    ${OS_CMP1_IP}
-    ...    ${PSNAT_TABLE}
-    ...    True
-    ...    ${EMPTY}
-    ...    @{matching_paras}
-
-Verify Multiple Floating Ip Creation and Association to external network
-    [Documentation]    Check Multiple floating IPs should be present in dump flows after creating multiple floating IPs and associating it to external network
-    ...    which is associated to L3VPN
-    ${subnetid} =    OpenStackOperations.Get Subnet Id    ${EXTERNAL_SUB_NETWORKS}[0]
-    OpenStackOperations.Add Router Gateway
-    ...    ${ROUTER}
-    ...    ${EXTERNAL_NETWORKS}[0]
-    ...    --fixed-ip subnet=${subnetid},ip-address=${ExtIP}
-    ${FloatIp1} =    OpenStackOperations.Create And Associate Floating IPs
-    ...    ${EXTERNAL_NETWORKS}[0]
-    ...    ${NET_1_VMS}[1]
-    ${FloatIp2} =    OpenStackOperations.Create And Associate Floating IPs
-    ...    ${EXTERNAL_NETWORKS}[0]
-    ...    ${NET_1_VMS}[2]
-    ${FloatIp3} =    OpenStackOperations.Create And Associate Floating IPs
-    ...    ${EXTERNAL_NETWORKS}[0]
-    ...    ${NET_1_VMS}[3]
-    ${output} =    OVSDB.Get Flow Entries On Node    ${OS_CMP2_CONN_ID}
-    BuiltIn.Should Match Regexp    ${output}    ${ExtIP}
-    BuiltIn.Should Match Regexp    ${output}    .*${FloatIp1}.*
-    BuiltIn.Should Match Regexp    ${output}    .*${FloatIp2}.*
-    BuiltIn.Should Match Regexp    ${output}    .*${FloatIp3}.*
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Test Suite for Subnet_Routing_and_Multicast_Deployments.
-    VpnOperations.Basic Suite Setup
-    BgpOperations.Start Quagga Processes On ODL    ${ODL_SYSTEM_IP}
-    BgpOperations.Start Quagga Processes On DCGW    ${DCGW_SYSTEM_IP}
-    Create Setup
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Create Setup
-    Create Neutron Networks
-    Create Neutron Subnets
-    OpenStackOperations.Create SubNet
-    ...    ${EXTERNAL_NETWORKS}[0]
-    ...    ${EXTERNAL_SUB_NETWORKS}[0]
-    ...    ${EXT_SUBNET_CIDRS}[0]
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    Create Neutron Ports
-    Create Nova VMs
-    BgpOperations.Setup BGP Peering On ODL    ${ODL_SYSTEM_IP}    ${AS_ID}    ${DCGW_SYSTEM_IP}
-    BgpOperations.Setup BGP Peering On DCGW
-    ...    ${DCGW_SYSTEM_IP}
-    ...    ${AS_ID}
-    ...    ${ODL_SYSTEM_IP}
-    ...    ${VPN_NAME}
-    ...    ${DCGW_RD}
-    ...    ${LOOPBACK_IP}
-    OpenStackOperations.Create Router    ${ROUTER}
-    OpenStackOperations.Add Router Interface    ${ROUTER}    ${SUBNETS}[0]
-    OpenStackOperations.Add Router Interface    ${ROUTER}    ${SUBNETS}[1]
-
-Create Neutron Networks
-    [Documentation]    Create required number of networks
-    FOR    ${NET}    IN    @{NETWORKS}
-        OpenStackOperations.Create Network    ${NET}
-    END
-    OpenStackOperations.Create Network    ${EXTERNAL_NETWORKS}[0]    --external --provider-network-type ${NETWORK_TYPE}
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
-
-Create Neutron Subnets
-    [Documentation]    Create required number of subnets for previously created networks
-    ${num_of_networks} =    BuiltIn.Get Length    ${NETWORKS}
-    FOR    ${index}    IN RANGE    0    ${num_of_networks}
-        OpenStackOperations.Create SubNet    ${NETWORKS}[${index}]    ${SUBNETS}[${index}]    ${SUBNET_CIDRS}[${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
-    OpenStackOperations.Create Port    ${NETWORKS}[0]    ${PORTS}[0]    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${NETWORKS}[0]    ${PORTS}[1]    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${NETWORKS}[1]    ${PORTS}[2]    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${NETWORKS}[1]    ${PORTS}[3]    sg=${SECURITY_GROUP}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${CONFIG_API}/neutron:neutron/ports/
-    ...    ${PORTS}
-
-Create Nova VMs
-    [Documentation]    Create Vm instances on compute nodes
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[0]
-    ...    ${NET_1_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[1]
-    ...    ${NET_1_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[2]
-    ...    ${NET_1_VMS}[2]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[3]
-    ...    ${NET_1_VMS}[3]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
-
-Stop Suite
-    [Documentation]    Test teardown for snat suite.
-    BgpOperations.Delete BGP Configuration On ODL    session
-    BgpOperations.Delete BGP Config On Quagga    ${DCGW_SYSTEM_IP}    ${AS_ID}
-    BgpOperations.Stop BGP Processes On Node    ${ODL_SYSTEM_IP}
-    BgpOperations.Stop BGP Processes On Node    ${DCGW_SYSTEM_IP}
-    OpenStackOperations.OpenStack Suite Teardown
diff --git a/csit/suites/netvirt/subnet_routing/subnet_routing_and_multicast.robot b/csit/suites/netvirt/subnet_routing/subnet_routing_and_multicast.robot
deleted file mode 100644 (file)
index 975c02c..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-*** 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.
-
-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
-
-
-*** 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}
-    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]
-    @{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]
-    Verify Ping between Inter Intra And Enterprise host
-
-Verify The Subnet Route For Multiple Subnets On Multi VSwitch Topology When DC-GW Is Restarted
-    [Documentation]    Restart dcgw and check enterprise hosts reachability
-    BgpOperations.Restart BGP Processes On DCGW    ${DCGW_SYSTEM_IP}
-    Create BGP Config On DCGW
-    Verify Ping between Inter Intra And Enterprise host
-
-Verify The Subnet Route For Multiple Subnets On Multi VSwitch Topology When Qbgp Is Restarted
-    [Documentation]    Restart qbgp and check enterprise hosts reachability
-    BgpOperations.Restart BGP Processes On ODL    ${ODL_SYSTEM_IP}
-    Verify Ping between Inter Intra And Enterprise host
-
-Verify The Subnet Route When Vswitch Hosting Subnet Route Is Restarted On Single Vswitch Topology
-    [Documentation]    Restart single OVS node on which subnet route is configured and verify enterprise hosts reachability
-    OVSDB.Restart OVSDB    ${OS_COMPUTE_2_IP}
-    BuiltIn.Wait Until Keyword Succeeds    10s    20s    OVSDB.Verify Ovsdb State    ${OS_COMPUTE_2_IP}
-    VpnOperations.Verify Tunnel Status as UP
-    Verify Ping between Inter Intra And Enterprise host
-
-Verify The Subnet Route When Vswitch Hosting Subnet Enterprise Host Is Restarted On Multiple Vswitch Topology
-    [Documentation]    Restart the OVS node on both compute nodes and verify the subnet route
-    OVSDB.Restart OVSDB    ${OS_COMPUTE_1_IP}
-    OVSDB.Restart OVSDB    ${OS_COMPUTE_2_IP}
-    BuiltIn.Wait Until Keyword Succeeds    10s    20s    OVSDB.Verify Ovsdb State    ${OS_COMPUTE_1_IP}
-    BuiltIn.Wait Until Keyword Succeeds    10s    20s    OVSDB.Verify Ovsdb State    ${OS_COMPUTE_2_IP}
-    VpnOperations.Verify Tunnel Status as UP
-    Verify Ping between Inter Intra And Enterprise host
-
-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]
-    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
-
-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}
-    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}
-    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.
-    VpnOperations.Basic Suite Setup
-    BgpOperations.Start Quagga Processes On ODL    ${ODL_SYSTEM_IP}
-    BgpOperations.Start Quagga Processes On DCGW    ${DCGW_SYSTEM_IP}
-    Create Setup
-
-Stop Suite
-    [Documentation]    Test Teardown for Subnet_Routing_and_Multicast_Deployments.
-    BgpOperations.Delete BGP Configuration On ODL    session
-    BgpOperations.Delete BGP Config On Quagga    ${DCGW_SYSTEM_IP}    ${AS_ID}
-    BgpOperations.Stop BGP Processes On Node    ${ODL_SYSTEM_IP}
-    BgpOperations.Stop BGP Processes On Node    ${DCGW_SYSTEM_IP}
-    OpenStackOperations.OpenStack Suite Teardown
-
-Create Setup
-    [Documentation]    Create basic topology
-    OpenStackOperations.OpenStack Suite Setup
-    ${id} =    OpenStackOperations.Get Project Id    ${ODL_RESTCONF_USER}
-    OpenStackOperations.Set Instance Quota For Project    ${NUM_OF_INSTANCES}    ${id}
-    Create Neutron Networks
-    Create Neutron Subnets    ${3}
-    OpenStackOperations.Create And Configure Security Group    ${SECURITY_GROUP}
-    Create Neutron Ports
-    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}
-    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}
-    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}
-    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}
-    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}
-    END
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
-
-Create Neutron Subnets
-    [Documentation]    Create required number of subnets for previously created networks
-    [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}
-    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}
-    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}
-    BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_3_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_3_VM_IPS}    None
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}    @{NET_3_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]
-
-Create L3VPN
-    [Documentation]    Create L3VPN and verify the same
-    ${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.Verify L3VPN On ODL    ${VPN_INSTANCE_ID}
-
-Create BGP Config On ODL
-    [Documentation]    Configure BGP Config on ODL
-    KarafKeywords.Issue Command On Karaf Console    ${BGP_CONFIG_SERVER_CMD}
-    BgpOperations.Create BGP Configuration On ODL    localas=${AS_ID}    routerid=${ODL_SYSTEM_IP}
-    BgpOperations.AddNeighbor To BGP Configuration On ODL    remoteas=${AS_ID}    neighborAddr=${DCGW_SYSTEM_IP}
-    ${output} =    BgpOperations.Get BGP Configuration On ODL    session
-    BuiltIn.Should Contain    ${output}    ${DCGW_SYSTEM_IP}
-
-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}
-    ...    ${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}
-
-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}
diff --git a/csit/suites/netvirt/upgrade/upgrade.robot b/csit/suites/netvirt/upgrade/upgrade.robot
deleted file mode 100644 (file)
index b73443f..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-*** Settings ***
-Documentation       Test suite for ODL Upgrade. It is assumed that OLD + OpenStack
-...                 integrated environment is deployed and ready.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Library             SSHLibrary
-Resource            ../../../libraries/ClusterManagement.robot
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/KarafKeywords.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Utils.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Upgrade Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       Get Test Teardown Debugs
-
-
-*** Variables ***
-${SECURITY_GROUP}               upgrade_sg
-@{NETWORKS}                     upgrade_net_1    upgrade_net_2
-@{SUBNETS}                      upgrade_sub_1    upgrade_sub_2
-@{NET_1_VMS}                    upgrade_net_1_vm_1    upgrade_net_1_vm_2
-@{NET_2_VMS}                    upgrade_net_2_vm_1    upgrade_net_2_vm_2
-@{SUBNETS_RANGE}                91.0.0.0/24    92.0.0.0/24
-${ROUTER}                       upgrade_router_1
-${TYPE}                         tun
-${PASSIVE_MANAGER}              ptcp:6641:127.0.0.1
-@{DEBUG_LOG_COMPONENTS}
-...                             org.opendaylight.ovsdb
-...                             org.opendaylight.ovsdb.lib
-...                             org.opendaylight.netvirt
-${UPDATE_FLAG_PATH}             /restconf/config/odl-serviceutils-upgrade:upgrade-config
-${GET_ACTIVE_BUNDLE_URI}        /restconf/operations/arbitrator-reconcile:get-active-bundle
-${COMMIT_ACTIVE_BUNDLE_URI}     /restconf/operations/arbitrator-reconcile:commit-active-bundle
-${COMMIT_ACTIVE_BUNDLE_DIR}     ${CURDIR}/../../../variables/netvirt/commit_active_bundle
-${SET_BUNDLE_TIMEOUT}           sudo ovs-vsctl set O . other_config:bundle-idle-timeout=3600
-
-
-*** Test Cases ***
-Create Setup And Verify Instance Connectivity
-    [Documentation]    Create 2 VXLAN networks, subnets with 2 VMs each and a router. Ping all 4 VMs.
-    Check Resource Connectivity
-
-Stop ODL
-    ClusterManagement.Stop_Members_From_List_Or_All
-
-Disconnect OVS
-    [Documentation]    Delete OVS manager, controller and groups and tun ports
-    FOR    ${node}    IN    @{OS_ALL_IPS}
-        OVSDB.Delete OVS Manager    ${node}
-        OVSDB.Delete OVS Controller    ${node}
-        OVSDB.Delete Groups On Bridge    ${node}    ${INTEGRATION_BRIDGE}
-        OVSDB.Delete Ports On Bridge By Type    ${node}    ${INTEGRATION_BRIDGE}    ${TYPE}
-        Utils.Run Command On Remote System    ${node}    ${SET_BUNDLE_TIMEOUT}
-    END
-
-Wipe Local Data
-    [Documentation]    Delete data/, journal/, snapshots/
-    ClusterManagement.Clean_Journals_Data_And_Snapshots_On_List_Or_All
-
-Start ODL
-    [Documentation]    Start controller, wait for it to come "UP" and make sure netvirt is installed
-    ClusterManagement.Start_Members_From_List_Or_All    wait_for_sync=True
-    Wait Until Keyword Succeeds    100s    5s    Utils.Check Diagstatus
-    BuiltIn.Set_Suite_Variable    \${ClusterManagement__has_setup_run}    False
-    KarafKeywords.Verify_Feature_Is_Installed    odl-netvirt-openstack
-    Set Custom Component Logging To    DEBUG
-
-Wait For Full Sync
-    [Documentation]    Wait for networking_odl to sync neutron configuration
-    Wait Until Keyword Succeeds    90s    5s    Canary Network Should Exist
-
-Set Upgrade Flag
-    ${resp} =    RequestsLibrary.Put Request
-    ...    session
-    ...    ${UPDATE_FLAG_PATH}
-    ...    {"upgrade-config":{"upgradeInProgress":true}}
-    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
-
-Set OVS Manager And Controller
-    [Documentation]    Set controller and manager on each OpenStack node and check that egress flows are present
-    FOR    ${node}    IN    @{OS_ALL_IPS}
-        Utils.Run Command On Remote System And Log
-        ...    ${node}
-        ...    sudo ovs-vsctl set-manager tcp:${ODL_SYSTEM_IP}:${OVSDBPORT} ${PASSIVE_MANAGER}
-    END
-    Wait Until Keyword Succeeds    60s    10s    Verify Bundle Active State
-    FOR    ${node}    IN    @{OS_ALL_IPS}
-        ${dpnid} =    OVSDB.Get DPID    ${node}
-        ${dpnid} =    BuiltIn.Convert To String    ${dpnid}
-        ${body} =    OperatingSystem.Get File    ${COMMIT_ACTIVE_BUNDLE_DIR}/data.json
-        ${body} =    Replace String    ${body}    DPNID    ${dpnid}
-        ${resp} =    RequestsLibrary.Post Request    session    ${COMMIT_ACTIVE_BUNDLE_URI}    data=${body}
-        BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    END
-    Wait Until Keyword Succeeds    180s    15s    Check OVS Nodes Have Egress Flows
-
-UnSet Upgrade Flag
-    ${resp} =    RequestsLibrary.Put Request
-    ...    session
-    ...    ${UPDATE_FLAG_PATH}
-    ...    {"upgrade-config":{"upgradeInProgress":false}}
-    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    200
-
-Check Connectivity With Previously Created Resources And br-int Info
-    [Documentation]    Check that pre-existing instance connectivity still works after the new controller is brought
-    ...    up and config is sync'd
-    Wait Until Keyword Succeeds    90s    10s    Check Resource Connectivity
-
-
-*** Keywords ***
-Suite Setup
-    OpenStackOperations.OpenStack Suite Setup
-    Create Resources
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Create Resources
-    [Documentation]    Create 2 VXLAN networks, subnets with 2 VMs each and a router. Ping all 4 VMs.
-    FOR    ${net}    IN    @{NETWORKS}
-        OpenStackOperations.Create Network    ${net}
-    END
-    OpenStackOperations.Create SubNet    ${NETWORKS}[0]    ${SUBNETS}[0]    ${SUBNETS_RANGE}[0]
-    OpenStackOperations.Create SubNet    ${NETWORKS}[1]    ${SUBNETS}[1]    ${SUBNETS_RANGE}[1]
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    OpenStackOperations.Create Nano Flavor
-    FOR    ${vm}    IN    @{NET_1_VMS}
-        OpenStackOperations.Create Vm Instance On Compute Node
-        ...    ${NETWORKS}[0]
-        ...    ${vm}
-        ...    ${OS_CMP1_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-    END
-    FOR    ${vm}    IN    @{NET_2_VMS}
-        OpenStackOperations.Create Vm Instance On Compute Node
-        ...    ${NETWORKS}[1]
-        ...    ${vm}
-        ...    ${OS_CMP2_HOSTNAME}
-        ...    sg=${SECURITY_GROUP}
-    END
-    OpenStackOperations.Create Router    ${ROUTER}
-    FOR    ${interface}    IN    @{SUBNETS}
-        OpenStackOperations.Add Router Interface    ${ROUTER}    ${interface}
-    END
-    @{NET1_VM_IPS}    ${NET1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    @{NET2_VM_IPS}    ${NET2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
-    BuiltIn.Set Suite Variable    @{NET1_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET2_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET1_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET2_DHCP_IP}    None
-
-Check Resource Connectivity
-    [Documentation]    Ping 2 VMs in the same net and 1 from another net.
-    OpenStackOperations.Ping Vm From DHCP Namespace    upgrade_net_1    ${NET1_VM_IPS}[0]
-    OpenStackOperations.Ping Vm From DHCP Namespace    upgrade_net_1    ${NET1_VM_IPS}[1]
-    OpenStackOperations.Ping Vm From DHCP Namespace    upgrade_net_1    ${NET2_VM_IPS}[0]
-    OpenStackOperations.Ping Vm From DHCP Namespace    upgrade_net_2    ${NET2_VM_IPS}[0]
-    OpenStackOperations.Ping Vm From DHCP Namespace    upgrade_net_2    ${NET2_VM_IPS}[1]
-    OpenStackOperations.Ping Vm From DHCP Namespace    upgrade_net_2    ${NET1_VM_IPS}[0]
-
-Check OVS Nodes Have Egress Flows
-    [Documentation]    Loop over all openstack nodes to ensure they have the proper flows installed.
-    FOR    ${node}    IN    @{OS_ALL_IPS}
-        Does OVS Have Multiple Egress Flows    ${node}
-    END
-
-Does OVS Have Multiple Egress Flows
-    [Documentation]    Verifies that at least 1 flow exists on the node for the ${EGRESS_L2_FWD_TABLE}
-    [Arguments]    ${ip}
-    ${flows} =    Utils.Run Command On Remote System And Log
-    ...    ${ip}
-    ...    sudo ovs-ofctl -O OpenFlow13 dump-flows ${INTEGRATION_BRIDGE}
-    ${egress_flows} =    String.Get Lines Containing String    ${flows}    table=${EGRESS_LPORT_DISPATCHER_TABLE}
-    ${num_egress_flows} =    String.Get Line Count    ${egress_flows}
-    BuiltIn.Should Be True    ${num_egress_flows} > 1
-
-Set Custom Component Logging To
-    [Arguments]    ${level}
-    SetupUtils.Setup_Logging_For_Debug_Purposes_On_List_Or_All    ${level}    ${DEBUG_LOG_COMPONENTS}
-    KarafKeywords.Issue_Command_On_Karaf_Console    log:list
-
-Canary Network Should Exist
-    OpenStackOperations.Get Neutron Network Rest    bd8db3a8-2b30-4083-a8b3-b3fd46401142
-
-Upgrade Suite Teardown
-    Set Custom Component Logging To    INFO
-    OpenStackOperations.OpenStack Suite Teardown
-
-Verify Bundle Active State
-    [Documentation]    Verify if the bundle is active for the node.
-    FOR    ${node}    IN    @{OS_ALL_IPS}
-        ${dpnid} =    OVSDB.Get DPID    ${node}
-        ${dpnid} =    BuiltIn.Convert To String    ${dpnid}
-        ${body} =    OperatingSystem.Get File    ${COMMIT_ACTIVE_BUNDLE_DIR}/data.json
-        ${body} =    Replace String    ${body}    DPNID    ${dpnid}
-        ${resp} =    RequestsLibrary.Post Request    session    ${GET_ACTIVE_BUNDLE_URI}    data=${body}
-        BuiltIn.Log    ${resp.text}
-        BuiltIn.Should Contain    ${resp.text}    "result":
-        BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    END
diff --git a/csit/suites/netvirt/vnibasedIpv6forwarding/vnibasedIpv6forwarding.robot b/csit/suites/netvirt/vnibasedIpv6forwarding/vnibasedIpv6forwarding.robot
deleted file mode 100644 (file)
index 57435dc..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-*** Settings ***
-Documentation       Test Suite for vni-based-l2-l3-nat:
-...                 This feature attempts to realize the use of VxLAN VNI
-...                 (Virtual Network Identifier) for VxLAN tenant traffic
-...                 flowing on the cloud data-network. This is applicable
-...                 to L2 switching, L3 forwarding and NATing for all VxLAN
-...                 based provider networks. In doing so, it eliminates the
-...                 presence of LPort tags, ELAN tags and MPLS labels on the
-...                 wire and instead, replaces them with VNIs supplied by the
-...                 tenant’s OpenStack.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Library             String
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/KarafKeywords.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../variables/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Suite Teardown
-Test Setup          VpnOperations.VNI Test Setup
-Test Teardown       VpnOperations.VNI Test Teardown
-
-
-*** Variables ***
-${EGRESS}                   Egress
-${INGRESS}                  Ingress
-${IP}                       ipv6
-${VNI6_SECURITY_GROUP}      vni6_sg
-@{VNI6_NETWORKS}            vni6_net_0    vni6_net_1    vni6_net_2    vni6_net_3
-@{VNI6_SUBNETS}             vni6_sub_0    vni6_sub_1    vni6_sub_2    vni6_sub_3
-@{VNI6_SUBNET_CIDRS}        2001:db8:0:4::/64    2001:db8:0:5::/64    2001:db8:0:6::/64    2001:db8:0:7::/64
-@{VNI6_NET_0_PORTS}         vni6_net_0_port_1    vni6_net_0_port_2
-@{VNI6_NET_1_PORTS}         vni6_net_1_port_1    vni6_net_1_port_2
-@{VNI6_NET_2_PORTS}         vni6_net_2_port_1    vni6_net_2_port_2
-@{VNI6_NET_3_PORTS}         vni6_net_3_port_1    vni6_net_3_port_2
-@{VNI6_NET_0_VMS}           vni6_net_0_vm_1
-@{VNI6_NET_1_VMS}           vni6_net_1_vm_1
-@{VNI6_NET_2_VMS}           vni6_net_2_vm_1
-@{VNI6_NET_3_VMS}           vni6_net_3_vm_1
-@{VNI6_ROUTER}              vni6_router1    vni6_router2    vni6_router3
-@{VNI6_RDS}                 ["2600:2"]    ["2700:2"]    ["2800:2"]
-@{VNI6_VPN_NAMES}           VNI6_vpn_1    VNI6_vpn_2    VNI6_vpn_3
-@{VNI6_VPN_INSTANCE_IDS}
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261551
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261552
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261553
-${NET0_ADDITIONAL_ARGS}
-...                         --ip-version=6 --ipv6-address-mode=slaac --ipv6-ra-mode=slaac --allocation-pool start=2001:db8:0:4::2,end=2001:db8:0:4:ffff:ffff:ffff:fffe
-${NET1_ADDITIONAL_ARGS}
-...                         --ip-version=6 --ipv6-address-mode=slaac --ipv6-ra-mode=slaac --allocation-pool start=2001:db8:0:5::2,end=2001:db8:0:5:ffff:ffff:ffff:fffe
-${NET2_ADDITIONAL_ARGS}
-...                         --ip-version=6 --ipv6-address-mode=slaac --ipv6-ra-mode=slaac --allocation-pool start=2001:db8:0:6::2,end=2001:db8:0:6:ffff:ffff:ffff:fffe
-${NET3_ADDITIONAL_ARGS}
-...                         --ip-version=6 --ipv6-address-mode=slaac --ipv6-ra-mode=slaac --allocation-pool start=2001:db8:0:7::2,end=2001:db8:0:7:ffff:ffff:ffff:fffe
-
-
-*** Test Cases ***
-VNI Based IPv6 Forwarding
-    [Documentation]    verify VNI id for IPv6 Unicast frames exchanged over OVS datapaths that are on different hypervisors
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    5s
-    ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
-    ...    ${VNI6_NET_0_PORTS}[0]
-    ...    ${VNI6_NET_1_PORTS}[0]
-    ...    ${VNI6_NETWORKS}[0]
-    ...    ${VNI6_NETWORKS}[1]
-    ...    ${VM_IP_NET0}[0]
-    ...    ${VM_IP_NET1}[0]
-    ...    ${IP}
-
-VNI Based IPv6 Forwarding With BGPVPN Router Association
-    [Documentation]    verify VNI id for IPv6 Unicast frames exchanged over OVS datapaths that are on different hypervisors
-    ...    With Router associated to a BGPVPN.
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    ${net_id} =    OpenStackOperations.Get Net Id    ${VNI6_NETWORKS}[0]
-    ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VNI6_VPN_INSTANCE_IDS}[0]
-    ...    name=${VNI6_VPN_NAMES}[0]
-    ...    rd=${VNI6_RDS}[0]
-    ...    exportrt=${VNI6_RDS}[0]
-    ...    importrt=${VNI6_RDS}[0]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI6_VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${VNI6_VPN_INSTANCE_IDS}[0]
-    ${router_id} =    OpenStackOperations.Get Router Id    ${VNI6_ROUTER}[0]
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VNI6_VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI6_VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    5s
-    ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
-    ...    ${VNI6_NET_0_PORTS}[0]
-    ...    ${VNI6_NET_1_PORTS}[0]
-    ...    ${VNI6_NETWORKS}[0]
-    ...    ${VNI6_NETWORKS}[1]
-    ...    ${VM_IP_NET0}[0]
-    ...    ${VM_IP_NET1}[0]
-    ...    ${IP}
-
-VNI Based IPv6 Forwarding With Two Routers And BGPVPN With Irt Ert
-    [Documentation]    verify VNI id for IPv6 Unicast frames exchanged over OVS datapaths that are on different hypervisors
-    ...    With Two Routers each associated to a BGPVPN and The Two BGPVPN is connected with irt and ert.
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    OpenStackOperations.Create Network    ${VNI6_NETWORKS}[2]
-    OpenStackOperations.Create Network    ${VNI6_NETWORKS}[3]
-    OpenStackOperations.Create SubNet
-    ...    ${VNI6_NETWORKS}[2]
-    ...    ${VNI6_SUBNETS}[2]
-    ...    ${VNI6_SUBNET_CIDRS}[2]
-    ...    ${NET2_ADDITIONAL_ARGS}
-    OpenStackOperations.Create SubNet
-    ...    ${VNI6_NETWORKS}[3]
-    ...    ${VNI6_SUBNETS}[3]
-    ...    ${VNI6_SUBNET_CIDRS}[3]
-    ...    ${NET3_ADDITIONAL_ARGS}
-    OpenStackOperations.Create Port    ${VNI6_NETWORKS}[2]    ${VNI6_NET_2_PORTS}[0]    sg=${VNI6_SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${VNI6_NETWORKS}[3]    ${VNI6_NET_3_PORTS}[0]    sg=${VNI6_SECURITY_GROUP}
-    OpenStackOperations.Create Router    ${VNI6_ROUTER}[1]
-    OpenStackOperations.Add Router Interface    ${VNI6_ROUTER}[1]    ${VNI6_SUBNETS}[2]
-    OpenStackOperations.Create Router    ${VNI6_ROUTER}[2]
-    OpenStackOperations.Add Router Interface    ${VNI6_ROUTER}[2]    ${VNI6_SUBNETS}[3]
-    ${net_id} =    OpenStackOperations.Get Net Id    ${VNI6_NETWORKS}[2]
-    ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VNI6_VPN_INSTANCE_IDS}[1]
-    ...    name=${VNI6_VPN_NAMES}[1]
-    ...    rd=${VNI6_RDS}[1]
-    ...    exportrt=${VNI6_RDS}[1]
-    ...    importrt=${VNI6_RDS}[2]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI6_VPN_INSTANCE_IDS}[1]
-    BuiltIn.Should Contain    ${resp}    ${VNI6_VPN_INSTANCE_IDS}[1]
-    ${router_id} =    OpenStackOperations.Get Router Id    ${VNI6_ROUTER}[1]
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VNI6_VPN_INSTANCE_IDS}[1]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI6_VPN_INSTANCE_IDS}[1]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VNI6_VPN_INSTANCE_IDS}[2]
-    ...    name=${VNI6_VPN_NAMES}[2]
-    ...    rd=${VNI6_RDS}[2]
-    ...    exportrt=${VNI6_RDS}[2]
-    ...    importrt=${VNI6_RDS}[1]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI6_VPN_INSTANCE_IDS}[2]
-    BuiltIn.Should Contain    ${resp}    ${VNI6_VPN_INSTANCE_IDS}[2]
-    ${router_id} =    OpenStackOperations.Get Router Id    ${VNI6_ROUTER}[2]
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VNI6_VPN_INSTANCE_IDS}[2]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI6_VPN_INSTANCE_IDS}[2]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI6_NET_2_PORTS}[0]
-    ...    ${VNI6_NET_2_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${VNI6_SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI6_NET_3_PORTS}[0]
-    ...    ${VNI6_NET_3_VMS}[0]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${VNI6_SECURITY_GROUP}
-    OpenStackOperations.Poll VM Is ACTIVE    ${VNI6_NET_2_VMS}[0]
-    OpenStackOperations.Poll VM Is ACTIVE    ${VNI6_NET_3_VMS}[0]
-    ${networks} =    BuiltIn.Create List    ${VNI6_NETWORKS}[2]    ${VNI6_NETWORKS}[3]
-    ${subnet_cidrs} =    BuiltIn.Create List    ${VNI6_SUBNET_CIDRS}[2]    ${VNI6_SUBNET_CIDRS}[3]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    OpenStackOperations.Wait For Routes To Propogate
-    ...    ${networks}
-    ...    ${subnet_cidrs}
-    ${prefix_net2} =    String.Replace String    ${VNI6_SUBNET_CIDRS}[2]    ::/64    (:[a-f0-9]{,4}){,4}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=true
-    ...    vm_list=${VNI6_NET_2_VMS}
-    ...    network=${VNI6_NETWORKS}[2]
-    ...    subnet=${prefix_net2}
-    ${prefix_net3} =    String.Replace String    ${VNI6_SUBNET_CIDRS}[3]    ::/64    (:[a-f0-9]{,4}){,4}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=true
-    ...    vm_list=${VNI6_NET_3_VMS}
-    ...    network=${VNI6_NETWORKS}[3]
-    ...    subnet=${prefix_net3}
-    ${VM_IP_NET2} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=false
-    ...    vm_list=${VNI6_NET_2_VMS}
-    ...    network=${VNI6_NETWORKS}[2]
-    ...    subnet=${prefix_net2}
-    ${VM_IP_NET3} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=false
-    ...    vm_list=${VNI6_NET_3_VMS}
-    ...    network=${VNI6_NETWORKS}[3]
-    ...    subnet=${prefix_net3}
-    ${status}    ${message} =    Run Keyword And Ignore Error    BuiltIn.Should Not Contain    ${VM_IP_NET2}    None
-    IF    '${status}' == 'FAIL'
-        OpenStack CLI    openstack console log show ${VNI6_NET_2_VMS}[0]    30s
-    END
-    ${status}    ${message} =    Run Keyword And Ignore Error    BuiltIn.Should Not Contain    ${VM_IP_NET3}    None
-    IF    '${status}' == 'FAIL'
-        OpenStack CLI    openstack console log show ${VNI6_NET_3_VMS}[0]    30s
-    END
-    OpenStackOperations.Copy DHCP Files From Control Node
-    BuiltIn.Should Not Contain    ${VM_IP_NET2}    None
-    BuiltIn.Should Not Contain    ${VM_IP_NET3}    None
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    5s
-    ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
-    ...    ${VNI6_NET_2_PORTS}[0]
-    ...    ${VNI6_NET_3_PORTS}[0]
-    ...    ${VNI6_NETWORKS}[2]
-    ...    ${VNI6_NETWORKS}[3]
-    ...    ${VM_IP_NET2}[0]
-    ...    ${VM_IP_NET3}[0]
-    ...    ${IP}
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Create Basic setup for the feature. Creates single network, subnet, two ports and two VMs.
-    ...    Create Two VMs for TC1 : (VM1, N1, Compute1) and (VM2, N2, Compute2) and R1
-    IF    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    RETURN
-    VpnOperations.Basic Suite Setup
-    OpenStackOperations.Create Allow All SecurityGroup    ${VNI6_SECURITY_GROUP}    IPv6
-    OpenStackOperations.Create Network    ${VNI6_NETWORKS}[0]
-    OpenStackOperations.Create Network    ${VNI6_NETWORKS}[1]
-    OpenStackOperations.Create SubNet
-    ...    ${VNI6_NETWORKS}[0]
-    ...    ${VNI6_SUBNETS}[0]
-    ...    ${VNI6_SUBNET_CIDRS}[0]
-    ...    ${NET0_ADDITIONAL_ARGS}
-    OpenStackOperations.Create SubNet
-    ...    ${VNI6_NETWORKS}[1]
-    ...    ${VNI6_SUBNETS}[1]
-    ...    ${VNI6_SUBNET_CIDRS}[1]
-    ...    ${NET1_ADDITIONAL_ARGS}
-    OpenStackOperations.Create Port    ${VNI6_NETWORKS}[0]    ${VNI6_NET_0_PORTS}[0]    sg=${VNI6_SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${VNI6_NETWORKS}[1]    ${VNI6_NET_1_PORTS}[0]    sg=${VNI6_SECURITY_GROUP}
-    OpenStackOperations.Create Router    ${VNI6_ROUTER}[0]
-    OpenStackOperations.Add Router Interface    ${VNI6_ROUTER}[0]    ${VNI6_SUBNETS}[0]
-    OpenStackOperations.Add Router Interface    ${VNI6_ROUTER}[0]    ${VNI6_SUBNETS}[1]
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${VNI6_ROUTER}[0]
-    ${GWMAC_ADDRS}    ${GWIP_ADDRS} =    VpnOperations.Get Gateway MAC And IP Address    ${VNI6_ROUTER}[0]
-    BuiltIn.Set Suite Variable    ${GWMAC_ADDRS}
-    BuiltIn.Set Suite Variable    ${GWIP_ADDRS}
-    ${router_list} =    BuiltIn.Create List    ${VNI6_ROUTER}[0]
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI6_NET_0_PORTS}[0]
-    ...    ${VNI6_NET_0_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${VNI6_SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI6_NET_1_PORTS}[0]
-    ...    ${VNI6_NET_1_VMS}[0]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${VNI6_SECURITY_GROUP}
-    OpenStackOperations.Poll VM Is ACTIVE    ${VNI6_NET_0_VMS}[0]
-    OpenStackOperations.Poll VM Is ACTIVE    ${VNI6_NET_1_VMS}[0]
-    ${networks} =    BuiltIn.Create List    ${VNI6_NETWORKS}[0]    ${VNI6_NETWORKS}[1]
-    ${subnet_cidrs} =    BuiltIn.Create List    ${VNI6_SUBNET_CIDRS}[0]    ${VNI6_SUBNET_CIDRS}[1]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    OpenStackOperations.Wait For Routes To Propogate
-    ...    ${networks}
-    ...    ${subnet_cidrs}
-    ${prefix_net0} =    Replace String    ${VNI6_SUBNET_CIDRS}[0]    ::/64    (:[a-f0-9]{,4}){,4}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=true
-    ...    vm_list=${VNI6_NET_0_VMS}
-    ...    network=${VNI6_NETWORKS}[0]
-    ...    subnet=${prefix_net0}
-    ${prefix_net1} =    Replace String    ${VNI6_SUBNET_CIDRS}[1]    ::/64    (:[a-f0-9]{,4}){,4}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=true
-    ...    vm_list=${VNI6_NET_1_VMS}
-    ...    network=${VNI6_NETWORKS}[1]
-    ...    subnet=${prefix_net1}
-    ${VM_IP_NET0} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=false
-    ...    vm_list=${VNI6_NET_0_VMS}
-    ...    network=${VNI6_NETWORKS}[0]
-    ...    subnet=${prefix_net0}
-    ${VM_IP_NET1} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=false
-    ...    vm_list=${VNI6_NET_1_VMS}
-    ...    network=${VNI6_NETWORKS}[1]
-    ...    subnet=${prefix_net1}
-    ${status}    ${message} =    Run Keyword And Ignore Error    BuiltIn.Should Not Contain    ${VM_IP_NET0}    None
-    IF    '${status}' == 'FAIL'
-        OpenStack CLI    openstack console log show ${VNI6_NET_0_VMS}[0]    30s
-    END
-    ${status}    ${message} =    Run Keyword And Ignore Error    BuiltIn.Should Not Contain    ${VM_IP_NET1}    None
-    IF    '${status}' == 'FAIL'
-        OpenStack CLI    openstack console log show ${VNI6_NET_1_VMS}[0]    30s
-    END
-    OpenStackOperations.Copy DHCP Files From Control Node
-    BuiltIn.Set Suite Variable    ${VM_IP_NET0}
-    BuiltIn.Set Suite Variable    ${VM_IP_NET1}
-    BuiltIn.Should Not Contain    ${VM_IP_NET0}    None
-    BuiltIn.Should Not Contain    ${VM_IP_NET1}    None
-    OpenStackOperations.Show Debugs    @{VNI6_NET_0_VMS}    @{VNI6_NET_1_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Suite Teardown
-    IF    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    RETURN
-    OpenStackOperations.OpenStack Suite Teardown
diff --git a/csit/suites/netvirt/vnibasedl2switching/vnibasedl2switching.robot b/csit/suites/netvirt/vnibasedl2switching/vnibasedl2switching.robot
deleted file mode 100644 (file)
index 2251cdd..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-*** Settings ***
-Documentation       Test Suite for vni-based-l2-l3-nat:
-...                 This feature attempts to realize the use of VxLAN VNI
-...                 (Virtual Network Identifier) for VxLAN tenant traffic
-...                 flowing on the cloud data-network. This is applicable
-...                 to L2 switching, L3 forwarding and NATing for all VxLAN
-...                 based provider networks. In doing so, it eliminates the
-...                 presence of LPort tags, ELAN tags and MPLS labels on the
-...                 wire and instead, replaces them with VNIs supplied by the
-...                 tenant’s OpenStack.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Library             String
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/KarafKeywords.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../variables/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Suite Teardown
-Test Setup          VpnOperations.VNI Test Setup
-Test Teardown       VpnOperations.VNI Test Teardown
-
-
-*** Variables ***
-${VNI_SECURITY_GROUP}       vni_l2_sg
-@{VNI_NETWORKS}             vni_l2_net_1
-@{VNI_SUBNETS}              vni_l2_sub_1    vni_l2_sub_2    vni_l2_sub_3
-@{VNI_SUBNET_CIDRS}         71.1.1.0/24    72.1.1.0/24    73.1.1.0/24
-@{VNI_NET_1_PORTS}          vni_l2_net_1_port_1    vni_l2_net_1_port_2
-@{VNI_NET_1_VMS}            vni_l2_net_1_vm_1    vni_l2_net_1_vm_2
-
-
-*** Test Cases ***
-VNI Based L2 Switching
-    [Documentation]    verify VNI id for L2 Unicast frames exchanged over OVS datapaths that are on different hypervisors
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    ${port_mac1} =    OpenStackOperations.Get Port Mac    ${VNI_NET_1_PORTS}[0]
-    ${port_mac2} =    OpenStackOperations.Get Port Mac    ${VNI_NET_1_PORTS}[1]
-    ${segmentation_id} =    OpenStackOperations.Get Network Segmentation Id    ${VNI_NETWORKS}[0]
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${VNI_NETWORKS}[0]
-    ...    ${VNI_NET_1_VM_IPS}[0]
-    ...    ping -c ${DEFAULT_PING_COUNT} ${VNI_NET_1_VM_IPS}[1]
-    ${egress_tun_id}    ${before_count_egress_port1} =    OVSDB.Get Tunnel Id And Packet Count
-    ...    ${OS_CMP1_CONN_ID}
-    ...    ${ELAN_DMACTABLE}
-    ...    tun_id=${segmentation_id}
-    ...    mac=${port_mac2}
-    BuiltIn.Should Be Equal As Numbers    ${segmentation_id}    ${egress_tun_id}
-    ${egress_tun_id}    ${before_count_egress_port2} =    OVSDB.Get Tunnel Id And Packet Count
-    ...    ${OS_CMP2_CONN_ID}
-    ...    ${ELAN_DMACTABLE}
-    ...    tun_id=${segmentation_id}
-    ...    mac=${port_mac1}
-    BuiltIn.Should Be Equal As Numbers    ${segmentation_id}    ${egress_tun_id}
-    ${ingress_tun_id}    ${before_count_ingress_port1} =    OVSDB.Get Tunnel Id And Packet Count
-    ...    ${OS_CMP1_CONN_ID}
-    ...    ${INTERNAL_TUNNEL_TABLE}
-    ...    tun_id=${segmentation_id}
-    ...    mac=""
-    BuiltIn.Should Be Equal As Numbers    ${segmentation_id}    ${ingress_tun_id}
-    ${ingress_tun_id}    ${before_count_ingress_port2} =    OVSDB.Get Tunnel Id And Packet Count
-    ...    ${OS_CMP2_CONN_ID}
-    ...    ${INTERNAL_TUNNEL_TABLE}
-    ...    tun_id=${segmentation_id}
-    ...    mac=""
-    BuiltIn.Should Be Equal As Numbers    ${segmentation_id}    ${ingress_tun_id}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${VNI_NETWORKS}[0]
-    ...    ${VNI_NET_1_VM_IPS}[0]
-    ...    ping -c ${DEFAULT_PING_COUNT} ${VNI_NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${tun_id}    ${after_count_egress_port1} =    OVSDB.Get Tunnel Id And Packet Count
-    ...    ${OS_CMP1_CONN_ID}
-    ...    ${ELAN_DMACTABLE}
-    ...    tun_id=${segmentation_id}
-    ...    mac=${port_mac2}
-    ${tun_id}    ${after_count_ingress_port1} =    OVSDB.Get Tunnel Id And Packet Count
-    ...    ${OS_CMP1_CONN_ID}
-    ...    ${INTERNAL_TUNNEL_TABLE}
-    ...    tun_id=${segmentation_id}
-    ...    mac=""
-    ${tun_id}    ${after_count_egress_port2} =    OVSDB.Get Tunnel Id And Packet Count
-    ...    ${OS_CMP2_CONN_ID}
-    ...    ${ELAN_DMACTABLE}
-    ...    tun_id=${segmentation_id}
-    ...    mac=${port_mac1}
-    ${tun_id}    ${after_count_ingress_port2} =    OVSDB.Get Tunnel Id And Packet Count
-    ...    ${OS_CMP2_CONN_ID}
-    ...    ${INTERNAL_TUNNEL_TABLE}
-    ...    tun_id=${segmentation_id}
-    ...    mac=""
-    ${diff_count_egress_port1} =    BuiltIn.Evaluate    ${after_count_egress_port1} - ${before_count_egress_port1}
-    ${diff_count_ingress_port1} =    BuiltIn.Evaluate    ${after_count_ingress_port1} - ${before_count_ingress_port1}
-    ${diff_count_egress_port2} =    BuiltIn.Evaluate    ${after_count_egress_port2} - ${before_count_egress_port2}
-    ${diff_count_ingress_port2} =    BuiltIn.Evaluate    ${after_count_ingress_port2} - ${before_count_ingress_port2}
-    BuiltIn.Should Be True    ${diff_count_egress_port1} >= ${DEFAULT_PING_COUNT}
-    BuiltIn.Should Be True    ${diff_count_ingress_port1} >= ${DEFAULT_PING_COUNT}
-    BuiltIn.Should Be True    ${diff_count_egress_port2} >= ${DEFAULT_PING_COUNT}
-    BuiltIn.Should Be True    ${diff_count_ingress_port2} >= ${DEFAULT_PING_COUNT}
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Create Basic setup for the feature. Creates single network, subnet, two ports and two VMs.
-    IF    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    RETURN
-    VpnOperations.Basic Suite Setup
-    OpenStackOperations.Create Allow All SecurityGroup    ${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Network    ${VNI_NETWORKS}[0]
-    OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[0]    ${VNI_SUBNETS}[0]    ${VNI_SUBNET_CIDRS}[0]
-    OpenStackOperations.Create Port    ${VNI_NETWORKS}[0]    ${VNI_NET_1_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${VNI_NETWORKS}[0]    ${VNI_NET_1_PORTS}[1]    sg=${VNI_SECURITY_GROUP}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${PORT_URL}
-    ...    ${VNI_NET_1_PORTS}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI_NET_1_PORTS}[0]
-    ...    ${VNI_NET_1_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI_NET_1_PORTS}[1]
-    ...    ${VNI_NET_1_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${VNI_SECURITY_GROUP}
-    @{VNI_NET_1_VM_IPS}    ${vni_net_1_dhcp_ip} =    OpenStackOperations.Get VM IPs    @{VNI_NET_1_VMS}
-    BuiltIn.Set Suite Variable    @{VNI_NET_1_VM_IPS}
-    BuiltIn.Should Not Contain    ${VNI_NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${vni_net_1_dhcp_ip}    None
-    OpenStackOperations.Show Debugs    @{VNI_NET_1_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Suite Teardown
-    IF    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    RETURN
-    OpenStackOperations.OpenStack Suite Teardown
diff --git a/csit/suites/netvirt/vnibasedl3forwarding/vnibasedl3forwarding.robot b/csit/suites/netvirt/vnibasedl3forwarding/vnibasedl3forwarding.robot
deleted file mode 100644 (file)
index 498377f..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-*** Settings ***
-Documentation       Test Suite for vni-based-l2-l3-nat:
-...                 This feature attempts to realize the use of VxLAN VNI
-...                 (Virtual Network Identifier) for VxLAN tenant traffic
-...                 flowing on the cloud data-network. This is applicable
-...                 to L2 switching, L3 forwarding and NATing for all VxLAN
-...                 based provider networks. In doing so, it eliminates the
-...                 presence of LPort tags, ELAN tags and MPLS labels on the
-...                 wire and instead, replaces them with VNIs supplied by the
-...                 tenant’s OpenStack.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Library             String
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/KarafKeywords.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../variables/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Suite Teardown
-Test Setup          VpnOperations.VNI Test Setup
-Test Teardown       VpnOperations.VNI Test Teardown
-
-
-*** Variables ***
-${EGRESS}                   Egress
-${INGRESS}                  Ingress
-${IP}                       ipv4
-${VNI_SECURITY_GROUP}       vni_sg
-@{VNI_NETWORKS}
-...                         vni_l3_net_0
-...                         vni_l3_net_1
-...                         vni_l3_net_2
-...                         vni_l3_net_3
-...                         vni_l3_net_4
-...                         vni_l3_net_5
-@{VNI_SUBNETS}
-...                         vni_l3_sub_0
-...                         vni_l3_sub_1
-...                         vni_l3_sub_2
-...                         vni_l3_sub_3
-...                         vni_l3_sub_4
-...                         vni_l3_sub_5
-@{VNI_SUBNET_CIDRS}         61.1.1.0/24    62.1.1.0/24    63.1.1.0/24    64.1.1.0/24    65.1.1.0/24    66.1.1.0/24
-@{VNI_NET_0_PORTS}          vni_l3_net_0_port_1    vni_l3_net_0_port_2
-@{VNI_NET_1_PORTS}          vni_l3_net_1_port_1    vni_l3_net_1_port_2
-@{VNI_NET_2_PORTS}          vni_l3_net_2_port_1    vni_l3_net_2_port_2
-@{VNI_NET_3_PORTS}          vni_l3_net_3_port_1    vni_l3_net_3_port_2
-@{VNI_NET_4_PORTS}          vni_l3_net_4_port_1    vni_l3_net_4_port_2
-@{VNI_NET_5_PORTS}          vni_l3_net_5_port_1    vni_l3_net_5_port_2
-@{VNI_NET_0_VMS}            vni_l3_net_0_vm
-@{VNI_NET_1_VMS}            vni_l3_net_1_vm
-@{VNI_NET_2_VMS}            vni_l3_net_2_vm
-@{VNI_NET_3_VMS}            vni_l3_net_3_vm
-@{VNI_NET_4_VMS}            vni_l3_net_4_vm
-@{VNI_NET_5_VMS}            vni_l3_net_5_vm
-@{VNI_ROUTER}               vni_l3_router1    vni_l3_router2
-@{VNI_BGPVPN}               vni_l3_bgpvpn
-@{VNI_RDS}                  ["2200:2"]    ["2300:2"]    ["2400:2"]    ["2500:2"]
-@{VNI_VPN_NAMES}            vni_l3_vpn_1    vni_l3_vpn_2    vni_l3_vpn_3    vni_l3_vpn_4
-@{VNI_VPN_INSTANCE_IDS}
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261441
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261442
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261443
-...                         4ae8cd92-48ca-49b5-94e1-b2921a261444
-
-
-*** Test Cases ***
-VNI Based L3 Forwarding
-    [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    Wait Until Keyword Succeeds
-    ...    60s
-    ...    5s
-    ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
-    ...    ${VNI_NET_0_PORTS}[0]
-    ...    ${VNI_NET_1_PORTS}[0]
-    ...    ${VNI_NETWORKS}[0]
-    ...    ${VNI_NETWORKS}[1]
-    ...    ${NET_0_VM_IPS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${IP}
-
-VNI Based L3 Forwarding With BGPVPN Router Association
-    [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
-    ...    With Router associated to a BGPVPN.
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    ${net_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[0]
-    ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VNI_VPN_INSTANCE_IDS}[0]
-    ...    name=${VNI_VPN_NAMES}[0]
-    ...    rd=${VNI_RDS}[0]
-    ...    exportrt=${VNI_RDS}[0]
-    ...    importrt=${VNI_RDS}[0]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${VNI_VPN_INSTANCE_IDS}[0]
-    ${router_id} =    OpenStackOperations.Get Router Id    ${VNI_ROUTER}[0]
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    5s
-    ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
-    ...    ${VNI_NET_0_PORTS}[0]
-    ...    ${VNI_NET_1_PORTS}[0]
-    ...    ${VNI_NETWORKS}[0]
-    ...    ${VNI_NETWORKS}[1]
-    ...    ${NET_0_VM_IPS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${IP}
-
-VNI Based L3 Forwarding With BGPVPN Network Association
-    [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
-    ...    With Networks associated to a BGPVPN.
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    OpenStackOperations.Create Network    ${VNI_NETWORKS}[2]
-    OpenStackOperations.Create Network    ${VNI_NETWORKS}[3]
-    OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[2]    ${VNI_SUBNETS}[2]    ${VNI_SUBNET_CIDRS}[2]
-    OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[3]    ${VNI_SUBNETS}[3]    ${VNI_SUBNET_CIDRS}[3]
-    OpenStackOperations.Create Port    ${VNI_NETWORKS}[2]    ${VNI_NET_2_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${VNI_NETWORKS}[3]    ${VNI_NET_3_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
-    ${net_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[2]
-    ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
-    BuiltIn.Log    ${VNI_RDS}[1]
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
-    ...    name=${VNI_VPN_NAMES}[1]
-    ...    rd=${VNI_RDS}[1]
-    ...    exportrt=${VNI_RDS}[1]
-    ...    importrt=${VNI_RDS}[1]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
-    BuiltIn.Should Contain    ${resp}    ${VNI_VPN_INSTANCE_IDS}[1]
-    ${network2_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[2]
-    ${network3_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[3]
-    VpnOperations.Associate L3VPN To Network    networkid=${network2_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
-    BuiltIn.Should Contain    ${resp}    ${network2_id}
-    VpnOperations.Associate L3VPN To Network    networkid=${network3_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
-    BuiltIn.Should Contain    ${resp}    ${network3_id}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI_NET_2_PORTS}[0]
-    ...    ${VNI_NET_2_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI_NET_3_PORTS}[0]
-    ...    ${VNI_NET_3_VMS}[0]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${VNI_SECURITY_GROUP}
-    @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_2_VMS}
-    @{NET_3_VM_IPS}    ${NET_3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_3_VMS}
-    BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_3_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_3_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_3_DHCP_IP}    None
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    5s
-    ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
-    ...    ${VNI_NET_2_PORTS}[0]
-    ...    ${VNI_NET_3_PORTS}[0]
-    ...    ${VNI_NETWORKS}[2]
-    ...    ${VNI_NETWORKS}[3]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ${NET_3_VM_IPS}[0]
-    ...    ${IP}
-
-VNI Based L3 Forwarding With BGPVPN With Irt Ert
-    [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
-    ...    With two Networks associated to two BGPVPN.
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    OpenStackOperations.Create Network    ${VNI_NETWORKS}[4]
-    OpenStackOperations.Create Network    ${VNI_NETWORKS}[5]
-    OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[4]    ${VNI_SUBNETS}[4]    ${VNI_SUBNET_CIDRS}[4]
-    OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[5]    ${VNI_SUBNETS}[5]    ${VNI_SUBNET_CIDRS}[5]
-    OpenStackOperations.Create Port    ${VNI_NETWORKS}[4]    ${VNI_NET_4_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${VNI_NETWORKS}[5]    ${VNI_NET_5_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
-    ${net_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[4]
-    ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
-    BuiltIn.Log    ${VNI_RDS}[2]
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VNI_VPN_INSTANCE_IDS}[2]
-    ...    name=${VNI_VPN_NAMES}[2]
-    ...    rd=${VNI_RDS}[2]
-    ...    exportrt=${VNI_RDS}[2]
-    ...    importrt=${VNI_RDS}[3]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[2]
-    BuiltIn.Should Contain    ${resp}    ${VNI_VPN_INSTANCE_IDS}[2]
-    ${network4_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[4]
-    VpnOperations.Associate L3VPN To Network    networkid=${network4_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[2]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[2]
-    BuiltIn.Should Contain    ${resp}    ${network4_id}
-    BuiltIn.Log    ${VNI_RDS}[3]
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VNI_VPN_INSTANCE_IDS}[3]
-    ...    name=${VNI_VPN_NAMES}[3]
-    ...    rd=${VNI_RDS}[3]
-    ...    exportrt=${VNI_RDS}[3]
-    ...    importrt=${VNI_RDS}[2]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[3]
-    BuiltIn.Should Contain    ${resp}    ${VNI_VPN_INSTANCE_IDS}[3]
-    ${network5_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[5]
-    VpnOperations.Associate L3VPN To Network    networkid=${network5_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[3]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[3]
-    BuiltIn.Should Contain    ${resp}    ${network5_id}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI_NET_4_PORTS}[0]
-    ...    ${VNI_NET_4_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI_NET_5_PORTS}[0]
-    ...    ${VNI_NET_5_VMS}[0]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${VNI_SECURITY_GROUP}
-    @{NET_4_VM_IPS}    ${NET_4_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_4_VMS}
-    @{NET_5_VM_IPS}    ${NET_5_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_5_VMS}
-    BuiltIn.Set Suite Variable    @{NET_4_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_5_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_4_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_5_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_4_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_5_DHCP_IP}    None
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    5s
-    ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
-    ...    ${VNI_NET_4_PORTS}[0]
-    ...    ${VNI_NET_5_PORTS}[0]
-    ...    ${VNI_NETWORKS}[4]
-    ...    ${VNI_NETWORKS}[5]
-    ...    ${NET_4_VM_IPS}[0]
-    ...    ${NET_5_VM_IPS}[0]
-    ...    ${IP}
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Create Basic setup for the feature. Creates single network, subnet, two ports and two VMs.
-    ...    Create Two VMs for TC1 : (VM1, N1, Compute1) and (VM2, N2, Compute2) and R1
-    IF    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    RETURN
-    VpnOperations.Basic Suite Setup
-    OpenStackOperations.Create Allow All SecurityGroup    ${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Network    ${VNI_NETWORKS}[0]
-    OpenStackOperations.Create Network    ${VNI_NETWORKS}[1]
-    OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[0]    ${VNI_SUBNETS}[0]    ${VNI_SUBNET_CIDRS}[0]
-    OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[1]    ${VNI_SUBNETS}[1]    ${VNI_SUBNET_CIDRS}[1]
-    OpenStackOperations.Create Port    ${VNI_NETWORKS}[0]    ${VNI_NET_0_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Port    ${VNI_NETWORKS}[1]    ${VNI_NET_1_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Router    ${VNI_ROUTER}[0]
-    OpenStackOperations.Add Router Interface    ${VNI_ROUTER}[0]    ${VNI_SUBNETS}[0]
-    OpenStackOperations.Add Router Interface    ${VNI_ROUTER}[0]    ${VNI_SUBNETS}[1]
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${VNI_ROUTER}[0]
-    ${GWMAC_ADDRS}    ${GWIP_ADDRS} =    VpnOperations.Get Gateway MAC And IP Address    ${VNI_ROUTER}[0]
-    BuiltIn.Set Suite Variable    ${GWMAC_ADDRS}
-    BuiltIn.Set Suite Variable    ${GWIP_ADDRS}
-    ${router_list} =    BuiltIn.Create List    ${VNI_ROUTER}[0]
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI_NET_0_PORTS}[0]
-    ...    ${VNI_NET_0_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${VNI_SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${VNI_NET_1_PORTS}[0]
-    ...    ${VNI_NET_1_VMS}[0]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${VNI_SECURITY_GROUP}
-    @{NET_0_VM_IPS}    ${NET_0_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_0_VMS}
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_1_VMS}
-    BuiltIn.Set Suite Variable    @{NET_0_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_0_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_0_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
-    OpenStackOperations.Show Debugs    @{VNI_NET_0_VMS}    @{VNI_NET_1_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Suite Teardown
-    IF    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    RETURN
-    OpenStackOperations.OpenStack Suite Teardown
diff --git a/csit/suites/netvirt/vpnservice/arp_learning.robot b/csit/suites/netvirt/vpnservice/arp_learning.robot
deleted file mode 100644 (file)
index a089d76..0000000
+++ /dev/null
@@ -1,449 +0,0 @@
-*** Settings ***
-Documentation       Test suite for ARP Request. More test cases to be added in subsequent patches.
-
-Library             RequestsLibrary
-Library             SSHLibrary
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../variables/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${SECURITY_GROUP}       vpna_sg
-@{NETWORKS}             vpna_net_1    vpna_net_2    vpna_net_3
-@{SUBNETS}              vpna_sub_1    vpna_sub_2    vpna_sub_3
-@{SUBNET_CIDRS}         10.10.10.0/24    10.20.20.0/24    10.30.30.0/24
-@{PORTS}
-...                     vpna_net_1_port_1
-...                     vpna_net_1_port_2
-...                     vpna_net_2_port_1
-...                     vpna_net_2_port_2
-...                     vpna_net_3_port_1
-...                     vpna_net_3_port_2
-@{NET_1_VMS}            vpna_net_1_vm_1    vpna_net_1_vm_2
-@{NET_2_VMS}            vpna_net_2_vm_1    vpna_net_2_vm_2
-@{NET_3_VMS}            vpna_net_3_vm_1    vpna_net_3_vm_2
-${ROUTER}               vpna_router
-@{VPN_INSTANCE_IDS}     4ae8cd92-48ca-49b5-94e1-b2921a261111
-@{VPN_NAMES}            vpna_1
-${RD1}                  ["2200:2"]
-${RD2}                  ["2200:3"]
-${EXPORT_RT}            ["2200:2","2200:3"]
-${IMPORT_RT}            ["2200:2","2200:3"]
-${SUB_IF}               eth0:1
-@{EXTRA_NW_IP}          192.168.10.110    192.168.20.110
-${FIB_ENTRY_2}          192.168.10.110
-${RPING_MIP_IP}         sudo arping -I eth0:1 -c 5 -b -s 192.168.10.110 192.168.10.110
-${RPING_MIP_IP_2}       sudo arping -I eth0:1 -c 5 -b -s 192.168.20.110 192.168.20.110
-${RPING_EXP_STR}        broadcast
-
-
-*** Test Cases ***
-Verify Setup
-    [Documentation]    Verify that VMs received ip and ping is happening between different VMs.
-    ...    For this, we ssh to the VM using the dhcp-namespace on the controller node and verify ping
-    ...    reachability to the second VM on the same network and VMs on other network (i.e., east-west routing)
-    ${vms} =    BuiltIn.Create List    @{NET_1_VM_IPS}    @{NET_2_VM_IPS}    @{NET_3_VM_IPS}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRIES_URL}
-    ...    ${vms}
-    Verify Ping On Same Networks
-    Verify Ping On Different Networks
-
-Verify GARP Requests
-    [Documentation]    Verify that GARP request is sent to controller and controller learns this info.
-    ...    In this test-case, before we validate the GARPs, we ensure that the necessary pipeline
-    ...    flows for the VMs spawned on the networks are as expected (along with the FIB Entries
-    ...    in the ODL Datastore). For triggering GARPs, we create an alias interface (eth0:1) on
-    ...    VM1_net0, configure it with an extra_route_ip, trigger 5 GARPs from the VM for the
-    ...    extra_route_ip and ensure that ODL learns (by looking at odl-fib:fibEntries) the
-    ...    extra_route_ip info with the nexthop pointing to Compute-1 (where VM1_net0 is spawned)
-    ...    hostIP. Finally, we verify ping reachability to the extra_route_ip from other VMs on
-    ...    the network.
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    BuiltIn.Set Test Variable    ${fib_entry_1}    ${NET_1_VM_IPS}[0]
-    BuiltIn.Set Test Variable    ${fib_entry_3}    ${NET_1_VM_IPS}[1]
-    Verify Flows Are Present On All Compute Nodes
-    ${output} =    VpnOperations.Get Fib Entries    session
-    ${resp} =    BuiltIn.Should Match Regexp    ${output}    destPrefix\\":\\"${fib_entry_3}\/32".*"${OS_CMP2_IP}\\"
-    ${resp} =    BuiltIn.Should Match Regexp    ${output}    destPrefix\\":\\"${fib_entry_1}\/32".*"${OS_CMP1_IP}\\"
-    ${rx_packet1_before} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ifconfig eth0
-    ${rx_packet0_before} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ifconfig eth0
-    ${config_extra_route_ip1} =    BuiltIn.Catenate
-    ...    sudo ifconfig ${SUB_IF} ${EXTRA_NW_IP}[0] netmask 255.255.255.0 up
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ${config_extra_route_ip1}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ifconfig
-    BuiltIn.Should Contain    ${output}    ${SUB_IF}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ${RPING_MIP_IP}
-    BuiltIn.Should Contain    ${output}    broadcast
-    BuiltIn.Should Contain    ${output}    Received 0 reply
-    ${rx_packet1_after} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ifconfig eth0
-    ${rx_packet0_after} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ifconfig eth0
-    BuiltIn.Should Not Be Equal    ${rx_packet0_before}    ${rx_packet0_after}
-    BuiltIn.Should Not Be Equal    ${rx_packet1_before}    ${rx_packet1_after}
-    Verify Flows Are Present On All Compute Nodes
-    BuiltIn.Wait Until Keyword Succeeds    5s    1s    Verify Learnt IP    ${FIB_ENTRY_2}    session
-    ${output} =    VpnOperations.Get Fib Entries    session
-    ${resp} =    BuiltIn.Should Match Regexp    ${output}    destPrefix\\":\\"${fib_entry_3}\\/32".*"${OS_CMP2_IP}\\"
-    ${resp} =    BuiltIn.Should Match Regexp    ${output}    destPrefix\\":\\"${fib_entry_1}\\/32".*"${OS_CMP1_IP}\\"
-    ${resp} =    BuiltIn.Should Match Regexp    ${output}    destPrefix\\":\\"${FIB_ENTRY_2}\\/32".*"${OS_CMP2_IP}\\"
-    Verify Ping To Sub Interface    ${FIB_ENTRY_2}
-
-Verify MIP Migration
-    [Documentation]    Verify that after migration of movable ip across compute nodes, the controller updates the routes.
-    ...    Unconfigure the extra_route_ip on VM1_net0 and configure it on vm0_net0 (on Compute-0 host).
-    ...    Trigger 5 GARPs from the VM for the extra_route_ip and ensure that ODL learns/updates
-    ...    the extra_route_ip info with nexthop in the FIB entry pointing to Compute-0 hostip.
-    BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
-    ${unconfig_extra_route_ip1} =    BuiltIn.Catenate    sudo ifconfig ${SUB_IF} down
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ${unconfig_extra_route_ip1}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ifconfig
-    BuiltIn.Should Not Contain    ${output}    ${SUB_IF}
-    ${config_extra_route_ip1} =    BuiltIn.Catenate
-    ...    sudo ifconfig ${SUB_IF} ${EXTRA_NW_IP}[0] netmask 255.255.255.0 up
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${config_extra_route_ip1}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ifconfig
-    BuiltIn.Should Contain    ${output}    ${SUB_IF}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ifconfig ${SUB_IF}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${RPING_MIP_IP}
-    BuiltIn.Should Contain    ${output}    Received 0 reply
-    BuiltIn.Should Contain    ${output}    broadcast
-    BuiltIn.Wait Until Keyword Succeeds    5s    1s    Verify Learnt IP    ${FIB_ENTRY_2}    session
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${RPING_MIP_IP}
-    ${output} =    VpnOperations.Get Fib Entries    session
-    ${resp} =    BuiltIn.Should Match Regexp    ${output}    destPrefix\\":\\"${FIB_ENTRY_2}\\/32".*"${OS_CMP1_IP}\\"
-    Verify Ping To Sub Interface    ${FIB_ENTRY_2}
-    ${unconfig_extra_route_ip1} =    BuiltIn.Catenate    sudo ifconfig ${SUB_IF} down
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${unconfig_extra_route_ip1}
-
-Verify ping to subnet gateway
-    [Documentation]    Verify ping happens to subnet gateway. To be submitted in next patch
-    [Tags]    not-implemented    exclude
-    TODO
-
-If anything other than subnet ip then no reply
-    [Documentation]    If anything other than subnet ip then no reply. To be submitted in next patch
-    [Tags]    not-implemented    exclude
-    TODO
-
-Validate multiple mip migration
-    [Documentation]    Validate multiple mip migration. To be submitted in next patch
-    [Tags]    not-implemented    exclude
-    TODO
-
-Same DPN MIP Migration
-    [Documentation]    Same DPN MIP Migration. To be submitted in next patch
-    [Tags]    not-implemented    exclude
-    TODO
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Suite Setup to create the necessary resources.
-    ...    Create three tenant networks with a subnet in each network and an allow-all Security Group.
-    ...    In each of the networks, create two ports (i.e., total of 6 ports, two in each network)
-    ...    Create two VMs in each network (so total of 6 VMs). VM0_net0 on Compute-0 and VM1_net0 on Compute-1.
-    ...    Create a Neutron Router and associate subnet1 and subnet2.
-    ...    Create an L3VPN instance and associate the L3VPN instance to the neutron router.
-    VpnOperations.Basic Suite Setup
-    FOR    ${network}    IN    @{NETWORKS}
-        OpenStackOperations.Create Network    ${network}
-    END
-    ${neutron_networks} =    OpenStackOperations.List Networks
-    FOR    ${network}    IN    @{NETWORKS}
-        BuiltIn.Should Contain    ${neutron_networks}    ${network}
-    END
-    ${NET_ID} =    OpenStackOperations.Get Net Id    ${NETWORKS}[0]
-    BuiltIn.Set Suite Variable    ${NET_ID}
-    FOR    ${i}    IN RANGE    0    3
-        OpenStackOperations.Create SubNet    ${NETWORKS}[${i}]    ${SUBNETS}[${i}]    ${SUBNET_CIDRS}[${i}]
-    END
-    ${neutron_subnets} =    OpenStackOperations.List Subnets
-    FOR    ${subnet}    IN    @{SUBNETS}
-        BuiltIn.Should Contain    ${neutron_subnets}    ${subnet}
-    END
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${PORTS}[0]
-    ...    sg=${SECURITY_GROUP}
-    ...    allowed_address_pairs=@{EXTRA_NW_IP}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${PORTS}[1]
-    ...    sg=${SECURITY_GROUP}
-    ...    allowed_address_pairs=@{EXTRA_NW_IP}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[1]
-    ...    ${PORTS}[2]
-    ...    sg=${SECURITY_GROUP}
-    ...    allowed_address_pairs=@{EXTRA_NW_IP}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[1]
-    ...    ${PORTS}[3]
-    ...    sg=${SECURITY_GROUP}
-    ...    allowed_address_pairs=@{EXTRA_NW_IP}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[2]
-    ...    ${PORTS}[4]
-    ...    sg=${SECURITY_GROUP}
-    ...    allowed_address_pairs=@{EXTRA_NW_IP}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[2]
-    ...    ${PORTS}[5]
-    ...    sg=${SECURITY_GROUP}
-    ...    allowed_address_pairs=@{EXTRA_NW_IP}
-    Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Check For Elements At URI
-    ...    ${CONFIG_API}/neutron:neutron/ports/
-    ...    ${PORTS}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[0]
-    ...    ${NET_1_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[1]
-    ...    ${NET_1_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[2]
-    ...    ${NET_2_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[3]
-    ...    ${NET_2_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[4]
-    ...    ${NET_3_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[5]
-    ...    ${NET_3_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
-    @{NET_3_VM_IPS}    ${NET_3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_3_VMS}
-    BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_3_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_3_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_3_DHCP_IP}    None
-    OpenStackOperations.Create Router    ${ROUTER}
-    OpenStackOperations.Add Router Interface    ${ROUTER}    ${SUBNETS}[1]
-    OpenStackOperations.Add Router Interface    ${ROUTER}    ${SUBNETS}[2]
-    ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${NET_ID}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[0]
-    ...    name=${VPN_NAMES[0]}
-    ...    rd=${RD1}
-    ...    exportrt=${EXPORT_RT}
-    ...    importrt=${IMPORT_RT}
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_IDS}[0]
-    Associate L3VPN To ROUTER
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}    @{NET_3_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Suite Teardown
-    [Documentation]    Delete the setup
-    BuiltIn.Run Keyword And Ignore Error
-    ...    VpnOperations.Dissociate L3VPN From Networks
-    ...    networkid=${NET_ID}
-    ...    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Run Keyword And Ignore Error
-    ...    VpnOperations.Dissociate VPN to Router
-    ...    routerid=${ROUTER_ID}
-    ...    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    OpenStackOperations.OpenStack Suite Teardown
-
-Associate L3VPN To ROUTER
-    VpnOperations.Associate L3VPN To Network    networkid=${NET_ID}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${NET_ID}
-    ${ROUTER_ID} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    BuiltIn.Set Suite Variable    ${ROUTER_ID}
-    VpnOperations.Associate VPN to Router    routerid=${ROUTER_ID}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${ROUTER_ID}
-
-Verify Ping On Same Networks
-    [Documentation]    Verify ping among VM of same network
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ping -c 3 ${NET_2_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ping -c 3 ${NET_1_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[1]
-    ...    ping -c 3 ${NET_2_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[2]
-    ...    ${NET_3_VM_IPS}[0]
-    ...    ping -c 3 ${NET_3_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Verify Ping On Different Networks
-    [Documentation]    Verify ping among VMs of different network
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${NET_2_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ping -c 3 ${NET_3_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ping -c 3 ${NET_2_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[1]
-    ...    ping -c 3 ${NET_3_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[2]
-    ...    ${NET_3_VM_IPS}[0]
-    ...    ping -c 3 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Verify Flows Are Present
-    [Documentation]    Verify Flows Are Present
-    ...    Verify that Flows to support L3 Connectivity (like ELAN_SMAC_TABLE, FIB_TABLE)
-    ...    and a FIB entry to reach all the VMs in the network exist in the OVS pipeline.
-    [Arguments]    ${ip}
-    ${flow_output} =    Utils.Run Command On Remote System
-    ...    ${ip}
-    ...    sudo ovs-ofctl -O OpenFlow13 dump-flows ${INTEGRATION_BRIDGE}
-    BuiltIn.Log    ${flow_output}
-    ${resp} =    BuiltIn.Should Contain    ${flow_output}    table=50
-    ${resp} =    BuiltIn.Should Contain    ${flow_output}    table=21,
-    @{vm_ips} =    BuiltIn.Create List    @{NET_1_VM_IPS}    @{NET_2_VM_IPS}    @{NET_3_VM_IPS}
-    ${resp} =    Should Match regexp    ${flow_output}    table=0.*goto_table:36
-    ${resp} =    Should Match regexp    ${flow_output}    table=0.*goto_table:17
-    FOR    ${ip}    IN    @{vm_ips}
-        ${resp} =    Should Match regexp    ${flow_output}    table=21.*nw_dst=${ip}
-    END
-
-Verify Flows Are Present On All Compute Nodes
-    [Documentation]    Verify Flows Are Present On All Compute Nodes
-    FOR    ${ip}    IN    @{OS_CMP_IPS}
-        BuiltIn.Wait Until Keyword Succeeds    10s    2s    Verify Flows Are Present    ${ip}
-    END
-
-Verify Ping To Sub Interface
-    [Documentation]    Verify ping to the sub-interface
-    [Arguments]    ${sub_interface_ip}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${sub_interface_ip}
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ping -c 3 ${sub_interface_ip}
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[2]
-    ...    ${NET_3_VM_IPS}[0]
-    ...    ping -c 3 ${sub_interface_ip}
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Verify Learnt IP
-    [Documentation]    Check that sub interface ip has been learnt after ARP request
-    [Arguments]    ${ip}    ${session}
-    ${resp} =    RequestsLibrary.Get Request
-    ...    ${session}
-    ...    /restconf/operational/odl-l3vpn:learnt-vpn-vip-to-port-data/
-    BuiltIn.Log    ${resp.text}
-    BuiltIn.Should Contain    ${resp.text}    ${ip}
-
-TODO
-    Fail    "Not implemented"
diff --git a/csit/suites/netvirt/vpnservice/vpn_basic.robot b/csit/suites/netvirt/vpnservice/vpn_basic.robot
deleted file mode 100644 (file)
index 02b08a2..0000000
+++ /dev/null
@@ -1,551 +0,0 @@
-*** Settings ***
-Documentation       Test suite to validate vpnservice 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.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Resource            ../../../libraries/CompareStream.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Tcpdump.robot
-Resource            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${SECURITY_GROUP}               vpn_sg
-@{NETWORKS}                     vpn_net_1    vpn_net_2
-@{SUBNETS}                      vpn_sub_1    vpn_sub_2
-@{SUBNET_CIDRS}                 10.1.1.0/24    20.1.1.0/24
-@{PORTS}                        vpn_net_1_port_1    vpn_net_1_port_2    vpn_net_2_port_1    vpn_net_2_port_2
-@{NET_1_VMS}                    vpn_net_1_vm_1    vpn_net_1_vm_2
-@{NET_2_VMS}                    vpn_net_2_vm_1    vpn_net_2_vm_2
-${ROUTER}                       vpn_router
-@{EXTRA_NW_IP}                  71.1.1.2    72.1.1.2
-@{EXTRA_NW_SUBNET}              71.1.1.0/24    72.1.1.0/24
-${UPDATE_NETWORK}               UpdateNetwork
-${UPDATE_SUBNET}                UpdateSubnet
-${UPDATE_PORT}                  UpdatePort
-@{VPN_INSTANCE_IDS}
-...                             4ae8cd92-48ca-49b5-94e1-b2921a261441
-...                             4ae8cd92-48ca-49b5-94e1-b2921a261442
-...                             4ae8cd92-48ca-49b5-94e1-b2921a261443
-@{VPN_NAMES}                    vpn_1    vpn_2    vpn_3
-@{RDS}                          ["2200:2"]    ["2300:2"]    ["2400:2"]
-${PORT_NEW}                     vpn_net_1_port_new
-${VM_NAME_NEW}                  vpn_net_1_vm_new
-${INVALID_VPN_INSTANCE_ID}      AAAAAAAAAA-4848-4949-9494-666666666666
-
-
-*** Test Cases ***
-Check ELAN Datapath Traffic Within The Networks
-    [Documentation]    Checks datapath within the same network with different vlans.
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 3 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ping -c 3 ${NET_2_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-
-Create Router
-    OpenStackOperations.Create Router    ${ROUTER}
-    ${router_list} =    BuiltIn.Create List    ${ROUTER}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${ROUTER_URL}
-    ...    ${router_list}
-
-Add Interfaces To Router
-    FOR    ${interface}    IN    @{SUBNETS}
-        OpenStackOperations.Add Router Interface    ${ROUTER}    ${interface}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    ${GWMAC_ADDRS}    ${GWIP_ADDRS} =    VpnOperations.Get Gateway MAC And IP Address    ${ROUTER}
-    BuiltIn.Set Suite Variable    ${GWMAC_ADDRS}
-    BuiltIn.Set Suite Variable    ${GWIP_ADDRS}
-
-Check L3_Datapath Traffic Across Networks With Router
-    @{tcpdump_conn_ids} =    OpenStackOperations.Start Packet Capture On Nodes
-    ...    tcpdump_vpn
-    ...    ${EMPTY}
-    ...    @{OS_ALL_IPS}
-    ${vm_ips} =    BuiltIn.Create List    @{NET_1_VM_IPS}    @{NET_2_VM_IPS}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${vm_ips}
-    Verify Flows Are Present For L3VPN On All Compute Nodes    ${vm_ips}
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    VpnOperations.Verify GWMAC Entry On ODL    ${GWMAC_ADDRS}
-    Verify GWMAC Flow Entry On Flow Table On All Compute Nodes
-    ${dst_ip_list} =    BuiltIn.Create List    ${NET_1_VM_IPS}[1]    @{NET_2_VM_IPS}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${dst_ip_list}
-    ${dst_ip_list} =    BuiltIn.Create List    ${NET_2_VM_IPS}[1]    @{NET_1_VM_IPS}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_VM_IPS}[0]    ${dst_ip_list}
-    [Teardown]    VpnOperations.Test Teardown With Tcpdump Stop    ${tcpdump_conn_ids}
-
-Add Multiple Extra Routes And Check Datapath Before L3VPN Creation
-    ${CONFIG_EXTRA_ROUTE_IP1} =    BuiltIn.Catenate    sudo ifconfig eth0:1 ${EXTRA_NW_IP}[0] netmask 255.255.255.0 up
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${CONFIG_EXTRA_ROUTE_IP1}
-    ${CONFIG_EXTRA_ROUTE_IP2} =    BuiltIn.Catenate    sudo ifconfig eth0:2 ${EXTRA_NW_IP}[1] netmask 255.255.255.0 up
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${CONFIG_EXTRA_ROUTE_IP2}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ifconfig
-    ${ext_rt1} =    BuiltIn.Set Variable    destination=${EXTRA_NW_SUBNET}[0],gateway=${NET_1_VM_IPS}[0]
-    ${ext_rt2} =    BuiltIn.Set Variable    destination=${EXTRA_NW_SUBNET}[1],gateway=${NET_1_VM_IPS}[0]
-    ${cmd} =    BuiltIn.Catenate    ${RT_OPTIONS}    ${ext_rt1}    ${RT_OPTIONS}    ${ext_rt2}
-    OpenStackOperations.Update Router    ${ROUTER}    ${cmd}
-    OpenStackOperations.Show Router    ${ROUTER}
-    ${vm_ips} =    BuiltIn.Create List    @{EXTRA_NW_SUBNET}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${vm_ips}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ping -c 3 ${EXTRA_NW_IP}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[1]
-    ...    ping -c 3 ${EXTRA_NW_IP}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ping -c 3 ${EXTRA_NW_IP}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-
-Delete Extra Route
-    OpenStackOperations.Update Router    ${ROUTER}    ${RT_CLEAR}
-    OpenStackOperations.Show Router    ${ROUTER}
-
-Delete And Recreate Extra Route
-    [Documentation]    Recreate multiple extra route and check data path before L3VPN creation
-    ${CONFIG_EXTRA_ROUTE_IP1} =    BuiltIn.Catenate    sudo ifconfig eth0:1 ${EXTRA_NW_IP}[0] netmask 255.255.255.0 up
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${CONFIG_EXTRA_ROUTE_IP1}
-    ${ext_rt1} =    BuiltIn.Set Variable    destination=${EXTRA_NW_SUBNET}[0],gateway=${NET_1_VM_IPS}[0]
-    ${cmd} =    BuiltIn.Catenate    ${RT_OPTIONS}    ${ext_rt1}
-    OpenStackOperations.Update Router    ${ROUTER}    ${cmd}
-    OpenStackOperations.Show Router    ${ROUTER}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[1]
-    ...    ping -c 3 ${EXTRA_NW_IP}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    # clear off extra-routes before the next set of tests
-    [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Update Router    ${ROUTER}    ${RT_CLEAR}
-    ...    AND    OpenStackOperations.Show Router    ${ROUTER}
-    ...    AND    OpenStackOperations.Get Test Teardown Debugs
-
-Create L3VPN
-    ${net_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[0]
-    ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
-    BuiltIn.Log    ${RDS}[0]
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[0]
-    ...    name=${VPN_NAMES}[0]
-    ...    rd=${RDS}[0]
-    ...    exportrt=${RDS}[0]
-    ...    importrt=${RDS}[0]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_IDS}[0]
-
-Associate L3VPN To Routers
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-
-Verify L3VPN Datapath With Router Association
-    ${vm_ips} =    BuiltIn.Create List    @{NET_1_VM_IPS}    @{NET_2_VM_IPS}
-    CompareStream.Run_Keyword_If_Less_Than_Magnesium
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${VPN_IFACES_URL}
-    ...    ${vm_ips}
-    CompareStream.Run_Keyword_If_At_Least_Magnesium
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${VPN_INST_IFACES_URL}
-    ...    ${vm_ips}
-    ${RD} =    Strip String    ${RDS}[0]    characters="[]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    Utils.Check For Elements At URI
-    ...    ${CONFIG_API}/odl-fib:fibEntries/vrfTables/${RD}/
-    ...    ${vm_ips}
-    Verify Flows Are Present For L3VPN On All Compute Nodes    ${vm_ips}
-    BuiltIn.Wait Until Keyword Succeeds    30s    15s    VpnOperations.Verify GWMAC Entry On ODL    ${GWMAC_ADDRS}
-    Verify GWMAC Flow Entry On Flow Table On All Compute Nodes
-    BuiltIn.Log    Check datapath from network1 to network2
-    ${dst_ip_list} =    BuiltIn.Create List    ${NET_1_VM_IPS}[1]    @{NET_2_VM_IPS}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${dst_ip_list}
-    BuiltIn.Log    Check datapath from network2 to network1
-    ${dst_ip_list} =    BuiltIn.Create List    ${NET_2_VM_IPS}[1]    @{NET_1_VM_IPS}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_VM_IPS}[0]    ${dst_ip_list}
-
-Delete Router Failure When Associated With L3VPN
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    ${rc}    ${output} =    Run And Return Rc And Output    openstack router delete ${ROUTER}
-    BuiltIn.Should Match Regexp    ${output}    Failed to delete router.*${ROUTER}
-    BuiltIn.Should Be True    '${rc}' == '1'
-    ${router_output} =    OpenStackOperations.List Routers
-    BuiltIn.Should Contain    ${router_output}    ${ROUTER}
-    @{router_list} =    BuiltIn.Create List    ${ROUTER}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${ROUTER_URL}
-    ...    ${router_list}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-    Verify GWMAC Flow Entry On Flow Table On All Compute Nodes
-
-Verify Remove Interface From Router When Associated With L3VPN
-    OpenStackOperations.Remove Interface    ${ROUTER}    ${SUBNETS}[0]
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${NET_1_VM_IPS}
-    OpenStackOperations.Test Operations From Vm Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ${NET_2_VM_IPS}
-    ...    ping_should_succeed=False
-
-Verify L3VPN Datapath With Router Dissociation When Interfaces are Added To Router
-    OpenStackOperations.Add Router Interface    ${ROUTER}    ${SUBNETS}[0]
-    ${vm_ips} =    BuiltIn.Create List    @{NET_1_VM_IPS}    @{NET_2_VM_IPS}
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Dissociate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Not Contain    ${resp}    ${router_id}
-    Verify Flows Are Present For L3VPN On All Compute Nodes    ${vm_ips}
-    ${dst_ip_list} =    BuiltIn.Create List    ${NET_1_VM_IPS}[1]    @{NET_2_VM_IPS}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${dst_ip_list}
-    BuiltIn.Log    Check datapath from network2 to network1
-    ${dst_ip_list} =    BuiltIn.Create List    ${NET_2_VM_IPS}[1]    @{NET_1_VM_IPS}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    10s
-    ...    OpenStackOperations.Test Operations From Vm Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPS}[0]
-    ...    ${dst_ip_list}
-
-Remove Router Interfaces And Check L3_Datapath Traffic Across Networks
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    FOR    ${INTERFACE}    IN    @{SUBNETS}
-        OpenStackOperations.Remove Interface    ${ROUTER}    ${INTERFACE}
-        OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPS}[0]    ${NET_1_VM_IPS}
-        OpenStackOperations.Test Operations From Vm Instance
-        ...    ${NETWORKS}[0]
-        ...    ${NET_1_VM_IPS}[0]
-        ...    ${NET_2_VM_IPS}
-        ...    ping_should_succeed=False
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    FOR    ${INTERFACE}    IN    @{SUBNETS}
-        ${subnet_id} =    OpenStackOperations.Get Subnet Id    ${INTERFACE}
-        BuiltIn.Should Not Contain    ${interface_output}    ${subnet_id}
-    END
-
-Delete Router
-    Delete Router    ${ROUTER}
-    ${router_output} =    OpenStackOperations.List Routers
-    BuiltIn.Should Not Contain    ${router_output}    ${ROUTER}
-    @{router_list} =    BuiltIn.Create List    ${ROUTER}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements Not At URI
-    ...    ${ROUTER_URL}
-    ...    ${router_list}
-    ...    check_for_null=True
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Not Contain    ${resp}    ${ROUTER}
-    Verify GWMAC Flow Entry Removed From Flow Table On All Compute Nodes
-
-Delete Router With NonExistentRouter Name
-    [Documentation]    Delete router with nonExistentRouter name
-    ${result} =    Process.Run Process    openstack router delete nonExistentRouter    shell=True
-    BuiltIn.Log    ${result.stdout}
-    BuiltIn.Log    ${result.stderr}
-    BuiltIn.Should Be True    '${result.rc}' == '1'
-    BuiltIn.Should Match Regexp
-    ...    ${result.stderr}
-    ...    Failed to delete router with name or ID 'nonExistentRouter': No Router found for nonExistentRouter
-
-Associate Networks To L3VPN
-    [Documentation]    Associates L3VPN to networks and verify
-    ${network1_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[0]
-    ${network2_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[1]
-    VpnOperations.Associate L3VPN To Network    networkid=${network1_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${network1_id}
-    VpnOperations.Associate L3VPN To Network    networkid=${network2_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${network2_id}
-
-Check Datapath Traffic Across Networks With L3VPN
-    [Documentation]    Datapath Test Across the networks with VPN.
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 20 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 20 ${NET_2_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 20 ${NET_2_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-
-Verification of route update after VM port removed and re added to VPN
-    [Documentation]    Verify route update after VM port removed and re added to VPN
-    OpenStackOperations.Delete Port    ${PORTS}[0]
-    ${net_list} =    BuiltIn.Create List    ${NET_1_VM_IPS[0]}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements Not At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${net_list}
-    OpenStackOperations.Delete Vm Instance    ${NET_1_VMS}[0]
-    OpenStackOperations.Create Port    ${NETWORKS}[0]    ${PORTS}[0]    sg=${SECURITY_GROUP}
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${PORTS}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[0]
-    ...    ${NET_1_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Poll VM Is ACTIVE    ${NET_1_VMS}[0]
-    ${status}    ${ips_and_console_log} =    BuiltIn.Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    360s
-    ...    15s
-    ...    OpenStackOperations.Get VM IP
-    ...    true
-    ...    ${NET_1_VMS}[0]
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${NET_1_VM_IPS}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 10 ${NET_1_VM_IPS}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPS}[0]
-    ...    ping -c 10 ${NET_2_VM_IPS}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-
-Verification of route update after reconfiguring vpn by adding new ports
-    [Documentation]    Verify route update after reconfiguring vpn by creating new VM with new port on openvswitch1
-    OpenStackOperations.Create Port    ${NETWORKS}[0]    ${PORT_NEW}    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORT_NEW}
-    ...    ${VM_NAME_NEW}
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Poll VM Is ACTIVE    ${VM_NAME_NEW}
-    ${status}    ${ips_and_console_log} =    BuiltIn.Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    360s
-    ...    15s
-    ...    OpenStackOperations.Get VM IP
-    ...    true
-    ...    ${VM_NAME_NEW}
-    ${output} =    VpnOperations.Get Fib Entries    session
-    BuiltIn.Should Contain    ${output}    ${ips_and_console_log[0]}
-    OpenStackOperations.Delete Vm Instance    ${VM_NAME_NEW}
-    OpenStackOperations.Delete Port    ${PORT_NEW}
-
-Dissociate L3VPN From Networks
-    [Documentation]    Dissociate L3VPN from networks
-    ${network1_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[0]
-    ${network2_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[1]
-    VpnOperations.Dissociate L3VPN From Networks    networkid=${network1_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Not Contain    ${resp}    ${network1_id}
-    VpnOperations.Dissociate L3VPN From Networks    networkid=${network2_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Not Contain    ${resp}    ${network2_id}
-
-Delete Unknown L3VPN
-    [Documentation]    Verification of a failure response with deletion of an unknown L3VPN
-    ${status}    ${message} =    BuiltIn.Run Keyword And Ignore Error
-    ...    VpnOperations.VPN Delete L3VPN
-    ...    vpnid=${INVALID_VPN_INSTANCE_ID}
-    BuiltIn.Should Contain    ${status}    FAIL
-
-Delete L3VPN
-    [Documentation]    Delete L3VPN
-    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-
-Create Multiple L3VPN
-    [Documentation]    Creates three L3VPNs and then verify the same
-    ${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_IDS}[0]
-    ...    name=${VPN_NAMES}[0]
-    ...    rd=${RDS}[0]
-    ...    exportrt=${RDS}[0]
-    ...    importrt=${RDS}[0]
-    ...    tenantid=${tenant_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[1]
-    ...    name=${VPN_NAMES}[1]
-    ...    rd=${RDS}[1]
-    ...    exportrt=${RDS}[1]
-    ...    importrt=${RDS}[1]
-    ...    tenantid=${tenant_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[2]
-    ...    name=${VPN_NAMES}[2]
-    ...    rd=${RDS}[2]
-    ...    exportrt=${RDS}[2]
-    ...    importrt=${RDS}[2]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[1]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_IDS}[1]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[2]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_IDS}[2]
-
-
-*** Keywords ***
-Suite Setup
-    VpnOperations.Basic Suite Setup
-    OpenStackOperations.Create Network    ${NETWORKS}[0]
-    OpenStackOperations.Create Network    ${NETWORKS}[1]
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
-    OpenStackOperations.Update Network    ${NETWORKS}[0]    additional_args=--description ${UPDATE_NETWORK}
-    ${output} =    OpenStackOperations.Show Network    ${NETWORKS}[0]
-    BuiltIn.Should Contain    ${output}    ${UPDATE_NETWORK}
-    OpenStackOperations.Create SubNet    ${NETWORKS}[0]    ${SUBNETS}[0]    ${SUBNET_CIDRS}[0]
-    OpenStackOperations.Create SubNet    ${NETWORKS}[1]    ${SUBNETS}[1]    ${SUBNET_CIDRS}[1]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${SUBNETS}
-    OpenStackOperations.Update SubNet    ${SUBNETS}[0]    additional_args=--description ${UPDATE_SUBNET}
-    ${output} =    OpenStackOperations.Show SubNet    ${SUBNETS}[0]
-    BuiltIn.Should Contain    ${output}    ${UPDATE_SUBNET}
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
-    ${allowed_address_pairs_args} =    BuiltIn.Set Variable
-    ...    --allowed-address ip-address=${EXTRA_NW_SUBNET}[0] --allowed-address ip-address=${EXTRA_NW_SUBNET}[1]
-    Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${PORTS}[0]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${PORTS}[1]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    Create Port
-    ...    ${NETWORKS}[1]
-    ...    ${PORTS}[2]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    Create Port
-    ...    ${NETWORKS}[1]
-    ...    ${PORTS}[3]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    Wait Until Keyword Succeeds    3s    1s    Check For Elements At URI    ${PORT_URL}    ${PORTS}
-    ${PORTS_MACADDR} =    Get Ports MacAddr    ${PORTS}
-    Set Suite Variable    ${PORTS_MACADDR}
-    Update Port    ${PORTS}[0]    additional_args=--description ${UPDATE_PORT}
-    ${output} =    Show Port    ${PORTS}[0]
-    Should Contain    ${output}    ${UPDATE_PORT}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[0]
-    ...    ${NET_1_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[1]
-    ...    ${NET_1_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[2]
-    ...    ${NET_2_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[3]
-    ...    ${NET_2_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
-    BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
-    BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
-    BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    Wait For Routes To Propogate    ${NETWORKS}    ${SUBNET_CIDRS}
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Suite Teardown
-    [Documentation]    Delete the setup
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_IDS}[1]
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_IDS}[2]
-    OpenStackOperations.OpenStack Suite Teardown
diff --git a/csit/suites/netvirt/vpnservice/vpn_basic_dualstack_one_router.robot b/csit/suites/netvirt/vpnservice/vpn_basic_dualstack_one_router.robot
deleted file mode 100644 (file)
index 5acf11d..0000000
+++ /dev/null
@@ -1,707 +0,0 @@
-*** Settings ***
-Documentation       Test suite to validate dualstack (IPv4 + IPv6) vpnservice 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.
-
-Library             Collections
-Library             OperatingSystem
-Library             RequestsLibrary
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Tcpdump.robot
-Resource            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${SECURITY_GROUP}               vpn_sg_dualstack
-@{NETWORKS}                     vpn_net_1_dualstack    vpn_net_2_dualstack
-@{SUBNETS4}                     vpn_net_ipv4_1_dualstack    vpn_net_ipv4_2_dualstack
-@{SUBNETS6}                     vpn_net_ipv6_1_dualstack    vpn_net_ipv6_2_dualstack
-@{SUBNETS4_CIDR}                30.1.1.0/24    40.1.1.0/24
-@{SUBNETS6_CIDR}                2001:db5:0:2::/64    2001:db5:0:3::/64
-${SUBNET_ADDITIONAL_ARGS}       --ip-version=6 --ipv6-address-mode=slaac --ipv6-ra-mode=slaac
-@{PORTS}
-...                             vpn_port_1_dualstack
-...                             vpn_port_2_dualstack
-...                             vpn_port_3_dualstack
-...                             vpn_port_4_dualstack
-@{NET_1_VM_INSTANCES}           vpn_net_1_vm_1_dualstack    vpn_net_1_vm_2_dualstack
-@{NET_2_VM_INSTANCES}           vpn_net_2_vm_1_dualstack    vpn_net_2_vm_2_dualstack
-@{EXTRA_NW_IPV4}                76.1.1.2    77.1.1.2
-@{EXTRA_NW_IPV6}                3001:db9:cafe:d::10    3001:db9:abcd:d::20
-@{EXTRA_NW_SUBNET_IPv4}         76.1.1.0/24    77.1.1.0/24
-@{EXTRA_NW_SUBNET_IPv6}         3001:db9:cafe:d::/64    3001:db9:abcd:d::/64
-${ROUTER}                       vpn_router_dualstack
-${UPDATE_NETWORK}               UpdateNetwork_dualstack
-${UPDATE_SUBNET}                UpdateSubnet_dualstack
-${UPDATE_PORT}                  UpdatePort_dualstack
-@{VPN_INSTANCE_ID}
-...                             1bc8cd92-48ca-49b5-94e1-b2921a261661
-...                             1bc8cd92-48ca-49b5-94e1-b2921a261662
-...                             1bc8cd92-48ca-49b5-94e1-b2921a261663
-@{VPN_NAME}                     vpn1_dualstack    vpn2_dualstack    vpn3_dualstack
-@{RDS}                          ["2506:2"]    ["2606:2"]    ["2706:2"]
-
-
-*** Test Cases ***
-Check ELAN Datapath Traffic Within The Networks
-    [Documentation]    Checks datapath within the same network with different vlans.
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPV4[0]}
-    ...    ping -I ${NET_1_VM_IPV4[0]} -c 3 ${NET_1_VM_IPV4[1]}
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPV6[0]}
-    ...    ping6 -I ${NET_1_VM_IPV6[0]} -c 3 ${NET_1_VM_IPV6[1]}
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPV4[0]}
-    ...    ping -I ${NET_2_VM_IPV4[0]} -c 3 ${NET_2_VM_IPV4[1]}
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPV6[0]}
-    ...    ping6 -I ${NET_2_VM_IPV6[0]} -c 3 ${NET_2_VM_IPV6[1]}
-    BuiltIn.Should Contain    ${output}    64 bytes
-
-Create Router
-    [Documentation]    Create Router.
-    OpenStackOperations.Create Router    ${ROUTER}
-    @{ROUTER_LIST} =    BuiltIn.Create List    ${ROUTER}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${ROUTER_URL}
-    ...    ${ROUTER_LIST}
-
-Add Router Ports
-    [Documentation]    Add created subnets to router.
-    FOR    ${PORT}    IN    @{SUBNETS4}
-        OpenStackOperations.Add Router Interface    ${ROUTER}    ${PORT}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    ${GW1_MAC_ADDRS}    ${GW_IPV4_ADDRS} =    VpnOperations.Get Gateway MAC And IP Address    ${ROUTER}
-    FOR    ${PORT}    IN    @{SUBNETS6}
-        OpenStackOperations.Add Router Interface    ${ROUTER}    ${PORT}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    ${GW2_MAC_ADDRS}    ${GW_IPV6_ADDRS} =    VpnOperations.Get Gateway MAC And IP Address    ${ROUTER}    ${IP6_REGEX}
-    ${GW_MAC_ADDRS} =    BuiltIn.Create List    @{GW1_MAC_ADDRS}    @{GW2_MAC_ADDRS}
-    BuiltIn.Set Suite Variable    ${GW1_MAC_ADDRS}
-    BuiltIn.Set Suite Variable    ${GW2_MAC_ADDRS}
-    BuiltIn.Set Suite Variable    ${GW_MAC_ADDRS}
-    BuiltIn.Set Suite Variable    ${GW_IPV4_ADDRS}
-    BuiltIn.Set Suite Variable    ${GW_IPV6_ADDRS}
-
-Check L3_Datapath Traffic Across Networks With Router
-    [Documentation]    L3 Datapath test across networks using previously created router.
-    BuiltIn.Log    Verification of FIB Entries and Flow
-    @{tcpdump_conn_ids} =    OpenStackOperations.Start Packet Capture On Nodes
-    ...    tcpdump_vpn_ds
-    ...    ${EMPTY}
-    ...    @{OS_ALL_IPS}
-    ${vm_instances} =    BuiltIn.Create List
-    ...    @{NET_1_VM_IPV4}
-    ...    @{NET_2_VM_IPV4}
-    ...    @{NET_1_VM_IPV6}
-    ...    @{NET_2_VM_IPV6}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${vm_instances}
-    FOR    ${VM}    IN    ${vm_instances}
-        BuiltIn.Wait Until Keyword Succeeds
-        ...    30s
-        ...    5s
-        ...    VpnOperations.Verify Flows Are Present For L3VPN
-        ...    ${OS_CMP1_IP}
-        ...    ${VM}
-    END
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    VpnOperations.Verify GWMAC Entry On ODL    ${GW_MAC_ADDRS}
-    Verify GWMAC Flow Entry On Flow Table On All Compute Nodes
-    BuiltIn.Log    L3 Datapath test across the networks using router
-    ${dst_ipv4_list1} =    BuiltIn.Create List    ${NET_1_VM_IPV4[1]}    @{NET_2_VM_IPV4}
-    Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPV4[0]}    ${dst_ipv4_list1}
-    ${dst_ipv4_list2} =    BuiltIn.Create List    ${NET_2_VM_IPV4[1]}    @{NET_1_VM_IPV4}
-    Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_VM_IPV4[0]}    ${dst_ipv4_list2}
-    ${dst_ipv6_list1} =    BuiltIn.Create List    ${NET_1_VM_IPV6[1]}    @{NET_2_VM_IPV6}
-    Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPV6[0]}    ${dst_ipv6_list1}
-    ${dst_ipv6_list2} =    BuiltIn.Create List    ${NET_2_VM_IPV6[1]}    @{NET_1_VM_IPV6}
-    Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_VM_IPV6[0]}    ${dst_ipv6_list2}
-    [Teardown]    VpnOperations.Test Teardown With Tcpdump Stop    ${tcpdump_conn_ids}
-
-Add Multiple Extra Routes And Check Datapath Before L3VPN Creation
-    [Documentation]    Add multiple extra routes and check data path before L3VPN creation.
-    BuiltIn.Log    Add extraroutes to VM
-    FOR    ${extra_ip}    IN    @{EXTRA_NW_IPV4}
-        ${cmd} =    BuiltIn.Catenate    sudo ip addr add ${extra_ip}/24 dev eth0
-        OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${NET_1_VM_IPV4}[0]    ${cmd}
-        ${output} =    OpenStackOperations.Execute Command on VM Instance
-        ...    ${NETWORKS}[0]
-        ...    ${NET_1_VM_IPV4}[0]
-        ...    ip a
-        BuiltIn.Should Contain    ${output}    ${extra_ip}/24
-    END
-    ${ext_rt1} =    BuiltIn.Set Variable    destination=${EXTRA_NW_SUBNET_IPV4}[0],gateway=${NET_1_VM_IPV4}[0]
-    ${ext_rt2} =    BuiltIn.Set Variable    destination=${EXTRA_NW_SUBNET_IPV4}[1],gateway=${NET_1_VM_IPV4}[0]
-    ${cmd} =    BuiltIn.Catenate    ${RT_OPTIONS}    ${ext_rt1}    ${RT_OPTIONS}    ${ext_rt2}
-    OpenStackOperations.Update Router    ${ROUTER}    ${cmd}
-    OpenStackOperations.Show Router    ${ROUTER}
-    FOR    ${extra_ip}    IN    @{EXTRA_NW_IPV6}
-        ${cmd} =    BuiltIn.Catenate    sudo ip -6 addr add ${extra_ip}/64 dev eth0
-        OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${NET_1_VM_IPV6}[0]    ${cmd}
-        ${output} =    OpenStackOperations.Execute Command on VM Instance
-        ...    ${NETWORKS}[0]
-        ...    ${NET_1_VM_IPV6}[0]
-        ...    ip -6 a
-        BuiltIn.Should Contain    ${output}    ${extra_ip}/64
-    END
-    ${ext_rt3} =    BuiltIn.Set Variable    destination=${EXTRA_NW_SUBNET_IPV6}[0],gateway=${NET_1_VM_IPV6}[0]
-    ${ext_rt4} =    BuiltIn.Set Variable    destination=${EXTRA_NW_SUBNET_IPV6}[1],gateway=${NET_1_VM_IPV6}[0]
-    ${cmd} =    BuiltIn.Catenate    ${RT_OPTIONS}    ${ext_rt3}    ${RT_OPTIONS}    ${ext_rt4}
-    OpenStackOperations.Update Router    ${ROUTER}    ${cmd}
-    OpenStackOperations.Show Router    ${ROUTER}
-    BuiltIn.Log    Verify FIB table
-    ${vm_ips} =    BuiltIn.Create List    @{EXTRA_NW_SUBNET_IPV4}    @{EXTRA_NW_SUBNET_IPV6}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${vm_ips}
-    FOR    ${extra_ip}    IN    @{EXTRA_NW_IPV4}
-        ${output} =    OpenStackOperations.Execute Command on VM Instance
-        ...    ${NETWORKS}[0]
-        ...    ${NET_1_VM_IPV4[1]}
-        ...    ping -c 3 ${extra_ip}
-        BuiltIn.Should Contain    ${output}    64 bytes
-        ${output} =    OpenStackOperations.Execute Command on VM Instance
-        ...    ${NETWORKS}[1]
-        ...    ${NET_2_VM_IPV4[0]}
-        ...    ping -c 3 ${extra_ip}
-        BuiltIn.Should Contain    ${output}    64 bytes
-        ${output} =    OpenStackOperations.Execute Command on VM Instance
-        ...    ${NETWORKS}[1]
-        ...    ${NET_2_VM_IPV4[1]}
-        ...    ping -c 3 ${extra_ip}
-        BuiltIn.Should Contain    ${output}    64 bytes
-    END
-    FOR    ${extra_ip}    IN    @{EXTRA_NW_IPV6}
-        ${output} =    OpenStackOperations.Execute Command on VM Instance
-        ...    ${NETWORKS}[0]
-        ...    ${NET_1_VM_IPV6[1]}
-        ...    ping6 -c 3 ${extra_ip}
-        BuiltIn.Should Contain    ${output}    64 bytes
-        ${output} =    OpenStackOperations.Execute Command on VM Instance
-        ...    ${NETWORKS}[1]
-        ...    ${NET_2_VM_IPV6[0]}
-        ...    ping6 -c 3 ${extra_ip}
-        BuiltIn.Should Contain    ${output}    64 bytes
-        ${output} =    OpenStackOperations.Execute Command on VM Instance
-        ...    ${NETWORKS}[1]
-        ...    ${NET_2_VM_IPV6[1]}
-        ...    ping6 -c 3 ${extra_ip}
-        BuiltIn.Should Contain    ${output}    64 bytes
-    END
-
-Delete And Recreate Extra Route
-    [Documentation]    Delete IPv4 and IPv6 extra routes and recreate it.
-    ...    Then check data path before L3VPN creation.
-    BuiltIn.Log    Delete all extra routes
-    OpenStackOperations.Update Router    ${ROUTER}    ${RT_CLEAR}
-    OpenStackOperations.Show Router    ${ROUTER}
-    ${cmd} =    BuiltIn.Catenate    sudo ip addr add ${EXTRA_NW_IPV4}[0]/24 dev eth0
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${NET_1_VM_IPV4}[0]    ${cmd}
-    ${ext_rt_ipv4} =    BuiltIn.Set Variable    destination=${EXTRA_NW_SUBNET_IPV4}[0],gateway=${NET_1_VM_IPV4}[0]
-    ${cmd} =    BuiltIn.Catenate    ${RT_OPTIONS}    ${ext_rt_ipv4}
-    OpenStackOperations.Update Router    ${ROUTER}    ${cmd}
-    OpenStackOperations.Show Router    ${ROUTER}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPV4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPV4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${cmd} =    BuiltIn.Catenate    sudo ip -6 addr add ${EXTRA_NW_IPV6}[0]/64 dev eth0
-    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${NET_1_VM_IPV6}[0]    ${cmd}
-    ${ext_rt2} =    BuiltIn.Set Variable    destination=${EXTRA_NW_SUBNET_IPV6}[0],gateway=${NET_1_VM_IPV6}[0]
-    ${cmd} =    BuiltIn.Catenate    ${RT_OPTIONS}    ${ext_rt2}
-    OpenStackOperations.Update Router    ${ROUTER}    ${cmd}
-    OpenStackOperations.Show Router    ${ROUTER}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPV6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPV6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    # clear off extra-routes before the next set of tests
-    OpenStackOperations.Update Router    ${ROUTER}    ${RT_CLEAR}
-    [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Update Router    ${ROUTER}    ${RT_CLEAR}
-    ...    AND    OpenStackOperations.Show Router    ${ROUTER}
-    ...    AND    OpenStackOperations.Get Test Teardown Debugs
-
-Create L3VPN
-    ${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[0]}
-    ...    name=${VPN_NAME[0]}
-    ...    rd=${RDS}[0]
-    ...    exportrt=${RDS}[0]
-    ...    importrt=${RDS}[0]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_ID[0]}
-
-Associate L3VPN To Routers
-    [Documentation]    Associating router to L3VPN.
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID[0]}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-
-Verify L3VPN Datapath With Router Association
-    [Documentation]    Datapath test across networks using L3VPN associated with router.
-    BuiltIn.Log    Verify VPN interfaces, FIB entries and Flow table
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    5s
-    ...    Utils.Check For Elements At URI
-    ...    ${VPN_IFACES_URL}
-    ...    ${VM_IPS}
-    ${RD} =    Strip String    ${RDS[0]}    characters="[]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    Utils.Check For Elements At URI
-    ...    ${CONFIG_API}/odl-fib:fibEntries/vrfTables/${RD}/
-    ...    ${VM_IPS}
-    Verify Flows Are Present For L3VPN On All Compute Nodes    ${VM_IPS}
-    BuiltIn.Wait Until Keyword Succeeds    30s    5s    VpnOperations.Verify GWMAC Entry On ODL    ${GW_MAC_ADDRS}
-    Verify GWMAC Flow Entry On Flow Table On All Compute Nodes
-    BuiltIn.Log    L3 Datapath test across the networks using L3VPN
-    ${dst_ipv4_list1} =    BuiltIn.Create List    ${NET_1_VM_IPV4[1]}    @{NET_2_VM_IPV4}
-    Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPV4[0]}    ${dst_ipv4_list1}
-    ${dst_ipv4_list2} =    BuiltIn.Create List    ${NET_2_VM_IPV4[1]}    @{NET_1_VM_IPV4}
-    Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_VM_IPV4[0]}    ${dst_ipv4_list2}
-    ${dst_ipv6_list1} =    BuiltIn.Create List    ${NET_1_VM_IPV6[1]}    @{NET_2_VM_IPV6}
-    Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPV6[0]}    ${dst_ipv6_list1}
-    ${dst_ipv6_list2} =    BuiltIn.Create List    ${NET_2_VM_IPV6[1]}    @{NET_1_VM_IPV6}
-    Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_VM_IPV6[0]}    ${dst_ipv6_list2}
-
-Delete IPv6 Subnet And Check IPv4 datapath
-    [Documentation]    Delete IPv6 subnet from router and check IPv4 datapath before L3VPN creation.
-    ...    Then recreate IPv6 subnet.
-    BuiltIn.Log    Delete extra routes
-    OpenStackOperations.Update Router    ${ROUTER}    ${RT_CLEAR}
-    OpenStackOperations.Show Router    ${ROUTER}
-    BuiltIn.Log    Delete IPv6 subnet
-    FOR    ${PORT}    IN    @{SUBNETS6}
-        Remove Interface    ${ROUTER}    ${PORT}
-    END
-    BuiltIn.Log    Test L2 datapath
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${NET_1_VM_IPV4[0]}
-    ...    ping -I ${NET_1_VM_IPV4[0]} -c 3 ${NET_1_VM_IPV4[1]}
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${NET_2_VM_IPV4[0]}
-    ...    ping -I ${NET_2_VM_IPV4[0]} -c 3 ${NET_2_VM_IPV4[1]}
-    BuiltIn.Should Contain    ${output}    64 bytes
-    BuiltIn.Log    Test L3 datapath
-    ${dst_ipv4_list1} =    BuiltIn.Create List    ${NET_1_VM_IPV4[1]}    @{NET_2_VM_IPV4}
-    Test Operations From Vm Instance    ${NETWORKS}[0]    ${NET_1_VM_IPV4[0]}    ${dst_ipv4_list1}
-    ${dst_ipv4_list2} =    BuiltIn.Create List    ${NET_2_VM_IPV4[1]}    @{NET_1_VM_IPV4}
-    Test Operations From Vm Instance    ${NETWORKS}[1]    ${NET_2_VM_IPV4[0]}    ${dst_ipv4_list2}
-
-Dissociate L3VPN From Routers
-    [Documentation]    Dissociating router from L3VPN.
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Dissociate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID[0]}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Not Contain    ${resp}    ${router_id}
-
-Delete Router And Router Interfaces With L3VPN
-    [Documentation]    Delete associate with L3VPN Router and its Ports.
-    # Asscoiate router with L3VPN
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID[0]}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-    # Delete Interface
-    FOR    ${iface}    IN    @{SUBNETS4}
-        Remove Interface    ${ROUTER}    ${iface}
-        ${subnet_id} =    Get Subnet Id    ${iface}
-        ${rt_port_list} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-        BuiltIn.Should Not Contain    ${rt_port_list}    ${subnet_id}
-        # Delete Router and Interface to the subnets.
-    END
-    Delete Router    ${ROUTER}
-    ${router_output} =    OpenStackOperations.List Routers
-    BuiltIn.Should Not Contain    ${router_output}    ${ROUTER}
-    ${router_list} =    BuiltIn.Create List    ${ROUTER}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements Not At URI
-    ...    ${ROUTER_URL}
-    ...    ${router_list}
-    ...    check_for_null=True
-    # Verify Router Entry removed from L3VPN
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Not Contain    ${resp}    ${router_id}
-    Verify GWMAC Flow Entry Removed From Flow Table On All Compute Nodes
-
-Delete Router With NonExistentRouter Name
-    [Documentation]    Delete router with nonExistentRouter name.
-    ${rc}    ${output} =    Run And Return Rc And Output    openstack router delete nonExistentRouter
-    BuiltIn.Should Match Regexp
-    ...    ${output}
-    ...    Failed to delete router with name or ID 'nonExistentRouter'|Failed to delete router\\(s\\) with name or ID\\(s\\) 'nonExistentRouter'
-
-Associate L3VPN To Networks
-    [Documentation]    Associates L3VPN to networks.
-    ${network1_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[0]
-    ${network2_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[1]
-    VpnOperations.Associate L3VPN To Network    networkid=${network1_id}    vpnid=${VPN_INSTANCE_ID[0]}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Contain    ${resp}    ${network1_id}
-    VpnOperations.Associate L3VPN To Network    networkid=${network2_id}    vpnid=${VPN_INSTANCE_ID[0]}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Contain    ${resp}    ${network2_id}
-
-Dissociate L3VPN From Networks
-    [Documentation]    Dissociate L3VPN from networks.
-    ${network1_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[0]
-    ${network2_id} =    OpenStackOperations.Get Net Id    ${NETWORKS}[1]
-    VpnOperations.Dissociate L3VPN From Networks    networkid=${network1_id}    vpnid=${VPN_INSTANCE_ID[0]}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Not Contain    ${resp}    ${network1_id}
-    VpnOperations.Dissociate L3VPN From Networks    networkid=${network2_id}    vpnid=${VPN_INSTANCE_ID[0]}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Not Contain    ${resp}    ${network2_id}
-
-Delete L3VPN
-    [Documentation]    Delete L3VPN.
-    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-
-Create Multiple L3VPN
-    [Documentation]    Creates three L3VPNs and then check the same.
-    ${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[0]}
-    ...    name=${VPN_NAME[0]}
-    ...    rd=${RDS[0]}
-    ...    exportrt=${RDS[0]}
-    ...    importrt=${RDS[0]}
-    ...    tenantid=${tenant_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_ID[1]}
-    ...    name=${VPN_NAME[1]}
-    ...    rd=${RDS[1]}
-    ...    exportrt=${RDS[1]}
-    ...    importrt=${RDS[1]}
-    ...    tenantid=${tenant_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_ID[2]}
-    ...    name=${VPN_NAME[2]}
-    ...    rd=${RDS[2]}
-    ...    exportrt=${RDS[2]}
-    ...    importrt=${RDS[2]}
-    ...    tenantid=${tenant_id}
-    ${resp} =    VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[0]}
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_ID[0]}
-    ${resp} =    VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[1]}
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_ID[1]}
-    ${resp} =    VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID[2]}
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_ID[2]}
-
-
-*** Keywords ***
-Suite Setup
-    VpnOperations.Basic Suite Setup
-    OpenStackOperations.Create Network    ${NETWORKS}[0]
-    OpenStackOperations.Create Network    ${NETWORKS}[1]
-    ${NET_LIST} =    OpenStackOperations.List Networks
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
-    OpenStackOperations.Update Network    ${NETWORKS}[0]    additional_args=--description ${UPDATE_NETWORK}
-    ${output} =    OpenStackOperations.Show Network    ${NETWORKS}[0]
-    BuiltIn.Should Contain    ${output}    ${UPDATE_NETWORK}
-    OpenStackOperations.Create SubNet    ${NETWORKS}[0]    ${SUBNETS4}[0]    ${SUBNETS4_CIDR}[0]
-    OpenStackOperations.Create SubNet
-    ...    ${NETWORKS}[0]
-    ...    ${SUBNETS6}[0]
-    ...    ${SUBNETS6_CIDR}[0]
-    ...    ${SUBNET_ADDITIONAL_ARGS}
-    OpenStackOperations.Create SubNet    ${NETWORKS}[1]    ${SUBNETS4}[1]    ${SUBNETS4_CIDR}[1]
-    OpenStackOperations.Create SubNet
-    ...    ${NETWORKS}[1]
-    ...    ${SUBNETS6}[1]
-    ...    ${SUBNETS6_CIDR}[1]
-    ...    ${SUBNET_ADDITIONAL_ARGS}
-    ${SUB_LIST} =    OpenStackOperations.List Subnets
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${SUBNETS4}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${SUBNETS6}
-    OpenStackOperations.Update SubNet    ${SUBNETS4}[0]    additional_args=--description ${UPDATE_SUBNET}
-    ${output} =    OpenStackOperations.Show SubNet    ${SUBNETS4}[0]
-    BuiltIn.Should Contain    ${output}    ${UPDATE_SUBNET}
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}    IPv4
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${SECURITY_GROUP}
-    ...    direction=ingress
-    ...    ethertype=IPv6
-    ...    port_range_max=65535
-    ...    port_range_min=1
-    ...    protocol=tcp
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${SECURITY_GROUP}
-    ...    direction=egress
-    ...    ethertype=IPv6
-    ...    port_range_max=65535
-    ...    port_range_min=1
-    ...    protocol=tcp
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${SECURITY_GROUP}
-    ...    direction=ingress
-    ...    ethertype=IPv6
-    ...    protocol=icmp
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${SECURITY_GROUP}
-    ...    direction=egress
-    ...    ethertype=IPv6
-    ...    protocol=icmp
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${SECURITY_GROUP}
-    ...    direction=ingress
-    ...    ethertype=IPv6
-    ...    port_range_max=65535
-    ...    port_range_min=1
-    ...    protocol=udp
-    OpenStackOperations.Neutron Security Group Rule Create
-    ...    ${SECURITY_GROUP}
-    ...    direction=egress
-    ...    ethertype=IPv6
-    ...    port_range_max=65535
-    ...    port_range_min=1
-    ...    protocol=udp
-    ${allowed_address_pairs_args} =    BuiltIn.Set Variable
-    ...    --allowed-address ip-address=${EXTRA_NW_SUBNET_IPV4}[0] --allowed-address ip-address=${EXTRA_NW_SUBNET_IPV4}[1] --allowed-address ip-address=${EXTRA_NW_SUBNET_IPV6}[0] --allowed-address ip-address=${EXTRA_NW_SUBNET_IPV6}[1]
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${PORTS}[0]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${PORTS}[1]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[1]
-    ...    ${PORTS}[2]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    OpenStackOperations.Create Port
-    ...    ${NETWORKS}[1]
-    ...    ${PORTS}[3]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${PORTS}
-    ${PORTS_MACADDR} =    OpenStackOperations.Get Ports MacAddr    ${PORTS}
-    BuiltIn.Set Suite Variable    ${PORTS_MACADDR}
-    OpenStackOperations.Update Port    ${PORTS}[0]    additional_args=--name ${UPDATE_PORT}
-    ${output} =    Show Port    ${UPDATE_PORT}
-    BuiltIn.Should Contain    ${output}    ${UPDATE_PORT}
-    OpenStackOperations.Update Port    ${UPDATE_PORT}    additional_args=--name ${PORTS}[0]
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[0]
-    ...    ${NET_1_VM_INSTANCES[0]}
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[1]
-    ...    ${NET_1_VM_INSTANCES[1]}
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[2]
-    ...    ${NET_2_VM_INSTANCES[0]}
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[3]
-    ...    ${NET_2_VM_INSTANCES[1]}
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    ${VM_INSTANCES} =    BuiltIn.Create List    @{NET_1_VM_INSTANCES}    @{NET_2_VM_INSTANCES}
-    BuiltIn.Set Suite Variable    ${VM_INSTANCES}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    OpenStackOperations.Wait For Routes To Propogate
-    ...    ${NETWORKS}
-    ...    ${SUBNETS4_CIDR}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    OpenStackOperations.Wait For Routes To Propogate
-    ...    ${NETWORKS}
-    ...    ${SUBNETS6_CIDR}
-    @{NET_1_VM_IPV4}    ${NET_1_DHCP_IPV4} =    OpenStackOperations.Get VM IPs    @{NET_1_VM_INSTANCES}
-    @{NET_2_VM_IPV4}    ${NET_2_DHCP_IPV4} =    OpenStackOperations.Get VM IPs    @{NET_2_VM_INSTANCES}
-    BuiltIn.Should Not Contain    ${NET_1_VM_IPV4}    None
-    BuiltIn.Should Not Contain    ${NET_2_VM_IPV4}    None
-    BuiltIn.Should Not Contain    ${NET_1_DHCP_IPV4}    None
-    BuiltIn.Should Not Contain    ${NET_2_DHCP_IPV4}    None
-    BuiltIn.Log    Collect VMs IPv6 addresses
-    ${prefix_net10} =    String.Replace String
-    ...    ${SUBNETS6_CIDR}[0]
-    ...    ${IP6_SUBNET_CIDR_SUFFIX}
-    ...    ${IP6_ADDR_SUFFIX}
-    ${prefix_net20} =    String.Replace String
-    ...    ${SUBNETS6_CIDR}[1]
-    ...    ${IP6_SUBNET_CIDR_SUFFIX}
-    ...    ${IP6_ADDR_SUFFIX}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    true
-    ...    ${NET_1_VM_INSTANCES}
-    ...    ${NETWORKS}[0]
-    ...    ${prefix_net10}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    true
-    ...    ${NET_2_VM_INSTANCES}
-    ...    ${NETWORKS}[1]
-    ...    ${prefix_net20}
-    ${NET_1_VM_IPV6} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    false
-    ...    ${NET_1_VM_INSTANCES}
-    ...    ${NETWORKS}[0]
-    ...    ${prefix_net10}
-    ${NET_2_VM_IPV6} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    false
-    ...    ${NET_2_VM_INSTANCES}
-    ...    ${NETWORKS}[1]
-    ...    ${prefix_net20}
-    ${LOOP_COUNT} =    Get Length    ${NET_1_VM_INSTANCES}
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        ${status}    ${message} =    Run Keyword And Ignore Error
-        ...    BuiltIn.Should Not Contain
-        ...    ${NET_1_VM_IPV6}[${index}]
-        ...    None
-        IF    '${status}' == 'FAIL'
-            Write Commands Until Prompt    nova console-log ${NET_1_VM_INSTANCES}[${index}]    30s
-        END
-        ${status}    ${message} =    Run Keyword And Ignore Error
-        ...    BuiltIn.Should Not Contain
-        ...    ${NET_2_VM_IPV6}[${index}]
-        ...    None
-        IF    '${status}' == 'FAIL'
-            Write Commands Until Prompt    nova console-log ${NET_2_VM_INSTANCES}[${index}]    30s
-        END
-    END
-    BuiltIn.Set Suite Variable    ${NET_1_VM_IPV4}
-    BuiltIn.Set Suite Variable    ${NET_2_VM_IPV4}
-    BuiltIn.Set Suite Variable    ${NET_1_VM_IPV6}
-    BuiltIn.Set Suite Variable    ${NET_2_VM_IPV6}
-    ${VM_IPS} =    BuiltIn.Create List    @{NET_1_VM_IPV4}    @{NET_2_VM_IPV4}    @{NET_1_VM_IPV6}    @{NET_2_VM_IPV6}
-    BuiltIn.Set Suite Variable    ${VM_IPS}
-    OpenStackOperations.Show Debugs    @{NET_1_VM_INSTANCES}    @{NET_2_VM_INSTANCES}
-    OpenStackOperations.Get Suite Debugs
-
-Suite Teardown
-    [Documentation]    Delete the setup
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_ID}[0]
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_ID}[1]
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_ID}[2]
-    OpenStackOperations.OpenStack Suite Teardown
-
-Verify GWMAC Flow Entry On Flow Table
-    [Documentation]    Verify GWMAC Table, ARP Response table and Dispatcher table.
-    [Arguments]    ${cnIp}
-    ${flow_output} =    Run Command On Remote System
-    ...    ${cnIp}
-    ...    sudo ovs-ofctl -O OpenFlow13 dump-flows ${INTEGRATION_BRIDGE}
-    ${group_output} =    Run Command On Remote System
-    ...    ${cnIp}
-    ...    sudo ovs-ofctl -O OpenFlow13 dump-groups ${INTEGRATION_BRIDGE}
-    BuiltIn.Should Contain    ${flow_output}    table=${DISPATCHER_TABLE}
-    ${dispatcher_table} =    Get Lines Containing String    ${flow_output}    table=${DISPATCHER_TABLE}
-    BuiltIn.Should Contain    ${dispatcher_table}    goto_table:${GWMAC_TABLE}
-    BuiltIn.Should Not Contain    ${dispatcher_table}    goto_table:${ARP_RESPONSE_TABLE}
-    BuiltIn.Should Contain    ${flow_output}    table=${GWMAC_TABLE}
-    ${gwmac_table} =    Get Lines Containing String    ${flow_output}    table=${GWMAC_TABLE}
-    # Verify GWMAC address present in table ${L3_TABLE}
-    FOR    ${macAdd}    IN    @{GW_MAC_ADDRS}
-        BuiltIn.Should Contain    ${gwmac_table}    dl_dst=${macAdd} actions=goto_table:${L3_TABLE}
-        # Verify Miss entry
-    END
-    BuiltIn.Should Contain    ${gwmac_table}    actions=resubmit(,17)
-    # Verify ARP_CHECK_TABLE - ${ARP_CHECK_TABLE}
-    ${arpchk_table} =    Get Lines Containing String    ${flow_output}    table=${ARP_CHECK_TABLE}
-    BuiltIn.Should Match Regexp    ${arpchk_table}    ${ARP_RESPONSE_REGEX}
-    ${match} =    BuiltIn.Should Match Regexp    ${arpchk_table}    ${ARP_REQUEST_REGEX}
-    ${groupID} =    Split String    ${match}    separator=:
-    BuiltIn.Should Contain    ${flow_output}    table=${IPV6_TABLE}
-    ${icmp_ipv6_flows} =    Get Lines Containing String    ${flow_output}    icmp_type=${ICMP_TYPE}
-    # Verify IPv6 icmp_type=135
-    FOR    ${ip_addr}    IN    @{GW_IPV6_ADDRS}
-        ${rule} =    BuiltIn.Set Variable
-        ...    icmp_type=${ICMP_TYPE},icmp_code=0,nd_target=${ip_addr} actions=CONTROLLER:65535
-        BuiltIn.Should Match Regexp    ${icmp_ipv6_flows}    ${rule}
-    END
-    VpnOperations.Verify ARP REQUEST in groupTable    ${group_output}    ${groupID[1]}
-    # Verify ARP_RESPONSE_TABLE - ${ARP_RESPONSE_TABLE}
-    BuiltIn.Should Contain    ${flow_output}    table=${ARP_RESPONSE_TABLE}
-    ${arpResponder_table} =    Get Lines Containing String    ${flow_output}    table=${ARP_RESPONSE_TABLE}
-    BuiltIn.Should Contain    ${arpResponder_table}    priority=0 actions=drop
-    FOR    ${macAdd}    ${ipAdd}    IN ZIP    ${GW1_MAC_ADDRS}    ${GW_IPV4_ADDRS}
-        ${ARP_RESPONSE_IP_MAC_REGEX} =    BuiltIn.Set Variable
-        ...    arp_tpa=${ipAdd},arp_op=1 actions=.*,set_field:${macAdd}->eth_src
-        BuiltIn.Should Match Regexp    ${arpResponder_table}    ${ARP_RESPONSE_IP_MAC_REGEX}
-    END
diff --git a/csit/suites/netvirt/vpnservice/vpn_basic_dualstack_subnet_routing.robot b/csit/suites/netvirt/vpnservice/vpn_basic_dualstack_subnet_routing.robot
deleted file mode 100644 (file)
index decd724..0000000
+++ /dev/null
@@ -1,675 +0,0 @@
-*** Settings ***
-Documentation       Test suite to validate subnet routing functionality for hidden IPv4/IPv6 address 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.
-
-Library             Collections
-Library             OperatingSystem
-Library             RequestsLibrary
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Tcpdump.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.robot
-Resource            ../../../libraries/VpnOperations.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${SECURITY_GROUP}               vpndssr_sg
-@{NETWORKS}                     vpndssr_net_1    vpndssr_net_2
-@{SUBNETS4}                     vpndssr_ipv4_sub_1    vpndssr_ipv4_sub_2
-@{SUBNETS6}                     vpndssr_ipv6_sub_1    vpndssr_ipv6_sub_2
-@{SUBNETS4_CIDR}                30.1.1.0/24    40.1.1.0/24
-@{SUBNETS6_CIDR}                2001:db5:0:2::/64    2001:db5:0:3::/64
-${SUBNET_ADDITIONAL_ARGS}       --ip-version=6 --ipv6-address-mode=slaac --ipv6-ra-mode=slaac
-@{PORTS}                        vpndssr_port_1    vpndssr_port_2    vpndssr_port_3    vpndssr_port_4
-@{NET_1_VMS}                    vpndssr_net_1_vm_1    vpndssr_net_1_vm_2
-@{NET_2_VMS}                    vpndssr_net_2_vm_1    vpndssr_net_2_vm_2
-@{EXTRA_NW_IPV4}                30.1.1.209    30.1.1.210    40.1.1.209    40.1.1.210    40.1.1.211    30.1.1.211
-@{EXTRA_NW_IPV6}
-...                             2001:db5:0:2::10
-...                             2001:db5:0:2::20
-...                             2001:db5:0:3::10
-...                             2001:db5:0:3::20
-...                             2001:db5:0:3::30
-...                             2001:db5:0:2::30
-@{EXTRA_NW_SUBNET_IPv4}         30.1.1.0/24    40.1.1.0/24
-@{EXTRA_NW_SUBNET_IPv6}         2001:db5:0:2::/64    2001:db5:0:3::/64
-${ROUTER}                       vpn_router_dualstack_subnet
-${UPDATE_NETWORK}               update_network_dualstack_subnet
-${UPDATE_SUBNET}                update_subnet_dualstack_subnet
-${UPDATE_PORT}                  update_port_dualstack_subnet
-@{VPN_INSTANCE_ID}
-...                             1bc8cd92-48ca-49b5-94e1-b2921a261661
-...                             1bc8cd92-48ca-49b5-94e1-b2921a261662
-...                             1bc8cd92-48ca-49b5-94e1-b2921a261663
-@{VPN_NAME}                     vpn1_dualstack_subnet    vpn2_dualstack_subnet    vpn3_dualstack_subnet
-@{RDS}                          ["2506:2"]    ["2606:2"]    ["2706:2"]
-${LOOP_COUNT}                   4
-@{TABLE_NO_21}                  21
-${DUMP_FLOWS}                   sudo ovs-ofctl dump-flows br-int -O Openflow13
-
-
-*** Test Cases ***
-Check ELAN Datapath Traffic Within The Networks
-    [Documentation]    Checks datapath within the same network with different vlans.
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[0]
-    ...    ping -I ${net_1_vm_ipv4}[0] -c 3 ${net_1_vm_ipv4}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[0]
-    ...    ping6 -I ${net_1_vm_ipv6}[0] -c 3 ${net_1_vm_ipv6}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[0]
-    ...    ping -I ${net_2_vm_ipv4}[0] -c 3 ${net_2_vm_ipv4}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[0]
-    ...    ping6 -I ${net_2_vm_ipv6}[0] -c 3 ${net_2_vm_ipv6}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Create L3VPN
-    [Documentation]    Create L3VPN
-    ${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}[0]
-    ...    name=${VPN_NAME}[0]
-    ...    rd=${RDS}[0]
-    ...    exportrt=${RDS}[0]
-    ...    importrt=${RDS}[0]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID}[0]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_ID}[0]
-
-Associate L3VPN To Routers
-    [Documentation]    Associating router to L3VPN.
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID}[0]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-
-Configure Extra IPv4/IPv6 Addresss On Interface For Subnet Routing
-    [Documentation]    Extra IPv4/IPv6 Address configuration on Interfaces
-    ${VM_IPV6} =    BuiltIn.Create List
-    ...    ${net_1_vm_ipv6}[0]
-    ...    ${net_1_vm_ipv6}[1]
-    ...    ${net_2_vm_ipv6}[0]
-    ...    ${net_2_vm_ipv6}[1]
-    ${VM_IPV4} =    BuiltIn.Create List
-    ...    ${net_1_vm_ipv4}[0]
-    ...    ${net_1_vm_ipv4}[1]
-    ...    ${net_2_vm_ipv4}[0]
-    ...    ${net_2_vm_ipv4}[1]
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OpenStackOperations.Execute Command on VM Instance
-        ...    ${network_list}[${index}]
-        ...    ${VM_IPV6}[${index}]
-        ...    sudo ip -6 addr add ${EXTRA_NW_IPV6}[${index}]/64 dev eth0; sudo ifconfig eth0 allmulti; ip -6 a
-    END
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OpenStackOperations.Execute Command on VM Instance
-        ...    ${network_list}[${index}]
-        ...    ${VM_IPV4}[${index}]
-        ...    sudo ifconfig eth0:1 ${EXTRA_NW_IPV4}[${index}] netmask 255.255.255.0 up; ip a
-    END
-    BuiltIn.Set Suite Variable    ${VM_IPV6}
-    BuiltIn.Set Suite Variable    ${VM_IPV4}
-    BuiltIn.Should Not Contain    ${VM_IPV6}    None
-    BuiltIn.Should Not Contain    ${VM_IPV4}    None
-
-Verify Data Traffic On Configured Subnet Ipv4/IPv6 Address
-    [Documentation]    Check Dual Stack data path verifcation within and across network.
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv4 Data Traffic
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv6 Data Traffic
-
-Dissociate L3VPN From Routers and verify traffic
-    [Documentation]    Dissociating router from L3VPN and check data path verification
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Dissociate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID}[0]
-    BuiltIn.Should Not Contain    ${resp}    ${router_id}
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv4 Data No Traffic
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv6 Data No Traffic
-
-Associate L3VPN Again To Routers and verify traffic
-    [Documentation]    Associating router to L3VPN and check data path verification
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID}[0]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv4 Data Traffic
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv6 Data Traffic
-
-Delete the configured extra IPv4/IPv6 Addresss and verify traffic
-    [Documentation]    Delete IPv4/IPv6 Address configuration on Interfaces and verify traffic
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OpenStackOperations.Execute Command on VM Instance
-        ...    ${network_list}[${index}]
-        ...    ${VM_IPV6}[${index}]
-        ...    sudo ip -6 addr del ${EXTRA_NW_IPV6}[${index}]/64 dev eth0
-    END
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OpenStackOperations.Execute Command on VM Instance
-        ...    ${network_list}[${index}]
-        ...    ${VM_IPV4}[${index}]
-        ...    sudo ifconfig eth0:1 down
-    END
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv4 Data No Traffic
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv6 Data No Traffic
-    BuiltIn.Wait Until Keyword Succeeds    10x    40s    Verify Table 21 for No VPN Routes
-
-Configure Again Extra IPv4/IPv6 Addresss On Interface For Subnet Routing
-    [Documentation]    Extra IPv4/IPv6 Address configuration on Interfaces
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OpenStackOperations.Execute Command on VM Instance
-        ...    ${network_list}[${index}]
-        ...    ${VM_IPV6}[${index}]
-        ...    sudo ip -6 addr add ${EXTRA_NW_IPV6}[${index}]/64 dev eth0; sudo ifconfig eth0 allmulti; ip -6 a
-    END
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OpenStackOperations.Execute Command on VM Instance
-        ...    ${network_list}[${index}]
-        ...    ${VM_IPV4}[${index}]
-        ...    sudo ifconfig eth0:1 ${EXTRA_NW_IPV4}[${index}] netmask 255.255.255.0 up; ip a
-    END
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv4 Data Traffic
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv6 Data Traffic
-
-Remove Interface From Router And Verify Traffic
-    [Documentation]    Remove subnet from router and check data path verification
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    FOR    ${interface}    IN    @{SUBNETS4}
-        OpenStackOperations.Remove Interface    ${ROUTER}    ${INTERFACE}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    FOR    ${interface}    IN    @{SUBNETS6}
-        OpenStackOperations.Remove Interface    ${ROUTER}    ${INTERFACE}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    FOR    ${interface}    IN    @{SUBNETS4}
-        ${subnet_id} =    OpenStackOperations.Get Subnet Id    ${INTERFACE}
-        BuiltIn.Should Not Contain    ${interface_output}    ${subnet_id}
-    END
-    FOR    ${interface}    IN    @{SUBNETS6}
-        ${subnet_id} =    OpenStackOperations.Get Subnet Id    ${INTERFACE}
-        BuiltIn.Should Not Contain    ${interface_output}    ${subnet_id}
-    END
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv4 Data No Traffic
-
-Add Interface To Router And Verify Traffic
-    [Documentation]    Add interface router to again and check data path verification
-    FOR    ${interface}    IN    @{SUBNETS4}
-        OpenStackOperations.Add Router Interface    ${ROUTER}    ${interface}
-    END
-    FOR    ${interface}    IN    @{SUBNETS6}
-        OpenStackOperations.Add Router Interface    ${ROUTER}    ${interface}
-    END
-    BuiltIn.Wait Until Keyword Succeeds    10x    60s    Verify Ipv4 Data Traffic
-    BuiltIn.Wait Until Keyword Succeeds    10x    60s    Verify Ipv6 Data Traffic
-
-Delete L3VPN
-    [Documentation]    Delete L3VPN.
-    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_ID}[0]
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv4 Data No Traffic
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv6 Data No Traffic
-
-ReCreate L3VPN and associate L3VPN To Routers and verify traffic
-    [Documentation]    Recreate L3VPN and associate L3VPN To Routers and verify ipv4/ipv6 traffic
-    ${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}[0]
-    ...    name=${VPN_NAME}[0]
-    ...    rd=${RDS}[0]
-    ...    exportrt=${RDS}[0]
-    ...    importrt=${RDS}[0]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID}[0]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_ID}[0]
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_ID}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_ID}[0]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv4 Data Traffic
-    BuiltIn.Wait Until Keyword Succeeds    10x    30s    Verify Ipv6 Data Traffic
-
-
-*** Keywords ***
-Suite Setup
-    [Documentation]    Create basic setup for feature.Create two network,subnet,four ports and four VMs
-    VpnOperations.Basic Suite Setup
-    OpenStackOperations.Create Network    ${NETWORKS}[0]
-    OpenStackOperations.Create Network    ${NETWORKS}[1]
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
-    OpenStackOperations.Update Network    ${NETWORKS}[0]    additional_args=--description ${UPDATE_NETWORK}
-    ${output} =    OpenStackOperations.Show Network    ${NETWORKS}[0]
-    BuiltIn.Should Contain    ${output}    ${UPDATE_NETWORK}
-    OpenStackOperations.Create SubNet    ${NETWORKS}[0]    ${SUBNETS4}[0]    ${SUBNETS4_CIDR}[0]
-    OpenStackOperations.Create SubNet
-    ...    ${NETWORKS}[0]
-    ...    ${SUBNETS6}[0]
-    ...    ${SUBNETS6_CIDR}[0]
-    ...    ${SUBNET_ADDITIONAL_ARGS}
-    OpenStackOperations.Create SubNet    ${NETWORKS}[1]    ${SUBNETS4}[1]    ${SUBNETS4_CIDR}[1]
-    OpenStackOperations.Create SubNet
-    ...    ${NETWORKS}[1]
-    ...    ${SUBNETS6}[1]
-    ...    ${SUBNETS6_CIDR}[1]
-    ...    ${SUBNET_ADDITIONAL_ARGS}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${SUBNETS4}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${SUBNETS6}
-    OpenStackOperations.Update SubNet    ${SUBNETS4}[0]    additional_args=--description ${UPDATE_SUBNET}
-    ${output} =    OpenStackOperations.Show SubNet    ${SUBNETS4}[0]
-    BuiltIn.Should Contain    ${output}    ${UPDATE_SUBNET}
-    OpenStackOperations.Create Router    ${ROUTER}
-    @{router_list} =    BuiltIn.Create List    ${ROUTER}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${ROUTER_URL}
-    ...    ${router_list}
-    FOR    ${port}    IN    @{SUBNETS4}
-        OpenStackOperations.Add Router Interface    ${ROUTER}    ${port}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    FOR    ${port}    IN    @{SUBNETS6}
-        OpenStackOperations.Add Router Interface    ${ROUTER}    ${port}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    Create Allow All SecurityGroup    ${SECURITY_GROUP}    IPv4    True
-    ${allowed_address_pairs_args} =    BuiltIn.Set Variable
-    ...    --allowed-address ip-address=${EXTRA_NW_SUBNET_IPV4}[0] --allowed-address ip-address=${EXTRA_NW_SUBNET_IPV4}[1] --allowed-address ip-address=${EXTRA_NW_SUBNET_IPV6}[0] --allowed-address ip-address=${EXTRA_NW_SUBNET_IPV6}[1]
-    ${network_list} =    BuiltIn.Create List    ${NETWORKS}[0]    ${NETWORKS}[0]    ${NETWORKS}[1]    ${NETWORKS}[1]
-    BuiltIn.Set Suite Variable    ${network_list}
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OpenStackOperations.Create Port
-        ...    ${network_list}[${index}]
-        ...    ${PORTS}[${index}]
-        ...    sg=${SECURITY_GROUP}
-        ...    additional_args=${allowed_address_pairs_args}
-    END
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${PORT_URL}    ${PORTS}
-    OpenStackOperations.Update Port    ${PORTS}[0]    additional_args=--name ${UPDATE_PORT}
-    ${output} =    Show Port    ${UPDATE_PORT}
-    BuiltIn.Should Contain    ${output}    ${UPDATE_PORT}
-    OpenStackOperations.Update Port    ${UPDATE_PORT}    additional_args=--name ${PORTS}[0]
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[0]
-    ...    ${NET_1_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[1]
-    ...    ${NET_1_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[2]
-    ...    ${NET_2_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[3]
-    ...    ${NET_2_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    OpenStackOperations.Wait For Routes To Propogate
-    ...    ${NETWORKS}
-    ...    ${SUBNETS4_CIDR}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    OpenStackOperations.Wait For Routes To Propogate
-    ...    ${NETWORKS}
-    ...    ${SUBNETS6_CIDR}
-    @{net_1_vm_ipv4}    ${net_1_dhcp_ipv4} =    OpenStackOperations.Get VM IPs    @{NET_1_VMS}
-    @{net_2_vm_ipv4}    ${net_2_dhcp_ipv4} =    OpenStackOperations.Get VM IPs    @{NET_2_VMS}
-    BuiltIn.Should Not Contain    ${net_1_vm_ipv4}    None
-    BuiltIn.Should Not Contain    ${net_2_vm_ipv4}    None
-    BuiltIn.Should Not Contain    ${net_1_dhcp_ipv4}    None
-    BuiltIn.Should Not Contain    ${net_2_dhcp_ipv4}    None
-    BuiltIn.Log    Collect VMs IPv6 addresses
-    ${prefix_net10} =    String.Replace String
-    ...    ${SUBNETS6_CIDR}[0]
-    ...    ${IP6_SUBNET_CIDR_SUFFIX}
-    ...    ${IP6_ADDR_SUFFIX}
-    ${prefix_net20} =    String.Replace String
-    ...    ${SUBNETS6_CIDR}[1]
-    ...    ${IP6_SUBNET_CIDR_SUFFIX}
-    ...    ${IP6_ADDR_SUFFIX}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    true
-    ...    ${NET_1_VMS}
-    ...    ${NETWORKS}[0]
-    ...    ${prefix_net10}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    true
-    ...    ${NET_2_VMS}
-    ...    ${NETWORKS}[1]
-    ...    ${prefix_net20}
-    ${net_1_vm_ipv6} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    false
-    ...    ${NET_1_VMS}
-    ...    ${NETWORKS}[0]
-    ...    ${prefix_net10}
-    ${net_2_vm_ipv6} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    false
-    ...    ${NET_2_VMS}
-    ...    ${NETWORKS}[1]
-    ...    ${prefix_net20}
-    ${loop_count} =    Get Length    ${NET_1_VMS}
-    FOR    ${index}    IN RANGE    0    ${loop_count}
-        ${status}    ${message} =    Run Keyword And Ignore Error
-        ...    BuiltIn.Should Not Contain
-        ...    ${net_1_vm_ipv6}[${index}]
-        ...    None
-        IF    '${status}' == 'FAIL'
-            Write Commands Until Prompt    nova console-log ${NET_1_VMS}[${index}]    30s
-        END
-        ${status}    ${message} =    Run Keyword And Ignore Error
-        ...    BuiltIn.Should Not Contain
-        ...    ${net_2_vm_ipv6}[${index}]
-        ...    None
-        IF    '${status}' == 'FAIL'
-            Write Commands Until Prompt    nova console-log ${NET_2_VMS}[${index}]    30s
-        END
-    END
-    BuiltIn.Set Suite Variable    ${net_1_vm_ipv4}
-    BuiltIn.Set Suite Variable    ${net_2_vm_ipv4}
-    BuiltIn.Set Suite Variable    ${net_1_vm_ipv6}
-    BuiltIn.Set Suite Variable    ${net_2_vm_ipv6}
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Verify Ipv4 Data Traffic
-    [Documentation]    Check Ipv4 data path verification within and across network
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[3]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[2]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[3]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[2]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[2]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[3]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Verify Ipv4 Data No Traffic
-    [Documentation]    Check Ipv4 data path verification within and across network
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[3]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[2]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[3]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[2]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[0]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[0]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[1]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[0]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv4}[1]
-    ...    ping -c 3 ${EXTRA_NW_IPV4}[1]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-
-Verify Ipv6 Data Traffic
-    [Documentation]    Check Ipv6 data path verification within and across network
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[3]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[2]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[3]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[2]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[2]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[0]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[1]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[3]
-    BuiltIn.Should Contain    ${output}    ${PING_REGEXP}
-
-Verify Ipv6 Data No Traffic
-    [Documentation]    Check Ipv6 data path verification within and across network
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[3]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[2]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[3]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${net_1_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[2]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[0]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[0]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[1]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[0]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${net_2_vm_ipv6}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IPV6}[1]
-    BuiltIn.Should Contain    ${output}    ${NO_PING_REGEXP}
-
-Verify Table 21 for VPN Routes
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OVSDB.Verify Dump Flows For Specific Table
-        ...    ${OS_CMP1_IP}
-        ...    ${TABLE_NO_21}
-        ...    True
-        ...    ${EMPTY}
-        ...    ipv6_dst=${EXTRA_NW_IPV6}[${index}]
-    END
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OVSDB.Verify Dump Flows For Specific Table
-        ...    ${OS_CMP1_IP}
-        ...    ${TABLE_NO_21}
-        ...    True
-        ...    ${EMPTY}
-        ...    ipv6_dst=${EXTRA_NW_IPV4}[${index}]
-    END
-
-Verify Table 21 for No VPN Routes
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OVSDB.Verify Dump Flows For Specific Table
-        ...    ${OS_CMP1_IP}
-        ...    ${TABLE_NO_21}
-        ...    False
-        ...    ${EMPTY}
-        ...    ipv6_dst=${EXTRA_NW_IPV6}[${index}]
-    END
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        OVSDB.Verify Dump Flows For Specific Table
-        ...    ${OS_CMP1_IP}
-        ...    ${TABLE_NO_21}
-        ...    False
-        ...    ${EMPTY}
-        ...    ipv6_dst=${EXTRA_NW_IPV4}[${index}]
-    END
-
-Suite Teardown
-    [Documentation]    Delete the setup
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_ID}[0]
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_ID}[1]
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_ID}[2]
-    OpenStackOperations.OpenStack Suite Teardown
diff --git a/csit/suites/netvirt/vpnservice/vpn_basic_ipv6.robot b/csit/suites/netvirt/vpnservice/vpn_basic_ipv6.robot
deleted file mode 100644 (file)
index cc1a1a2..0000000
+++ /dev/null
@@ -1,449 +0,0 @@
-*** Settings ***
-Documentation       Test suite to validate IPv6 vpnservice 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.
-
-Library             OperatingSystem
-Library             RequestsLibrary
-Resource            ../../../libraries/CompareStream.robot
-Resource            ../../../libraries/Utils.robot
-Resource            ../../../libraries/OpenStackOperations.robot
-Resource            ../../../libraries/DevstackUtils.robot
-Resource            ../../../libraries/VpnOperations.robot
-Resource            ../../../libraries/OVSDB.robot
-Resource            ../../../libraries/SetupUtils.robot
-Resource            ../../../libraries/Tcpdump.robot
-Resource            ../../../variables/Variables.robot
-Resource            ../../../variables/netvirt/Variables.robot
-
-Suite Setup         Suite Setup
-Suite Teardown      Suite Teardown
-Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown       OpenStackOperations.Get Test Teardown Debugs
-
-
-*** Variables ***
-${SECURITY_GROUP}       vpn6_sg
-@{NETWORKS}             vpn6_net_1    vpn6_net_2
-@{SUBNETS}              vpn6_sub_1    vpn6_sub_2
-@{SUBNET_CIDRS}         2001:db8:0:2::/64    2001:db8:0:3::/64
-@{PORTS}                vpn6_net_1_port_1    vpn6_net_1_port_2    vpn6_net_2_port_1    vpn6_net_2_port_2
-@{NET_1_VMS}            vpn6_net_1_vm_1    vpn6_net_1_vm_2
-@{NET_2_VMS}            vpn6_net_2_vm_1    vpn6_net_2_vm_2
-${ROUTER}               vpn6_router
-@{EXTRA_NW_IP}          2001:db9:cafe:d::10    2001:db9:abcd:d::20
-@{EXTRA_NW_SUBNET}      2001:db9:cafe:d::/64    2001:db9:abcd:d::/64
-${UPDATE_NETWORK}       UpdateNetworkV6
-${UPDATE_SUBNET}        UpdateSubnetV6
-${UPDATE_PORT}          UpdatePortV6
-@{VPN_INSTANCE_IDS}
-...                     4ae8cd92-48ca-49b5-94e1-b2921a261661
-...                     4ae8cd92-48ca-49b5-94e1-b2921a261662
-...                     4ae8cd92-48ca-49b5-94e1-b2921a261663
-@{VPN_NAMES}            vpn6_1    vpn6_2    vpn6_3
-@{RDS}                  ["2206:2"]    ["2306:2"]    ["2406:2"]
-
-
-*** Test Cases ***
-Check ELAN Datapath Traffic Within The Networks
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IP_NET10}[0]
-    ...    ping6 -c 3 ${VM_IP_NET10}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${VM_IP_NET20}[0]
-    ...    ping6 -c 3 ${VM_IP_NET20}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-
-Check L3_Datapath Traffic Across Networks With Router
-    BuiltIn.Log    Verification of FIB Entries and Flow
-    @{tcpdump_conn_ids} =    OpenStackOperations.Start Packet Capture On Nodes
-    ...    tcpdump_vpn6
-    ...    ${EMPTY}
-    ...    @{OS_ALL_IPS}
-    ${vm_ips} =    BuiltIn.Create List    @{VM_IP_NET10}    @{VM_IP_NET20}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${vm_ips}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    VpnOperations.Verify Flows Are Present For L3VPN
-    ...    ${OS_CMP1_IP}
-    ...    ${VM_IP_NET10}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    VpnOperations.Verify Flows Are Present For L3VPN
-    ...    ${OS_CMP1_IP}
-    ...    ${VM_IP_NET20}
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    VpnOperations.Verify GWMAC Entry On ODL    ${GWMAC_ADDRS}
-    Verify GWMAC Flow Entry On Flow Table On All Compute Nodes    ipv6
-    ${dst_ip_list} =    BuiltIn.Create List    ${VM_IP_NET10}[1]    @{VM_IP_NET20}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${VM_IP_NET10}[0]    ${dst_ip_list}
-    ${dst_ip_list} =    BuiltIn.Create List    ${VM_IP_NET20}[1]    @{VM_IP_NET10}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${VM_IP_NET20}[0]    ${dst_ip_list}
-    [Teardown]    VpnOperations.Test Teardown With Tcpdump Stop    ${tcpdump_conn_ids}
-
-Add Multiple Extra Routes And Check Datapath Before L3VPN Creation
-    ${CONFIG_EXTRA_ROUTE_IP1} =    BuiltIn.Catenate    sudo ip -6 addr add ${EXTRA_NW_IP}[0]/64 dev eth0
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IP_NET10}[0]
-    ...    ${CONFIG_EXTRA_ROUTE_IP1}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${VM_IP_NET10}[0]    ip -6 a
-    ${CONFIG_EXTRA_ROUTE_IP2} =    BuiltIn.Catenate    sudo ip -6 addr add ${EXTRA_NW_IP}[1]/64 dev eth0
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IP_NET10}[0]
-    ...    ${CONFIG_EXTRA_ROUTE_IP2}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance    ${NETWORKS}[0]    ${VM_IP_NET10}[0]    ip -6 a
-    ${EXT_RT1} =    Set Variable    destination=${EXTRA_NW_SUBNET}[0],gateway=${VM_IP_NET10}[0]
-    ${EXT_RT2} =    Set Variable    destination=${EXTRA_NW_SUBNET}[1],gateway=${VM_IP_NET10}[0]
-    ${cmd} =    BuiltIn.Catenate    ${RT_OPTIONS}    ${EXT_RT1}    ${RT_OPTIONS}    ${EXT_RT2}
-    OpenStackOperations.Update Router    ${ROUTER}    ${cmd}
-    OpenStackOperations.Show Router    ${ROUTER}
-    ${vm_ips} =    BuiltIn.Create List    @{EXTRA_NW_SUBNET}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${FIB_ENTRY_URL}
-    ...    ${vm_ips}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IP_NET10}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IP}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[1]
-    ...    ${VM_IP_NET20}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IP}[1]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IP_NET10}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IP}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-
-Delete Extra Route
-    OpenStackOperations.Update Router    ${ROUTER}    ${RT_CLEAR}
-    OpenStackOperations.Show Router    ${ROUTER}
-
-Delete And Recreate Extra Route
-    [Documentation]    Recreate multiple extra route and check data path before L3VPN creation
-    ${CONFIG_EXTRA_ROUTE_IP1} =    BuiltIn.Catenate    sudo ip -6 addr add ${EXTRA_NW_IP}[1]/64 dev eth0
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IP_NET10}[0]
-    ...    ${CONFIG_EXTRA_ROUTE_IP1}
-    ${EXT_RT1} =    Set Variable    destination=${EXTRA_NW_SUBNET}[0],gateway=${VM_IP_NET10}[0]
-    ${cmd} =    BuiltIn.Catenate    ${RT_OPTIONS}    ${EXT_RT1}
-    OpenStackOperations.Update Router    ${ROUTER}    ${cmd}
-    OpenStackOperations.Show Router    ${ROUTER}
-    ${output} =    OpenStackOperations.Execute Command on VM Instance
-    ...    ${NETWORKS}[0]
-    ...    ${VM_IP_NET10}[1]
-    ...    ping6 -c 3 ${EXTRA_NW_IP}[0]
-    BuiltIn.Should Contain    ${output}    64 bytes
-    # clear off extra-routes before the next set of tests
-    [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Update Router    ${ROUTER}    ${RT_CLEAR}
-    ...    AND    OpenStackOperations.Show Router    ${ROUTER}
-    ...    AND    OpenStackOperations.Get Test Teardown Debugs
-
-Create L3VPN
-    ${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_IDS}[0]
-    ...    name=${VPN_NAMES}[0]
-    ...    rd=${RDS}[0]
-    ...    exportrt=${RDS}[0]
-    ...    importrt=${RDS}[0]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_IDS}[0]
-
-Associate L3VPN To Routers
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-
-Verify L3VPN Datapath With Router Association
-    BuiltIn.Log    Verify VPN interfaces, FIB entries and Flow table
-    ${vm_ips} =    BuiltIn.Create List    @{VM_IP_NET10}    @{VM_IP_NET20}
-    CompareStream.Run_Keyword_If_Less_Than_Magnesium
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${VPN_IFACES_URL}
-    ...    ${vm_ips}
-    CompareStream.Run_Keyword_If_At_Least_Magnesium
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    30s
-    ...    10s
-    ...    Utils.Check For Elements At URI
-    ...    ${VPN_INST_IFACES_URL}
-    ...    ${vm_ips}
-    ${RD} =    Strip String    ${RDS}[0]    characters="[]
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    60s
-    ...    15s
-    ...    Utils.Check For Elements At URI
-    ...    ${CONFIG_API}/odl-fib:fibEntries/vrfTables/${RD}/
-    ...    ${vm_ips}
-    Verify Flows Are Present For L3VPN On All Compute Nodes    ${vm_ips}
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    VpnOperations.Verify GWMAC Entry On ODL    ${GWMAC_ADDRS}
-    Verify GWMAC Flow Entry On Flow Table On All Compute Nodes    ipv6
-    BuiltIn.Log    Check datapath from network1 to network2
-    ${dst_ip_list} =    BuiltIn.Create List    ${VM_IP_NET10}[1]    @{VM_IP_NET20}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[0]    ${VM_IP_NET10}[0]    ${dst_ip_list}
-    BuiltIn.Log    Check datapath from network2 to network1
-    ${dst_ip_list} =    BuiltIn.Create List    ${VM_IP_NET20}[1]    @{VM_IP_NET10}
-    OpenStackOperations.Test Operations From Vm Instance    ${NETWORKS}[1]    ${VM_IP_NET20}[0]    ${dst_ip_list}
-
-Dissociate L3VPN From Routers
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Dissociate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Not Contain    ${resp}    ${router_id}
-
-Delete Router And Router Interfaces With L3VPN
-    ${router_id} =    OpenStackOperations.Get Router Id    ${ROUTER}
-    VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${router_id}
-    FOR    ${INTERFACE}    IN    @{SUBNETS}
-        OpenStackOperations.Remove Interface    ${ROUTER}    ${INTERFACE}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    FOR    ${INTERFACE}    IN    @{SUBNETS}
-        ${subnet_id} =    OpenStackOperations.Get Subnet Id    ${INTERFACE}
-        BuiltIn.Should Not Contain    ${interface_output}    ${subnet_id}
-    END
-    OpenStackOperations.Delete Router    ${ROUTER}
-    ${router_output} =    OpenStackOperations.List Routers
-    BuiltIn.Should Not Contain    ${router_output}    ${ROUTER}
-    @{router_list} =    BuiltIn.Create List    ${ROUTER}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements Not At URI
-    ...    ${ROUTER_URL}
-    ...    ${router_list}
-    ...    check_for_null=True
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Not Contain    ${resp}    ${router_id}
-    Verify GWMAC Flow Entry Removed From Flow Table On All Compute Nodes
-
-Delete Router With NonExistentRouter Name
-    ${result} =    Process.Run Process    openstack router delete nonExistentRouter    shell=True
-    BuiltIn.Log    ${result.stdout}
-    BuiltIn.Log    ${result.stderr}
-    BuiltIn.Should Be True    '${result.rc}' == '1'
-    BuiltIn.Should Match Regexp
-    ...    ${result.stderr}
-    ...    Failed to delete router with name or ID 'nonExistentRouter': No Router found for nonExistentRouter
-
-Delete L3VPN
-    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-
-Create Multiple L3VPN
-    ${net_id} =    Get Net Id    ${NETWORKS}[0]
-    ${tenant_id} =    Get Tenant ID From Network    ${net_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[0]
-    ...    name=${VPN_NAMES}[0]
-    ...    rd=${RDS}[0]
-    ...    exportrt=${RDS}[0]
-    ...    importrt=${RDS}[0]
-    ...    tenantid=${tenant_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[1]
-    ...    name=${VPN_NAMES}[1]
-    ...    rd=${RDS}[1]
-    ...    exportrt=${RDS}[1]
-    ...    importrt=${RDS}[1]
-    ...    tenantid=${tenant_id}
-    VpnOperations.VPN Create L3VPN
-    ...    vpnid=${VPN_INSTANCE_IDS}[2]
-    ...    name=${VPN_NAMES}[2]
-    ...    rd=${RDS}[2]
-    ...    exportrt=${RDS}[2]
-    ...    importrt=${RDS}[2]
-    ...    tenantid=${tenant_id}
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_IDS}[0]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[1]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_IDS}[1]
-    ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VPN_INSTANCE_IDS}[2]
-    BuiltIn.Should Contain    ${resp}    ${VPN_INSTANCE_IDS}[2]
-
-
-*** Keywords ***
-Suite Setup
-    VpnOperations.Basic Suite Setup
-    OpenStackOperations.Create Network    ${NETWORKS}[0]
-    OpenStackOperations.Create Network    ${NETWORKS}[1]
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Utils.Check For Elements At URI    ${NETWORK_URL}    ${NETWORKS}
-    OpenStackOperations.Update Network    ${NETWORKS}[0]    additional_args=--description ${UPDATE_NETWORK}
-    ${output} =    OpenStackOperations.Show Network    ${NETWORKS}[0]
-    BuiltIn.Should Contain    ${output}    ${UPDATE_NETWORK}
-    ${net1_additional_args} =    BuiltIn.Catenate
-    ...    --ip-version=6 --ipv6-address-mode=slaac --ipv6-ra-mode=slaac ${NET1_IPV6_ADDR_POOL}
-    ${net2_additional_args} =    BuiltIn.Catenate
-    ...    --ip-version=6 --ipv6-address-mode=slaac --ipv6-ra-mode=slaac ${NET2_IPV6_ADDR_POOL}
-    OpenStackOperations.Create SubNet
-    ...    ${NETWORKS}[0]
-    ...    ${SUBNETS}[0]
-    ...    ${SUBNET_CIDRS}[0]
-    ...    ${net1_additional_args}
-    OpenStackOperations.Create SubNet
-    ...    ${NETWORKS}[1]
-    ...    ${SUBNETS}[1]
-    ...    ${SUBNET_CIDRS}[1]
-    ...    ${net2_additional_args}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${SUBNETWORK_URL}
-    ...    ${SUBNETS}
-    OpenStackOperations.Update SubNet    ${SUBNETS}[0]    additional_args=--description ${UPDATE_SUBNET}
-    ${output} =    OpenStackOperations.Show SubNet    ${SUBNETS}[0]
-    BuiltIn.Should Contain    ${output}    ${UPDATE_SUBNET}
-    OpenStackOperations.Create Router    ${ROUTER}
-    ${router_list} =    BuiltIn.Create List    ${ROUTER}
-    BuiltIn.Wait Until Keyword Succeeds
-    ...    3s
-    ...    1s
-    ...    Utils.Check For Elements At URI
-    ...    ${ROUTER_URL}
-    ...    ${router_list}
-    FOR    ${interface}    IN    @{SUBNETS}
-        OpenStackOperations.Add Router Interface    ${ROUTER}    ${interface}
-    END
-    ${interface_output} =    OpenStackOperations.Show Router Interface    ${ROUTER}
-    FOR    ${interface}    IN    @{SUBNETS}
-        ${subnet_id} =    OpenStackOperations.Get Subnet Id    ${interface}
-        BuiltIn.Should Contain    ${interface_output}    ${subnet_id}
-    END
-    ${GWMAC_ADDRS}    ${GWIP_ADDRS} =    VpnOperations.Get Gateway MAC And IP Address    ${ROUTER}    ${IP6_REGEX}
-    BuiltIn.Set Suite Variable    ${GWMAC_ADDRS}
-    BuiltIn.Set Suite Variable    ${GWIP_ADDRS}
-    OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}    IPv6
-    ${allowed_address_pairs_args} =    BuiltIn.Set Variable
-    ...    --allowed-address ip-address=${EXTRA_NW_SUBNET}[0] --allowed-address ip-address=${EXTRA_NW_SUBNET}[1]
-    Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${PORTS}[0]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    Create Port
-    ...    ${NETWORKS}[0]
-    ...    ${PORTS}[1]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    Create Port
-    ...    ${NETWORKS}[1]
-    ...    ${PORTS}[2]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    Create Port
-    ...    ${NETWORKS}[1]
-    ...    ${PORTS}[3]
-    ...    sg=${SECURITY_GROUP}
-    ...    additional_args=${allowed_address_pairs_args}
-    BuiltIn.Wait Until Keyword Succeeds    3s    1s    Check For Elements At URI    ${PORT_URL}    ${PORTS}
-    OpenStackOperations.Update Port    ${PORTS}[0]    additional_args=--name ${UPDATE_PORT}
-    ${output} =    Show Port    ${UPDATE_PORT}
-    BuiltIn.Should Contain    ${output}    ${UPDATE_PORT}
-    OpenStackOperations.Update Port    ${UPDATE_PORT}    additional_args=--name ${PORTS}[0]
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[0]
-    ...    ${NET_1_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[1]
-    ...    ${NET_1_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[2]
-    ...    ${NET_2_VMS}[0]
-    ...    ${OS_CMP1_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    OpenStackOperations.Create Vm Instance With Port On Compute Node
-    ...    ${PORTS}[3]
-    ...    ${NET_2_VMS}[1]
-    ...    ${OS_CMP2_HOSTNAME}
-    ...    sg=${SECURITY_GROUP}
-    ${vms} =    BuiltIn.Create List    @{NET_1_VMS}    @{NET_2_VMS}
-    FOR    ${vm}    IN    @{vms}
-        OpenStackOperations.Poll VM Is ACTIVE    ${vm}
-    END
-    BuiltIn.Wait Until Keyword Succeeds    30s    10s    Wait For Routes To Propogate    ${NETWORKS}    ${SUBNET_CIDRS}
-    ${prefix_net10} =    Replace String    ${SUBNET_CIDRS}[0]    ::/64    (:[a-f0-9]{,4}){,4}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=true
-    ...    vm_list=${NET_1_VMS}
-    ...    network=${NETWORKS}[0]
-    ...    subnet=${prefix_net10}
-    ${prefix_net20} =    Replace String    ${SUBNET_CIDRS}[1]    ::/64    (:[a-f0-9]{,4}){,4}
-    ${status}    ${message} =    Run Keyword And Ignore Error
-    ...    BuiltIn.Wait Until Keyword Succeeds
-    ...    3x
-    ...    60s
-    ...    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=true
-    ...    vm_list=${NET_2_VMS}
-    ...    network=${NETWORKS}[1]
-    ...    subnet=${prefix_net20}
-    ${VM_IP_NET10} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=false
-    ...    vm_list=${NET_1_VMS}
-    ...    network=${NETWORKS}[0]
-    ...    subnet=${prefix_net10}
-    ${VM_IP_NET20} =    OpenStackOperations.Collect VM IPv6 SLAAC Addresses
-    ...    fail_on_none=false
-    ...    vm_list=${NET_2_VMS}
-    ...    network=${NETWORKS}[1]
-    ...    subnet=${prefix_net20}
-    ${VM_INSTANCES} =    Collections.Combine Lists    ${NET_1_VMS}    ${NET_2_VMS}
-    ${VM_IPS} =    Collections.Combine Lists    ${VM_IP_NET10}    ${VM_IP_NET20}
-    ${LOOP_COUNT} =    BuiltIn.Get Length    ${NET_1_VMS}
-    FOR    ${index}    IN RANGE    0    ${LOOP_COUNT}
-        ${status}    ${message} =    Run Keyword And Ignore Error
-        ...    BuiltIn.Should Not Contain
-        ...    ${VM_IPS}[${index}]
-        ...    None
-        IF    '${status}' == 'FAIL'
-            OpenStack CLI    openstack console log show ${VM_INSTANCES}[${index}]    30s
-        END
-    END
-    OpenStackOperations.Copy DHCP Files From Control Node
-    BuiltIn.Set Suite Variable    ${VM_IP_NET10}
-    BuiltIn.Set Suite Variable    ${VM_IP_NET20}
-    BuiltIn.Should Not Contain    ${VM_IP_NET10}    None
-    BuiltIn.Should Not Contain    ${VM_IP_NET20}    None
-    OpenStackOperations.Show Debugs    @{NET_1_VMS}    @{NET_2_VMS}
-    OpenStackOperations.Get Suite Debugs
-
-Suite Teardown
-    [Documentation]    Delete the setup
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_IDS}[0]
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_IDS}[1]
-    BuiltIn.Run Keyword And Ignore Error    VpnOperations.VPN Delete L3VPN    vpnid=${VPN_INSTANCE_IDS}[2]
-    OpenStackOperations.OpenStack Suite Teardown