Vni Based L3 Forwarding 84/73184/45
authorSrinivasRachakonda <srinivas.rachakonda@gmail.com>
Tue, 19 Jun 2018 20:11:11 +0000 (01:41 +0530)
committerSam Hague <shague@redhat.com>
Tue, 24 Jul 2018 23:42:03 +0000 (23:42 +0000)
Change-Id: I525f34c06c502f98e65d287c467fe8a005f3a616
Signed-off-by: SrinivasRachakonda <srinivas.rachakonda@gmail.com>
Signed-off-by: Srinivas Rachakonda <srinivas.rachakonda@gmail.com>
csit/libraries/OVSDB.robot
csit/suites/netvirt/vnibasedl3forwarding/vnibasedl3forwarding.robot [new file with mode: 0644]
csit/testplans/netvirt-1node-openstack.txt

index 2922a02ea7aec2d5254e9393921d1ae39674cede..f474bff2895c0a381c280d46d2815dc914fac7ef 100644 (file)
@@ -426,6 +426,7 @@ Get Tunnel Id And Packet Count
     ${full_cmd} =    BuiltIn.Run Keyword If    "${direction}" == "Egress"    BuiltIn.Catenate    ${base_cmd}    | grep ${dst_mac} | awk '{split($7,a,"[:-]"); print a[2]}'
     ...    ELSE    BuiltIn.Catenate    ${base_cmd} | awk '{split($6,a,"[,=]"); {print a[4]}}'
     SSHLibrary.Switch Connection    ${conn_id}
+    Utils.Write Commands Until Expected Prompt    ${base_cmd}    ${DEFAULT_LINUX_PROMPT_STRICT}
     ${output} =    Utils.Write Commands Until Expected Prompt    ${full_cmd}    ${DEFAULT_LINUX_PROMPT_STRICT}
     @{list} =    String.Split String    ${output}
     ${output} =    Set Variable    @{list}[0]
@@ -435,7 +436,7 @@ Get Tunnel Id And Packet Count
     SSHLibrary.Switch Connection    ${conn_id}
     ${output} =    Utils.Write Commands Until Expected Prompt    ${full_cmd}    ${DEFAULT_LINUX_PROMPT_STRICT}
     @{list} =    String.Split String    ${output}
-    ${packet_count} =    Set Variable    @{list}[0]
+    ${packet_count} =    BuiltIn.Set Variable    @{list}[0]
     [Return]    ${tunnel_id}    ${packet_count}
 
 Verify Dump Flows For Specific Table
@@ -446,3 +447,40 @@ Verify Dump Flows For Specific Table
     : FOR    ${matching_str}    IN    @{matching_paras}
     \    BuiltIn.Run Keyword If    ${flag}==True    BuiltIn.Should Contain    ${flow_output}    ${matching_str}
     \    ...    ELSE    BuiltIn.Should Not Contain    ${flow_output}    ${matching_str}
