Update Robot Framework format - step 11
[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
12 Library             OperatingSystem
13 Library             RequestsLibrary
14 Library             String
15 Resource            ../../../libraries/DevstackUtils.robot
16 Resource            ../../../libraries/KarafKeywords.robot
17 Resource            ../../../variables/netvirt/Variables.robot
18 Resource            ../../../libraries/OpenStackOperations.robot
19 Resource            ../../../libraries/OVSDB.robot
20 Resource            ../../../libraries/SetupUtils.robot
21 Resource            ../../../libraries/Utils.robot
22 Resource            ../../../libraries/VpnOperations.robot
23 Resource            ../../../variables/netvirt/Variables.robot
24 Resource            ../../../variables/Variables.robot
25
26 Suite Setup         Suite Setup
27 Suite Teardown      Suite Teardown
28 Test Setup          VpnOperations.VNI Test Setup
29 Test Teardown       VpnOperations.VNI Test Teardown
30
31
32 *** Variables ***
33 ${EGRESS}                   Egress
34 ${INGRESS}                  Ingress
35 ${IP}                       ipv4
36 ${VNI_SECURITY_GROUP}       vni_sg
37 @{VNI_NETWORKS}
38 ...                         vni_l3_net_0
39 ...                         vni_l3_net_1
40 ...                         vni_l3_net_2
41 ...                         vni_l3_net_3
42 ...                         vni_l3_net_4
43 ...                         vni_l3_net_5
44 @{VNI_SUBNETS}
45 ...                         vni_l3_sub_0
46 ...                         vni_l3_sub_1
47 ...                         vni_l3_sub_2
48 ...                         vni_l3_sub_3
49 ...                         vni_l3_sub_4
50 ...                         vni_l3_sub_5
51 @{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
52 @{VNI_NET_0_PORTS}          vni_l3_net_0_port_1    vni_l3_net_0_port_2
53 @{VNI_NET_1_PORTS}          vni_l3_net_1_port_1    vni_l3_net_1_port_2
54 @{VNI_NET_2_PORTS}          vni_l3_net_2_port_1    vni_l3_net_2_port_2
55 @{VNI_NET_3_PORTS}          vni_l3_net_3_port_1    vni_l3_net_3_port_2
56 @{VNI_NET_4_PORTS}          vni_l3_net_4_port_1    vni_l3_net_4_port_2
57 @{VNI_NET_5_PORTS}          vni_l3_net_5_port_1    vni_l3_net_5_port_2
58 @{VNI_NET_0_VMS}            vni_l3_net_0_vm
59 @{VNI_NET_1_VMS}            vni_l3_net_1_vm
60 @{VNI_NET_2_VMS}            vni_l3_net_2_vm
61 @{VNI_NET_3_VMS}            vni_l3_net_3_vm
62 @{VNI_NET_4_VMS}            vni_l3_net_4_vm
63 @{VNI_NET_5_VMS}            vni_l3_net_5_vm
64 @{VNI_ROUTER}               vni_l3_router1    vni_l3_router2
65 @{VNI_BGPVPN}               vni_l3_bgpvpn
66 @{VNI_RDS}                  ["2200:2"]    ["2300:2"]    ["2400:2"]    ["2500:2"]
67 @{VNI_VPN_NAMES}            vni_l3_vpn_1    vni_l3_vpn_2    vni_l3_vpn_3    vni_l3_vpn_4
68 @{VNI_VPN_INSTANCE_IDS}
69 ...                         4ae8cd92-48ca-49b5-94e1-b2921a261441
70 ...                         4ae8cd92-48ca-49b5-94e1-b2921a261442
71 ...                         4ae8cd92-48ca-49b5-94e1-b2921a261443
72 ...                         4ae8cd92-48ca-49b5-94e1-b2921a261444
73
74
75 *** Test Cases ***
76 VNI Based L3 Forwarding
77     [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
78     BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
79     Wait Until Keyword Succeeds
80     ...    60s
81     ...    5s
82     ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
83     ...    ${VNI_NET_0_PORTS}[0]
84     ...    ${VNI_NET_1_PORTS}[0]
85     ...    ${VNI_NETWORKS}[0]
86     ...    ${VNI_NETWORKS}[1]
87     ...    ${NET_0_VM_IPS}[0]
88     ...    ${NET_1_VM_IPS}[0]
89     ...    ${IP}
90
91 VNI Based L3 Forwarding With BGPVPN Router Association
92     [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
93     ...    With Router associated to a BGPVPN.
94     BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
95     ${net_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[0]
96     ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
97     VpnOperations.VPN Create L3VPN
98     ...    vpnid=${VNI_VPN_INSTANCE_IDS}[0]
99     ...    name=${VNI_VPN_NAMES}[0]
100     ...    rd=${VNI_RDS}[0]
101     ...    exportrt=${VNI_RDS}[0]
102     ...    importrt=${VNI_RDS}[0]
103     ...    tenantid=${tenant_id}
104     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[0]
105     BuiltIn.Should Contain    ${resp}    ${VNI_VPN_INSTANCE_IDS}[0]
106     ${router_id} =    OpenStackOperations.Get Router Id    ${VNI_ROUTER}[0]
107     VpnOperations.Associate VPN to Router    routerid=${router_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[0]
108     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[0]
109     BuiltIn.Should Contain    ${resp}    ${router_id}
110     BuiltIn.Wait Until Keyword Succeeds
111     ...    60s
112     ...    5s
113     ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
114     ...    ${VNI_NET_0_PORTS}[0]
115     ...    ${VNI_NET_1_PORTS}[0]
116     ...    ${VNI_NETWORKS}[0]
117     ...    ${VNI_NETWORKS}[1]
118     ...    ${NET_0_VM_IPS}[0]
119     ...    ${NET_1_VM_IPS}[0]
120     ...    ${IP}
121
122 VNI Based L3 Forwarding With BGPVPN Network Association
123     [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
124     ...    With Networks associated to a BGPVPN.
125     BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
126     OpenStackOperations.Create Network    ${VNI_NETWORKS}[2]
127     OpenStackOperations.Create Network    ${VNI_NETWORKS}[3]
128     OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[2]    ${VNI_SUBNETS}[2]    ${VNI_SUBNET_CIDRS}[2]
129     OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[3]    ${VNI_SUBNETS}[3]    ${VNI_SUBNET_CIDRS}[3]
130     OpenStackOperations.Create Port    ${VNI_NETWORKS}[2]    ${VNI_NET_2_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
131     OpenStackOperations.Create Port    ${VNI_NETWORKS}[3]    ${VNI_NET_3_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
132     ${net_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[2]
133     ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
134     BuiltIn.Log    ${VNI_RDS}[1]
135     VpnOperations.VPN Create L3VPN
136     ...    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
137     ...    name=${VNI_VPN_NAMES}[1]
138     ...    rd=${VNI_RDS}[1]
139     ...    exportrt=${VNI_RDS}[1]
140     ...    importrt=${VNI_RDS}[1]
141     ...    tenantid=${tenant_id}
142     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
143     BuiltIn.Should Contain    ${resp}    ${VNI_VPN_INSTANCE_IDS}[1]
144     ${network2_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[2]
145     ${network3_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[3]
146     VpnOperations.Associate L3VPN To Network    networkid=${network2_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
147     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
148     BuiltIn.Should Contain    ${resp}    ${network2_id}
149     VpnOperations.Associate L3VPN To Network    networkid=${network3_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
150     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[1]
151     BuiltIn.Should Contain    ${resp}    ${network3_id}
152     OpenStackOperations.Create Vm Instance With Port On Compute Node
153     ...    ${VNI_NET_2_PORTS}[0]
154     ...    ${VNI_NET_2_VMS}[0]
155     ...    ${OS_CMP1_HOSTNAME}
156     ...    sg=${VNI_SECURITY_GROUP}
157     OpenStackOperations.Create Vm Instance With Port On Compute Node
158     ...    ${VNI_NET_3_PORTS}[0]
159     ...    ${VNI_NET_3_VMS}[0]
160     ...    ${OS_CMP2_HOSTNAME}
161     ...    sg=${VNI_SECURITY_GROUP}
162     @{NET_2_VM_IPS}    ${NET_2_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_2_VMS}
163     @{NET_3_VM_IPS}    ${NET_3_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_3_VMS}
164     BuiltIn.Set Suite Variable    @{NET_2_VM_IPS}
165     BuiltIn.Set Suite Variable    @{NET_3_VM_IPS}
166     BuiltIn.Should Not Contain    ${NET_2_VM_IPS}    None
167     BuiltIn.Should Not Contain    ${NET_3_VM_IPS}    None
168     BuiltIn.Should Not Contain    ${NET_2_DHCP_IP}    None
169     BuiltIn.Should Not Contain    ${NET_3_DHCP_IP}    None
170     BuiltIn.Wait Until Keyword Succeeds
171     ...    60s
172     ...    5s
173     ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
174     ...    ${VNI_NET_2_PORTS}[0]
175     ...    ${VNI_NET_3_PORTS}[0]
176     ...    ${VNI_NETWORKS}[2]
177     ...    ${VNI_NETWORKS}[3]
178     ...    ${NET_2_VM_IPS}[0]
179     ...    ${NET_3_VM_IPS}[0]
180     ...    ${IP}
181
182 VNI Based L3 Forwarding With BGPVPN With Irt Ert
183     [Documentation]    verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
184     ...    With two Networks associated to two BGPVPN.
185     BuiltIn.Pass Execution If    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    "Test is not supported for combo node"
186     OpenStackOperations.Create Network    ${VNI_NETWORKS}[4]
187     OpenStackOperations.Create Network    ${VNI_NETWORKS}[5]
188     OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[4]    ${VNI_SUBNETS}[4]    ${VNI_SUBNET_CIDRS}[4]
189     OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[5]    ${VNI_SUBNETS}[5]    ${VNI_SUBNET_CIDRS}[5]
190     OpenStackOperations.Create Port    ${VNI_NETWORKS}[4]    ${VNI_NET_4_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
191     OpenStackOperations.Create Port    ${VNI_NETWORKS}[5]    ${VNI_NET_5_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
192     ${net_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[4]
193     ${tenant_id} =    OpenStackOperations.Get Tenant ID From Network    ${net_id}
194     BuiltIn.Log    ${VNI_RDS}[2]
195     VpnOperations.VPN Create L3VPN
196     ...    vpnid=${VNI_VPN_INSTANCE_IDS}[2]
197     ...    name=${VNI_VPN_NAMES}[2]
198     ...    rd=${VNI_RDS}[2]
199     ...    exportrt=${VNI_RDS}[2]
200     ...    importrt=${VNI_RDS}[3]
201     ...    tenantid=${tenant_id}
202     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[2]
203     BuiltIn.Should Contain    ${resp}    ${VNI_VPN_INSTANCE_IDS}[2]
204     ${network4_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[4]
205     VpnOperations.Associate L3VPN To Network    networkid=${network4_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[2]
206     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[2]
207     BuiltIn.Should Contain    ${resp}    ${network4_id}
208     BuiltIn.Log    ${VNI_RDS}[3]
209     VpnOperations.VPN Create L3VPN
210     ...    vpnid=${VNI_VPN_INSTANCE_IDS}[3]
211     ...    name=${VNI_VPN_NAMES}[3]
212     ...    rd=${VNI_RDS}[3]
213     ...    exportrt=${VNI_RDS}[3]
214     ...    importrt=${VNI_RDS}[2]
215     ...    tenantid=${tenant_id}
216     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[3]
217     BuiltIn.Should Contain    ${resp}    ${VNI_VPN_INSTANCE_IDS}[3]
218     ${network5_id} =    OpenStackOperations.Get Net Id    ${VNI_NETWORKS}[5]
219     VpnOperations.Associate L3VPN To Network    networkid=${network5_id}    vpnid=${VNI_VPN_INSTANCE_IDS}[3]
220     ${resp} =    VpnOperations.VPN Get L3VPN    vpnid=${VNI_VPN_INSTANCE_IDS}[3]
221     BuiltIn.Should Contain    ${resp}    ${network5_id}
222     OpenStackOperations.Create Vm Instance With Port On Compute Node
223     ...    ${VNI_NET_4_PORTS}[0]
224     ...    ${VNI_NET_4_VMS}[0]
225     ...    ${OS_CMP1_HOSTNAME}
226     ...    sg=${VNI_SECURITY_GROUP}
227     OpenStackOperations.Create Vm Instance With Port On Compute Node
228     ...    ${VNI_NET_5_PORTS}[0]
229     ...    ${VNI_NET_5_VMS}[0]
230     ...    ${OS_CMP2_HOSTNAME}
231     ...    sg=${VNI_SECURITY_GROUP}
232     @{NET_4_VM_IPS}    ${NET_4_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_4_VMS}
233     @{NET_5_VM_IPS}    ${NET_5_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_5_VMS}
234     BuiltIn.Set Suite Variable    @{NET_4_VM_IPS}
235     BuiltIn.Set Suite Variable    @{NET_5_VM_IPS}
236     BuiltIn.Should Not Contain    ${NET_4_VM_IPS}    None
237     BuiltIn.Should Not Contain    ${NET_5_VM_IPS}    None
238     BuiltIn.Should Not Contain    ${NET_4_DHCP_IP}    None
239     BuiltIn.Should Not Contain    ${NET_5_DHCP_IP}    None
240     BuiltIn.Wait Until Keyword Succeeds
241     ...    60s
242     ...    5s
243     ...    OVSDB.Verify Vni Segmentation Id and Tunnel Id
244     ...    ${VNI_NET_4_PORTS}[0]
245     ...    ${VNI_NET_5_PORTS}[0]
246     ...    ${VNI_NETWORKS}[4]
247     ...    ${VNI_NETWORKS}[5]
248     ...    ${NET_4_VM_IPS}[0]
249     ...    ${NET_5_VM_IPS}[0]
250     ...    ${IP}
251
252
253 *** Keywords ***
254 Suite Setup
255     [Documentation]    Create Basic setup for the feature. Creates single network, subnet, two ports and two VMs.
256     ...    Create Two VMs for TC1 : (VM1, N1, Compute1) and (VM2, N2, Compute2) and R1
257     IF    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    RETURN
258     VpnOperations.Basic Suite Setup
259     OpenStackOperations.Create Allow All SecurityGroup    ${VNI_SECURITY_GROUP}
260     OpenStackOperations.Create Network    ${VNI_NETWORKS}[0]
261     OpenStackOperations.Create Network    ${VNI_NETWORKS}[1]
262     OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[0]    ${VNI_SUBNETS}[0]    ${VNI_SUBNET_CIDRS}[0]
263     OpenStackOperations.Create SubNet    ${VNI_NETWORKS}[1]    ${VNI_SUBNETS}[1]    ${VNI_SUBNET_CIDRS}[1]
264     OpenStackOperations.Create Port    ${VNI_NETWORKS}[0]    ${VNI_NET_0_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
265     OpenStackOperations.Create Port    ${VNI_NETWORKS}[1]    ${VNI_NET_1_PORTS}[0]    sg=${VNI_SECURITY_GROUP}
266     OpenStackOperations.Create Router    ${VNI_ROUTER}[0]
267     OpenStackOperations.Add Router Interface    ${VNI_ROUTER}[0]    ${VNI_SUBNETS}[0]
268     OpenStackOperations.Add Router Interface    ${VNI_ROUTER}[0]    ${VNI_SUBNETS}[1]
269     ${interface_output} =    OpenStackOperations.Show Router Interface    ${VNI_ROUTER}[0]
270     ${GWMAC_ADDRS}    ${GWIP_ADDRS} =    VpnOperations.Get Gateway MAC And IP Address    ${VNI_ROUTER}[0]
271     BuiltIn.Set Suite Variable    ${GWMAC_ADDRS}
272     BuiltIn.Set Suite Variable    ${GWIP_ADDRS}
273     ${router_list} =    BuiltIn.Create List    ${VNI_ROUTER}[0]
274     OpenStackOperations.Create Vm Instance With Port On Compute Node
275     ...    ${VNI_NET_0_PORTS}[0]
276     ...    ${VNI_NET_0_VMS}[0]
277     ...    ${OS_CMP1_HOSTNAME}
278     ...    sg=${VNI_SECURITY_GROUP}
279     OpenStackOperations.Create Vm Instance With Port On Compute Node
280     ...    ${VNI_NET_1_PORTS}[0]
281     ...    ${VNI_NET_1_VMS}[0]
282     ...    ${OS_CMP2_HOSTNAME}
283     ...    sg=${VNI_SECURITY_GROUP}
284     @{NET_0_VM_IPS}    ${NET_0_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_0_VMS}
285     @{NET_1_VM_IPS}    ${NET_1_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{VNI_NET_1_VMS}
286     BuiltIn.Set Suite Variable    @{NET_0_VM_IPS}
287     BuiltIn.Set Suite Variable    @{NET_1_VM_IPS}
288     BuiltIn.Should Not Contain    ${NET_0_VM_IPS}    None
289     BuiltIn.Should Not Contain    ${NET_1_VM_IPS}    None
290     BuiltIn.Should Not Contain    ${NET_0_DHCP_IP}    None
291     BuiltIn.Should Not Contain    ${NET_1_DHCP_IP}    None
292     OpenStackOperations.Show Debugs    @{VNI_NET_0_VMS}    @{VNI_NET_1_VMS}
293     OpenStackOperations.Get Suite Debugs
294
295 Suite Teardown
296     IF    "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"    RETURN
297     OpenStackOperations.OpenStack Suite Teardown