Update remaining tests for combos
[integration/test.git] / csit / suites / netvirt / vnibasedl3forwarding / vnibasedl3forwarding.robot
1 *** Settings ***
2 Documentation     Test Suite for vni-based-l2-l3-nat:
3 ...               This feature attempts to realize the use of VxLAN VNI
4 ...               (Virtual Network Identifier) for VxLAN tenant traffic
5 ...               flowing on the cloud data-network. This is applicable
6 ...               to L2 switching, L3 forwarding and NATing for all VxLAN
7 ...               based provider networks. In doing so, it eliminates the
8 ...               presence of LPort tags, ELAN tags and MPLS labels on the
9 ...               wire and instead, replaces them with VNIs supplied by the
10 ...               tenant’s OpenStack.
11 Suite Setup       Start Suite
12 Suite Teardown    Stop Suite
13 Test Setup        VpnOperations.VNI Test Setup
14 Test Teardown     VpnOperations.VNI Test Teardown
15 Library           OperatingSystem
16 Library           RequestsLibrary
17 Library           String
18 Resource          ../../../libraries/DevstackUtils.robot
19 Resource          ../../../libraries/KarafKeywords.robot
20 Resource          ../../../variables/netvirt/Variables.robot
21 Resource          ../../../libraries/OpenStackOperations.robot
22 Resource          ../../../libraries/OVSDB.robot
23 Resource          ../../../libraries/SetupUtils.robot
24 Resource          ../../../libraries/Utils.robot
25 Resource          ../../../libraries/VpnOperations.robot
26 Resource          ../../../variables/netvirt/Variables.robot
27 Resource          ../../../variables/Variables.robot
28
29 *** Variables ***
30 ${EGRESS}         Egress
31 ${INGRESS}        Ingress
32 ${IP}             ipv4
33 ${VNI_SECURITY_GROUP}    vni_sg
34 @{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
35 @{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
36 @{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
37 @{VNI_NET_0_PORTS}    vni_l3_net_0_port_1    vni_l3_net_0_port_2
38 @{VNI_NET_1_PORTS}    vni_l3_net_1_port_1    vni_l3_net_1_port_2
39 @{VNI_NET_2_PORTS}    vni_l3_net_2_port_1    vni_l3_net_2_port_2
40 @{VNI_NET_3_PORTS}    vni_l3_net_3_port_1    vni_l3_net_3_port_2
41 @{VNI_NET_4_PORTS}    vni_l3_net_4_port_1    vni_l3_net_4_port_2
42 @{VNI_NET_5_PORTS}    vni_l3_net_5_port_1    vni_l3_net_5_port_2
43 @{VNI_NET_0_VMS}    vni_l3_net_0_vm
44 @{VNI_NET_1_VMS}    vni_l3_net_1_vm
45 @{VNI_NET_2_VMS}    vni_l3_net_2_vm
46 @{VNI_NET_3_VMS}    vni_l3_net_3_vm
47 @{VNI_NET_4_VMS}    vni_l3_net_4_vm
48 @{VNI_NET_5_VMS}    vni_l3_net_5_vm
49 @{VNI_ROUTER}     vni_l3_router1    vni_l3_router2
50 @{VNI_BGPVPN}     vni_l3_bgpvpn
51 @{VNI_RDS}        ["2200:2"]    ["2300:2"]    ["2400:2"]    ["2500:2"]
52 @{VNI_VPN_NAMES}    vni_l3_vpn_1    vni_l3_vpn_2    vni_l3_vpn_3    vni_l3_vpn_4
53 @{VNI_VPN_INSTANCE_IDS}    4ae8cd92-48ca-49b5-94e1-b2921a261441    4ae8cd92-48ca-49b5-94e1-b2921a261442    4ae8cd92-48ca-49b5-94e1-b2921a261443    4ae8cd92-48ca-49b5-94e1-b2921a261444
54
55 *** Test Cases ***
56 VNI Based L3 Forwarding
57     [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
58     BuiltIn.Pass Execution If    "${OS_DEPLOY}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
59     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]
60     ...    @{VNI_NETWORKS}[1]    @{NET_0_VM_IPS}[0]    @{NET_1_VM_IPS}[0]    ${IP}
61
62 VNI Based L3 Forwarding With BGPVPN Router Association
63     [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
64     ...    With Router associated to a BGPVPN.
65     BuiltIn.Pass Execution If    "${OS_DEPLOY}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
66     ${net_id} =    OpenStackOperations.Get Net Id    @{VNI_NETWORKS}[0]
67     ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
68     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}
69     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VNI_VPN_INSTANCE_IDS}[0]
70     BuiltIn.Should Contain    ${resp}    @{VNI_VPN_INSTANCE_IDS}[0]
71     ${router_id} =    OpenStackOperations.Get Router Id    @{VNI_ROUTER}[0]
72     VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=@{VNI_VPN_INSTANCE_IDS}[0]
73     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VNI_VPN_INSTANCE_IDS}[0]
74     BuiltIn.Should Contain    ${resp}    ${router_id}
75     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]
76     ...    @{VNI_NETWORKS}[1]    @{NET_0_VM_IPS}[0]    @{NET_1_VM_IPS}[0]    ${IP}
77
78 VNI Based L3 Forwarding With BGPVPN Network Association
79     [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
80     ...    With Networks associated to a BGPVPN.
81     BuiltIn.Pass Execution If    "${OS_DEPLOY}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
82     OpenStackOperations.Create Network    @{VNI_NETWORKS}[2]
83     OpenStackOperations.Create Network    @{VNI_NETWORKS}[3]
84     OpenStackOperations.Create SubNet    @{VNI_NETWORKS}[2]    @{VNI_SUBNETS}[2]    @{VNI_SUBNET_CIDRS}[2]
85     OpenStackOperations.Create SubNet    @{VNI_NETWORKS}[3]    @{VNI_SUBNETS}[3]    @{VNI_SUBNET_CIDRS}[3]
86     OpenStackOperations.Create Port    @{VNI_NETWORKS}[2]    @{VNI_NET_2_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
87     OpenStackOperations.Create Port    @{VNI_NETWORKS}[3]    @{VNI_NET_3_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
88     ${net_id} =    OpenStackOperations.Get Net Id    @{VNI_NETWORKS}[2]
89     ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
90     BuiltIn.Log    @{VNI_RDS}[1]
91     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}
92     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
93     BuiltIn.Should Contain    ${resp}    @{VNI_VPN_INSTANCE_IDS}[1]
94     ${network2_id} =    OpenStackOperations.Get Net Id    @{VNI_NETWORKS}[2]
95     ${network3_id} =    OpenStackOperations.Get Net Id    @{VNI_NETWORKS}[3]
96     VpnOperations.Associate L3VPN To Network    networkid=${network2_id}    vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
97     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
98     BuiltIn.Should Contain    ${resp}    ${network2_id}
99     VpnOperations.Associate L3VPN To Network    networkid=${network3_id}    vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
100     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
101     BuiltIn.Should Contain    ${resp}    ${network3_id}
102     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}
103     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}
104     @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_2_VMS}
105     @{NET_3_VM_IPS}    ${NET_3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_3_VMS}
106     BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
107     BuiltIn.Set Suite Variable    @{NET_3_VM_IPS}
108     BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
109     BuiltIn.Should Not Contain    ${NET_3_VM_IPS}    None
110     BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
111     BuiltIn.Should Not Contain    ${NET_3_DHCP_IP}    None
112     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]
113     ...    @{VNI_NETWORKS}[3]    @{NET_2_VM_IPS}[0]    @{NET_3_VM_IPS}[0]    ${IP}
114
115 VNI Based L3 Forwarding With BGPVPN With Irt Ert
116     [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
117     ...    With two Networks associated to two BGPVPN.
118     BuiltIn.Pass Execution If    "${OS_DEPLOY}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
119     OpenStackOperations.Create Network    @{VNI_NETWORKS}[4]
120     OpenStackOperations.Create Network    @{VNI_NETWORKS}[5]
121     OpenStackOperations.Create SubNet    @{VNI_NETWORKS}[4]    @{VNI_SUBNETS}[4]    @{VNI_SUBNET_CIDRS}[4]
122     OpenStackOperations.Create SubNet    @{VNI_NETWORKS}[5]    @{VNI_SUBNETS}[5]    @{VNI_SUBNET_CIDRS}[5]
123     OpenStackOperations.Create Port    @{VNI_NETWORKS}[4]    @{VNI_NET_4_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
124     OpenStackOperations.Create Port    @{VNI_NETWORKS}[5]    @{VNI_NET_5_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
125     ${net_id} =    OpenStackOperations.Get Net Id    @{VNI_NETWORKS}[4]
126     ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
127     BuiltIn.Log    @{VNI_RDS}[2]
128     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}
129     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VNI_VPN_INSTANCE_IDS}[2]
130     BuiltIn.Should Contain    ${resp}    @{VNI_VPN_INSTANCE_IDS}[2]
131     ${network4_id} =    OpenStackOperations.Get Net Id    @{VNI_NETWORKS}[4]
132     VpnOperations.Associate L3VPN To Network    networkid=${network4_id}    vpnid=@{VNI_VPN_INSTANCE_IDS}[2]
133     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VNI_VPN_INSTANCE_IDS}[2]
134     BuiltIn.Should Contain    ${resp}    ${network4_id}
135     BuiltIn.Log    @{VNI_RDS}[3]
136     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}
137     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VNI_VPN_INSTANCE_IDS}[3]
138     BuiltIn.Should Contain    ${resp}    @{VNI_VPN_INSTANCE_IDS}[3]
139     ${network5_id} =    OpenStackOperations.Get Net Id    @{VNI_NETWORKS}[5]
140     VpnOperations.Associate L3VPN To Network    networkid=${network5_id}    vpnid=@{VNI_VPN_INSTANCE_IDS}[3]
141     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=@{VNI_VPN_INSTANCE_IDS}[3]
142     BuiltIn.Should Contain    ${resp}    ${network5_id}
143     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}
144     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}
145     @{NET_4_VM_IPS}    ${NET_4_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_4_VMS}
146     @{NET_5_VM_IPS}    ${NET_5_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_5_VMS}
147     BuiltIn.Set Suite Variable    @{NET_4_VM_IPS}
148     BuiltIn.Set Suite Variable    @{NET_5_VM_IPS}
149     BuiltIn.Should Not Contain    ${NET_4_VM_IPS}    None
150     BuiltIn.Should Not Contain    ${NET_5_VM_IPS}    None
151     BuiltIn.Should Not Contain    ${NET_4_DHCP_IP}    None
152     BuiltIn.Should Not Contain    ${NET_5_DHCP_IP}    None
153     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]
154     ...    @{VNI_NETWORKS}[5]    @{NET_4_VM_IPS}[0]    @{NET_5_VM_IPS}[0]    ${IP}
155
156 *** Keywords ***
157 Start Suite
158     [Documentation]    Create Basic setup for the feature. Creates single network, subnet, two ports and two VMs.
159     ...    Create Two VMs for TC1 : (VM1, N1, Compute1) and (VM2, N2, Compute2) and R1
160     BuiltIn.Return From Keyword If    "${OS_DEPLOY}" == "1cmb-0ctl-0cmp"
161     VpnOperations.Basic Suite Setup
162     OpenStackOperations.Create Allow All SecurityGroup    ${VNI_SECURITY_GROUP}
163     OpenStackOperations.Create Network    @{VNI_NETWORKS}[0]
164     OpenStackOperations.Create Network    @{VNI_NETWORKS}[1]
165     OpenStackOperations.Create SubNet    @{VNI_NETWORKS}[0]    @{VNI_SUBNETS}[0]    @{VNI_SUBNET_CIDRS}[0]
166     OpenStackOperations.Create SubNet    @{VNI_NETWORKS}[1]    @{VNI_SUBNETS}[1]    @{VNI_SUBNET_CIDRS}[1]
167     OpenStackOperations.Create Port    @{VNI_NETWORKS}[0]    @{VNI_NET_0_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
168     OpenStackOperations.Create Port    @{VNI_NETWORKS}[1]    @{VNI_NET_1_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
169     OpenStackOperations.Create Router    @{VNI_ROUTER}[0]
170     OpenStackOperations.Add Router Interface    @{VNI_ROUTER}[0]    @{VNI_SUBNETS}[0]
171     OpenStackOperations.Add Router Interface    @{VNI_ROUTER}[0]    @{VNI_SUBNETS}[1]
172     ${interface_output} =    OpenStackOperations.Show Router Interface    @{VNI_ROUTER}[0]
173     ${GWMAC_ADDRS}    ${GWIP_ADDRS} =    VpnOperations.Get Gateway MAC And IP Address    @{VNI_ROUTER}[0]
174     BuiltIn.Set Suite Variable    ${GWMAC_ADDRS}
175     BuiltIn.Set Suite Variable    ${GWIP_ADDRS}
176     ${router_list} =    BuiltIn.Create List    @{VNI_ROUTER}[0]
177     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}
178     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}
179     @{NET_0_VM_IPS}    ${NET_0_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_0_VMS}
180     @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_1_VMS}
181     BuiltIn.Set Suite Variable    @{NET_0_VM_IPS}
182     BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
183     BuiltIn.Should Not Contain    ${NET_0_VM_IPS}    None
184     BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
185     BuiltIn.Should Not Contain    ${NET_0_DHCP_IP}    None
186     BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
187     Get OvsDebugInfo
188
189 Stop Suite
190     BuiltIn.Return From Keyword If    "${OS_DEPLOY}" == "1cmb-0ctl-0cmp"
191     OpenStackOperations.OpenStack Suite Teardown