+
+Verify Vni Segmentation Id and Tunnel Id
+    [Arguments]    ${port1}    ${port2}    ${net1}    ${net2}    ${vm1_ip}    ${vm2_ip}
+    ...    ${ip}=""
+    [Documentation]    Get tunnel id and packet count from specified table id and destination port mac address
+    ${port_mac1} =    OpenStackOperations.Get Port Mac    ${port1}
+    ${port_mac2} =    OpenStackOperations.Get Port Mac    ${port2}
+    ${segmentation_id1} =    OpenStackOperations.Get Network Segmentation Id    ${net1}
+    ${segmentation_id2} =    OpenStackOperations.Get Network Segmentation Id    ${net2}
+    ${egress_tun_id}    ${before_count_egress_port1} =    OVSDB.Get Tunnel Id And Packet Count    ${OS_CMP1_CONN_ID}    ${L3_TABLE}    direction=${EGRESS}    tun_id=${segmentation_id2}
+    ...    dst_mac=${port_mac2}
+    BuiltIn.Should Be Equal As Numbers    ${segmentation_id2}    ${egress_tun_id}
+    ${egress_tun_id}    ${before_count_egress_port2} =    OVSDB.Get Tunnel Id And Packet Count    ${OS_CMP2_CONN_ID}    ${L3_TABLE}    direction=${EGRESS}    tun_id=${segmentation_id1}
+    ...    dst_mac=${port_mac1}
+    BuiltIn.Should Be Equal As Numbers    ${segmentation_id1}    ${egress_tun_id}
+    ${ingress_tun_id}    ${before_count_ingress_port1} =    OVSDB.Get Tunnel Id And Packet Count    ${OS_CMP1_CONN_ID}    ${INTERNAL_TUNNEL_TABLE}    direction=${INGRESS}    tun_id=${segmentation_id1}
+    BuiltIn.Should Be Equal As Numbers    ${segmentation_id1}    ${ingress_tun_id}
+    ${ingress_tun_id}    ${before_count_ingress_port2} =    OVSDB.Get Tunnel Id And Packet Count    ${OS_CMP2_CONN_ID}    ${INTERNAL_TUNNEL_TABLE}    direction=${INGRESS}    tun_id=${segmentation_id2}
+    BuiltIn.Should Be Equal As Numbers    ${segmentation_id2}    ${ingress_tun_id}
+    ${ping_cmd} =    BuiltIn.Run Keyword If    '${ip}'=='ipv4'    BuiltIn.Set Variable    ping -c ${DEFAULT_PING_COUNT} ${vm2_ip}
+    ...    ELSE    BuiltIn.Set Variable    ping6 -c ${DEFAULT_PING_COUNT} ${vm2_ip}
+    ${output} =    OpenStackOperations.Execute Command on VM Instance    ${net1}    ${vm1_ip}    ${ping_cmd}
+    BuiltIn.Should Contain    ${output}    64 bytes
+    ${tun_id}    ${after_count_egress_port2} =    OVSDB.Get Tunnel Id And Packet Count    ${OS_CMP2_CONN_ID}    ${L3_TABLE}    direction=${EGRESS}    tun_id=${segmentation_id1}
+    ...    dst_mac=${port_mac1}
+    ${tun_id}    ${after_count_ingress_port2} =    OVSDB.Get Tunnel Id And Packet Count    ${OS_CMP2_CONN_ID}    ${INTERNAL_TUNNEL_TABLE}    direction=${INGRESS}    tun_id=${segmentation_id2}
+    ${tun_id}    ${after_count_egress_port1} =    OVSDB.Get Tunnel Id And Packet Count    ${OS_CMP1_CONN_ID}    ${L3_TABLE}    direction=${EGRESS}    tun_id=${segmentation_id2}
+    ...    dst_mac=${port_mac2}
+    ${tun_id}    ${after_count_ingress_port1} =    OVSDB.Get Tunnel Id And Packet Count    ${OS_CMP1_CONN_ID}    ${INTERNAL_TUNNEL_TABLE}    direction=${INGRESS}    tun_id=${segmentation_id1}
+    ${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}
diff --git a/csit/suites/netvirt/vnibasedl3forwarding/vnibasedl3forwarding.robot b/csit/suites/netvirt/vnibasedl3forwarding/vnibasedl3forwarding.robot
new file mode 100644 (file)
index 0000000..16628bd
--- /dev/null
@@ -0,0 +1,182 @@
+*** 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.
+Suite Setup       Start Suite
+Suite Teardown    OpenStackOperations.OpenStack Suite Teardown
+Test Setup        Run Keywords    OpenStackOperations.Get DumpFlows And Ovsconfig    ${OS_CMP1_CONN_ID}
+...               AND    OpenStackOperations.Get DumpFlows And Ovsconfig    ${OS_CMP2_CONN_ID}
+Test Teardown     OpenStackOperations.Get Test Teardown Debugs
+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
+
+*** 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
+    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.
+    ${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.
+    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.
+    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 ***
+Start Suite
+    [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
+    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
index 959c0babe907923ea059ae7b515d71320333f557..35e691bfedc2bbcf3b4323fede08b62ad2c76955 100644 (file)
@@ -11,4 +11,5 @@ integration/test/csit/suites/netvirt/elan/elan.robot
 integration/test/csit/suites/netvirt/vpnservice/arp_learning.robot
 integration/test/csit/suites/netvirt/l2l3_gatewaymac_arp.robot
 integration/test/csit/suites/netvirt/vnibasedl2switching/vnibasedl2switching.robot
+integration/test/csit/suites/netvirt/vnibasedl3forwarding/vnibasedl3forwarding.robot
 integration/test/csit/suites/integration/Create_JVM_Plots.robot