2 Documentation Test suite to validate vpnservice functionality in an openstack integrated environment.
3 ... The assumption of this suite is that the environment is already configured with the proper
4 ... integration bridges and vxlan tunnels.
6 Library OperatingSystem
7 Library RequestsLibrary
8 Resource ../../../libraries/CompareStream.robot
9 Resource ../../../libraries/Utils.robot
10 Resource ../../../libraries/OpenStackOperations.robot
11 Resource ../../../libraries/DevstackUtils.robot
12 Resource ../../../libraries/VpnOperations.robot
13 Resource ../../../libraries/OVSDB.robot
14 Resource ../../../libraries/SetupUtils.robot
15 Resource ../../../libraries/Tcpdump.robot
16 Resource ../../../variables/Variables.robot
17 Resource ../../../variables/netvirt/Variables.robot
19 Suite Setup Suite Setup
20 Suite Teardown Suite Teardown
21 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
22 Test Teardown OpenStackOperations.Get Test Teardown Debugs
26 ${SECURITY_GROUP} vpn_sg
27 @{NETWORKS} vpn_net_1 vpn_net_2
28 @{SUBNETS} vpn_sub_1 vpn_sub_2
29 @{SUBNET_CIDRS} 10.1.1.0/24 20.1.1.0/24
30 @{PORTS} vpn_net_1_port_1 vpn_net_1_port_2 vpn_net_2_port_1 vpn_net_2_port_2
31 @{NET_1_VMS} vpn_net_1_vm_1 vpn_net_1_vm_2
32 @{NET_2_VMS} vpn_net_2_vm_1 vpn_net_2_vm_2
34 @{EXTRA_NW_IP} 71.1.1.2 72.1.1.2
35 @{EXTRA_NW_SUBNET} 71.1.1.0/24 72.1.1.0/24
36 ${UPDATE_NETWORK} UpdateNetwork
37 ${UPDATE_SUBNET} UpdateSubnet
38 ${UPDATE_PORT} UpdatePort
40 ... 4ae8cd92-48ca-49b5-94e1-b2921a261441
41 ... 4ae8cd92-48ca-49b5-94e1-b2921a261442
42 ... 4ae8cd92-48ca-49b5-94e1-b2921a261443
43 @{VPN_NAMES} vpn_1 vpn_2 vpn_3
44 @{RDS} ["2200:2"] ["2300:2"] ["2400:2"]
45 ${PORT_NEW} vpn_net_1_port_new
46 ${VM_NAME_NEW} vpn_net_1_vm_new
47 ${INVALID_VPN_INSTANCE_ID} AAAAAAAAAA-4848-4949-9494-666666666666
51 Check ELAN Datapath Traffic Within The Networks
52 [Documentation] Checks datapath within the same network with different vlans.
53 ${output} = OpenStackOperations.Execute Command on VM Instance
55 ... ${NET_1_VM_IPS}[0]
56 ... ping -c 3 ${NET_1_VM_IPS}[1]
57 BuiltIn.Should Contain ${output} 64 bytes
58 ${output} = OpenStackOperations.Execute Command on VM Instance
60 ... ${NET_2_VM_IPS}[0]
61 ... ping -c 3 ${NET_2_VM_IPS}[1]
62 BuiltIn.Should Contain ${output} 64 bytes
65 OpenStackOperations.Create Router ${ROUTER}
66 ${router_list} = BuiltIn.Create List ${ROUTER}
67 BuiltIn.Wait Until Keyword Succeeds
70 ... Utils.Check For Elements At URI
74 Add Interfaces To Router
75 FOR ${interface} IN @{SUBNETS}
76 OpenStackOperations.Add Router Interface ${ROUTER} ${interface}
78 ${interface_output} = OpenStackOperations.Show Router Interface ${ROUTER}
79 ${GWMAC_ADDRS} ${GWIP_ADDRS} = VpnOperations.Get Gateway MAC And IP Address ${ROUTER}
80 BuiltIn.Set Suite Variable ${GWMAC_ADDRS}
81 BuiltIn.Set Suite Variable ${GWIP_ADDRS}
83 Check L3_Datapath Traffic Across Networks With Router
84 @{tcpdump_conn_ids} = OpenStackOperations.Start Packet Capture On Nodes
88 ${vm_ips} = BuiltIn.Create List @{NET_1_VM_IPS} @{NET_2_VM_IPS}
89 BuiltIn.Wait Until Keyword Succeeds
92 ... Utils.Check For Elements At URI
95 Verify Flows Are Present For L3VPN On All Compute Nodes ${vm_ips}
96 BuiltIn.Wait Until Keyword Succeeds 30s 10s VpnOperations.Verify GWMAC Entry On ODL ${GWMAC_ADDRS}
97 Verify GWMAC Flow Entry On Flow Table On All Compute Nodes
98 ${dst_ip_list} = BuiltIn.Create List ${NET_1_VM_IPS}[1] @{NET_2_VM_IPS}
99 OpenStackOperations.Test Operations From Vm Instance ${NETWORKS}[0] ${NET_1_VM_IPS}[0] ${dst_ip_list}
100 ${dst_ip_list} = BuiltIn.Create List ${NET_2_VM_IPS}[1] @{NET_1_VM_IPS}
101 OpenStackOperations.Test Operations From Vm Instance ${NETWORKS}[1] ${NET_2_VM_IPS}[0] ${dst_ip_list}
102 [Teardown] VpnOperations.Test Teardown With Tcpdump Stop ${tcpdump_conn_ids}
104 Add Multiple Extra Routes And Check Datapath Before L3VPN Creation
105 ${CONFIG_EXTRA_ROUTE_IP1} = BuiltIn.Catenate sudo ifconfig eth0:1 ${EXTRA_NW_IP}[0] netmask 255.255.255.0 up
106 ${output} = OpenStackOperations.Execute Command on VM Instance
108 ... ${NET_1_VM_IPS}[0]
109 ... ${CONFIG_EXTRA_ROUTE_IP1}
110 ${CONFIG_EXTRA_ROUTE_IP2} = BuiltIn.Catenate sudo ifconfig eth0:2 ${EXTRA_NW_IP}[1] netmask 255.255.255.0 up
111 ${output} = OpenStackOperations.Execute Command on VM Instance
113 ... ${NET_1_VM_IPS}[0]
114 ... ${CONFIG_EXTRA_ROUTE_IP2}
115 ${output} = OpenStackOperations.Execute Command on VM Instance
117 ... ${NET_1_VM_IPS}[0]
119 ${ext_rt1} = BuiltIn.Set Variable destination=${EXTRA_NW_SUBNET}[0],gateway=${NET_1_VM_IPS}[0]
120 ${ext_rt2} = BuiltIn.Set Variable destination=${EXTRA_NW_SUBNET}[1],gateway=${NET_1_VM_IPS}[0]
121 ${cmd} = BuiltIn.Catenate ${RT_OPTIONS} ${ext_rt1} ${RT_OPTIONS} ${ext_rt2}
122 OpenStackOperations.Update Router ${ROUTER} ${cmd}
123 OpenStackOperations.Show Router ${ROUTER}
124 ${vm_ips} = BuiltIn.Create List @{EXTRA_NW_SUBNET}
125 BuiltIn.Wait Until Keyword Succeeds
128 ... Utils.Check For Elements At URI
131 ${output} = OpenStackOperations.Execute Command on VM Instance
133 ... ${NET_1_VM_IPS}[1]
134 ... ping -c 3 ${EXTRA_NW_IP}[1]
135 BuiltIn.Should Contain ${output} 64 bytes
136 ${output} = OpenStackOperations.Execute Command on VM Instance
138 ... ${NET_2_VM_IPS}[1]
139 ... ping -c 3 ${EXTRA_NW_IP}[1]
140 BuiltIn.Should Contain ${output} 64 bytes
141 ${output} = OpenStackOperations.Execute Command on VM Instance
143 ... ${NET_1_VM_IPS}[1]
144 ... ping -c 3 ${EXTRA_NW_IP}[0]
145 BuiltIn.Should Contain ${output} 64 bytes
148 OpenStackOperations.Update Router ${ROUTER} ${RT_CLEAR}
149 OpenStackOperations.Show Router ${ROUTER}
151 Delete And Recreate Extra Route
152 [Documentation] Recreate multiple extra route and check data path before L3VPN creation
153 ${CONFIG_EXTRA_ROUTE_IP1} = BuiltIn.Catenate sudo ifconfig eth0:1 ${EXTRA_NW_IP}[0] netmask 255.255.255.0 up
154 ${output} = OpenStackOperations.Execute Command on VM Instance
156 ... ${NET_1_VM_IPS}[0]
157 ... ${CONFIG_EXTRA_ROUTE_IP1}
158 ${ext_rt1} = BuiltIn.Set Variable destination=${EXTRA_NW_SUBNET}[0],gateway=${NET_1_VM_IPS}[0]
159 ${cmd} = BuiltIn.Catenate ${RT_OPTIONS} ${ext_rt1}
160 OpenStackOperations.Update Router ${ROUTER} ${cmd}
161 OpenStackOperations.Show Router ${ROUTER}
162 ${output} = OpenStackOperations.Execute Command on VM Instance
164 ... ${NET_1_VM_IPS}[1]
165 ... ping -c 3 ${EXTRA_NW_IP}[0]
166 BuiltIn.Should Contain ${output} 64 bytes
167 # clear off extra-routes before the next set of tests
168 [Teardown] BuiltIn.Run Keywords OpenStackOperations.Update Router ${ROUTER} ${RT_CLEAR}
169 ... AND OpenStackOperations.Show Router ${ROUTER}
170 ... AND OpenStackOperations.Get Test Teardown Debugs
173 ${net_id} = OpenStackOperations.Get Net Id ${NETWORKS}[0]
174 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
175 BuiltIn.Log ${RDS}[0]
176 VpnOperations.VPN Create L3VPN
177 ... vpnid=${VPN_INSTANCE_IDS}[0]
178 ... name=${VPN_NAMES}[0]
180 ... exportrt=${RDS}[0]
181 ... importrt=${RDS}[0]
182 ... tenantid=${tenant_id}
183 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
184 BuiltIn.Should Contain ${resp} ${VPN_INSTANCE_IDS}[0]
186 Associate L3VPN To Routers
187 ${router_id} = OpenStackOperations.Get Router Id ${ROUTER}
188 VpnOperations.Associate VPN to Router routerid=${router_id} vpnid=${VPN_INSTANCE_IDS}[0]
189 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
190 BuiltIn.Should Contain ${resp} ${router_id}
192 Verify L3VPN Datapath With Router Association
193 ${vm_ips} = BuiltIn.Create List @{NET_1_VM_IPS} @{NET_2_VM_IPS}
194 CompareStream.Run_Keyword_If_Less_Than_Magnesium
195 ... BuiltIn.Wait Until Keyword Succeeds
198 ... Utils.Check For Elements At URI
199 ... ${VPN_IFACES_URL}
201 CompareStream.Run_Keyword_If_At_Least_Magnesium
202 ... BuiltIn.Wait Until Keyword Succeeds
205 ... Utils.Check For Elements At URI
206 ... ${VPN_INST_IFACES_URL}
208 ${RD} = Strip String ${RDS}[0] characters="[]
209 BuiltIn.Wait Until Keyword Succeeds
212 ... Utils.Check For Elements At URI
213 ... ${CONFIG_API}/odl-fib:fibEntries/vrfTables/${RD}/
215 Verify Flows Are Present For L3VPN On All Compute Nodes ${vm_ips}
216 BuiltIn.Wait Until Keyword Succeeds 30s 15s VpnOperations.Verify GWMAC Entry On ODL ${GWMAC_ADDRS}
217 Verify GWMAC Flow Entry On Flow Table On All Compute Nodes
218 BuiltIn.Log Check datapath from network1 to network2
219 ${dst_ip_list} = BuiltIn.Create List ${NET_1_VM_IPS}[1] @{NET_2_VM_IPS}
220 OpenStackOperations.Test Operations From Vm Instance ${NETWORKS}[0] ${NET_1_VM_IPS}[0] ${dst_ip_list}
221 BuiltIn.Log Check datapath from network2 to network1
222 ${dst_ip_list} = BuiltIn.Create List ${NET_2_VM_IPS}[1] @{NET_1_VM_IPS}
223 OpenStackOperations.Test Operations From Vm Instance ${NETWORKS}[1] ${NET_2_VM_IPS}[0] ${dst_ip_list}
225 Delete Router Failure When Associated With L3VPN
226 ${router_id} = OpenStackOperations.Get Router Id ${ROUTER}
227 ${rc} ${output} = Run And Return Rc And Output openstack router delete ${ROUTER}
228 BuiltIn.Should Match Regexp ${output} Failed to delete router.*${ROUTER}
229 BuiltIn.Should Be True '${rc}' == '1'
230 ${router_output} = OpenStackOperations.List Routers
231 BuiltIn.Should Contain ${router_output} ${ROUTER}
232 @{router_list} = BuiltIn.Create List ${ROUTER}
233 BuiltIn.Wait Until Keyword Succeeds
236 ... Utils.Check For Elements At URI
239 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
240 BuiltIn.Should Contain ${resp} ${router_id}
241 Verify GWMAC Flow Entry On Flow Table On All Compute Nodes
243 Verify Remove Interface From Router When Associated With L3VPN
244 OpenStackOperations.Remove Interface ${ROUTER} ${SUBNETS}[0]
245 OpenStackOperations.Test Operations From Vm Instance ${NETWORKS}[0] ${NET_1_VM_IPS}[0] ${NET_1_VM_IPS}
246 OpenStackOperations.Test Operations From Vm Instance
248 ... ${NET_1_VM_IPS}[0]
250 ... ping_should_succeed=False
252 Verify L3VPN Datapath With Router Dissociation When Interfaces are Added To Router
253 OpenStackOperations.Add Router Interface ${ROUTER} ${SUBNETS}[0]
254 ${vm_ips} = BuiltIn.Create List @{NET_1_VM_IPS} @{NET_2_VM_IPS}
255 ${router_id} = OpenStackOperations.Get Router Id ${ROUTER}
256 VpnOperations.Dissociate VPN to Router routerid=${router_id} vpnid=${VPN_INSTANCE_IDS}[0]
257 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
258 BuiltIn.Should Not Contain ${resp} ${router_id}
259 Verify Flows Are Present For L3VPN On All Compute Nodes ${vm_ips}
260 ${dst_ip_list} = BuiltIn.Create List ${NET_1_VM_IPS}[1] @{NET_2_VM_IPS}
261 OpenStackOperations.Test Operations From Vm Instance ${NETWORKS}[0] ${NET_1_VM_IPS}[0] ${dst_ip_list}
262 BuiltIn.Log Check datapath from network2 to network1
263 ${dst_ip_list} = BuiltIn.Create List ${NET_2_VM_IPS}[1] @{NET_1_VM_IPS}
264 BuiltIn.Wait Until Keyword Succeeds
267 ... OpenStackOperations.Test Operations From Vm Instance
269 ... ${NET_2_VM_IPS}[0]
272 Remove Router Interfaces And Check L3_Datapath Traffic Across Networks
273 ${router_id} = OpenStackOperations.Get Router Id ${ROUTER}
274 FOR ${INTERFACE} IN @{SUBNETS}
275 OpenStackOperations.Remove Interface ${ROUTER} ${INTERFACE}
276 OpenStackOperations.Test Operations From Vm Instance ${NETWORKS}[0] ${NET_1_VM_IPS}[0] ${NET_1_VM_IPS}
277 OpenStackOperations.Test Operations From Vm Instance
279 ... ${NET_1_VM_IPS}[0]
281 ... ping_should_succeed=False
283 ${interface_output} = OpenStackOperations.Show Router Interface ${ROUTER}
284 FOR ${INTERFACE} IN @{SUBNETS}
285 ${subnet_id} = OpenStackOperations.Get Subnet Id ${INTERFACE}
286 BuiltIn.Should Not Contain ${interface_output} ${subnet_id}
290 Delete Router ${ROUTER}
291 ${router_output} = OpenStackOperations.List Routers
292 BuiltIn.Should Not Contain ${router_output} ${ROUTER}
293 @{router_list} = BuiltIn.Create List ${ROUTER}
294 BuiltIn.Wait Until Keyword Succeeds
297 ... Utils.Check For Elements Not At URI
300 ... check_for_null=True
301 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
302 BuiltIn.Should Not Contain ${resp} ${ROUTER}
303 Verify GWMAC Flow Entry Removed From Flow Table On All Compute Nodes
305 Delete Router With NonExistentRouter Name
306 [Documentation] Delete router with nonExistentRouter name
307 ${result} = Process.Run Process openstack router delete nonExistentRouter shell=True
308 BuiltIn.Log ${result.stdout}
309 BuiltIn.Log ${result.stderr}
310 BuiltIn.Should Be True '${result.rc}' == '1'
311 BuiltIn.Should Match Regexp
313 ... Failed to delete router with name or ID 'nonExistentRouter': No Router found for nonExistentRouter
315 Associate Networks To L3VPN
316 [Documentation] Associates L3VPN to networks and verify
317 ${network1_id} = OpenStackOperations.Get Net Id ${NETWORKS}[0]
318 ${network2_id} = OpenStackOperations.Get Net Id ${NETWORKS}[1]
319 VpnOperations.Associate L3VPN To Network networkid=${network1_id} vpnid=${VPN_INSTANCE_IDS}[0]
320 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
321 BuiltIn.Should Contain ${resp} ${network1_id}
322 VpnOperations.Associate L3VPN To Network networkid=${network2_id} vpnid=${VPN_INSTANCE_IDS}[0]
323 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
324 BuiltIn.Should Contain ${resp} ${network2_id}
326 Check Datapath Traffic Across Networks With L3VPN
327 [Documentation] Datapath Test Across the networks with VPN.
328 ${output} = OpenStackOperations.Execute Command on VM Instance
330 ... ${NET_1_VM_IPS}[0]
331 ... ping -c 20 ${NET_1_VM_IPS}[1]
332 BuiltIn.Should Contain ${output} 64 bytes
333 ${output} = OpenStackOperations.Execute Command on VM Instance
335 ... ${NET_1_VM_IPS}[0]
336 ... ping -c 20 ${NET_2_VM_IPS}[1]
337 BuiltIn.Should Contain ${output} 64 bytes
338 ${output} = OpenStackOperations.Execute Command on VM Instance
340 ... ${NET_1_VM_IPS}[0]
341 ... ping -c 20 ${NET_2_VM_IPS}[0]
342 BuiltIn.Should Contain ${output} 64 bytes
344 Verification of route update after VM port removed and re added to VPN
345 [Documentation] Verify route update after VM port removed and re added to VPN
346 OpenStackOperations.Delete Port ${PORTS}[0]
347 ${net_list} = BuiltIn.Create List ${NET_1_VM_IPS[0]}
348 BuiltIn.Wait Until Keyword Succeeds
351 ... Utils.Check For Elements Not At URI
354 OpenStackOperations.Delete Vm Instance ${NET_1_VMS}[0]
355 OpenStackOperations.Create Port ${NETWORKS}[0] ${PORTS}[0] sg=${SECURITY_GROUP}
356 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${PORT_URL} ${PORTS}
357 OpenStackOperations.Create Vm Instance With Port On Compute Node
360 ... ${OS_CMP1_HOSTNAME}
361 ... sg=${SECURITY_GROUP}
362 OpenStackOperations.Poll VM Is ACTIVE ${NET_1_VMS}[0]
363 ${status} ${ips_and_console_log} = BuiltIn.Run Keyword And Ignore Error
364 ... BuiltIn.Wait Until Keyword Succeeds
367 ... OpenStackOperations.Get VM IP
370 @{NET_1_VM_IPS} ${NET_1_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_1_VMS}
371 BuiltIn.Set Suite Variable @{NET_1_VM_IPS}
372 BuiltIn.Wait Until Keyword Succeeds
375 ... Utils.Check For Elements At URI
378 ${output} = OpenStackOperations.Execute Command on VM Instance
380 ... ${NET_1_VM_IPS}[0]
381 ... ping -c 10 ${NET_1_VM_IPS}[1]
382 BuiltIn.Should Contain ${output} 64 bytes
383 ${output} = OpenStackOperations.Execute Command on VM Instance
385 ... ${NET_1_VM_IPS}[0]
386 ... ping -c 10 ${NET_2_VM_IPS}[0]
387 BuiltIn.Should Contain ${output} 64 bytes
389 Verification of route update after reconfiguring vpn by adding new ports
390 [Documentation] Verify route update after reconfiguring vpn by creating new VM with new port on openvswitch1
391 OpenStackOperations.Create Port ${NETWORKS}[0] ${PORT_NEW} sg=${SECURITY_GROUP}
392 OpenStackOperations.Create Vm Instance With Port On Compute Node
395 ... ${OS_CMP1_HOSTNAME}
396 ... sg=${SECURITY_GROUP}
397 OpenStackOperations.Poll VM Is ACTIVE ${VM_NAME_NEW}
398 ${status} ${ips_and_console_log} = BuiltIn.Run Keyword And Ignore Error
399 ... BuiltIn.Wait Until Keyword Succeeds
402 ... OpenStackOperations.Get VM IP
405 ${output} = VpnOperations.Get Fib Entries session
406 BuiltIn.Should Contain ${output} ${ips_and_console_log[0]}
407 OpenStackOperations.Delete Vm Instance ${VM_NAME_NEW}
408 OpenStackOperations.Delete Port ${PORT_NEW}
410 Dissociate L3VPN From Networks
411 [Documentation] Dissociate L3VPN from networks
412 ${network1_id} = OpenStackOperations.Get Net Id ${NETWORKS}[0]
413 ${network2_id} = OpenStackOperations.Get Net Id ${NETWORKS}[1]
414 VpnOperations.Dissociate L3VPN From Networks networkid=${network1_id} vpnid=${VPN_INSTANCE_IDS}[0]
415 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
416 BuiltIn.Should Not Contain ${resp} ${network1_id}
417 VpnOperations.Dissociate L3VPN From Networks networkid=${network2_id} vpnid=${VPN_INSTANCE_IDS}[0]
418 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
419 BuiltIn.Should Not Contain ${resp} ${network2_id}
422 [Documentation] Verification of a failure response with deletion of an unknown L3VPN
423 ${status} ${message} = BuiltIn.Run Keyword And Ignore Error
424 ... VpnOperations.VPN Delete L3VPN
425 ... vpnid=${INVALID_VPN_INSTANCE_ID}
426 BuiltIn.Should Contain ${status} FAIL
429 [Documentation] Delete L3VPN
430 VpnOperations.VPN Delete L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
432 Create Multiple L3VPN
433 [Documentation] Creates three L3VPNs and then verify the same
434 ${net_id} = OpenStackOperations.Get Net Id ${NETWORKS}[0]
435 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
436 VpnOperations.VPN Create L3VPN
437 ... vpnid=${VPN_INSTANCE_IDS}[0]
438 ... name=${VPN_NAMES}[0]
440 ... exportrt=${RDS}[0]
441 ... importrt=${RDS}[0]
442 ... tenantid=${tenant_id}
443 VpnOperations.VPN Create L3VPN
444 ... vpnid=${VPN_INSTANCE_IDS}[1]
445 ... name=${VPN_NAMES}[1]
447 ... exportrt=${RDS}[1]
448 ... importrt=${RDS}[1]
449 ... tenantid=${tenant_id}
450 VpnOperations.VPN Create L3VPN
451 ... vpnid=${VPN_INSTANCE_IDS}[2]
452 ... name=${VPN_NAMES}[2]
454 ... exportrt=${RDS}[2]
455 ... importrt=${RDS}[2]
456 ... tenantid=${tenant_id}
457 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
458 BuiltIn.Should Contain ${resp} ${VPN_INSTANCE_IDS}[0]
459 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[1]
460 BuiltIn.Should Contain ${resp} ${VPN_INSTANCE_IDS}[1]
461 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VPN_INSTANCE_IDS}[2]
462 BuiltIn.Should Contain ${resp} ${VPN_INSTANCE_IDS}[2]
467 VpnOperations.Basic Suite Setup
468 OpenStackOperations.Create Network ${NETWORKS}[0]
469 OpenStackOperations.Create Network ${NETWORKS}[1]
470 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${NETWORK_URL} ${NETWORKS}
471 OpenStackOperations.Update Network ${NETWORKS}[0] additional_args=--description ${UPDATE_NETWORK}
472 ${output} = OpenStackOperations.Show Network ${NETWORKS}[0]
473 BuiltIn.Should Contain ${output} ${UPDATE_NETWORK}
474 OpenStackOperations.Create SubNet ${NETWORKS}[0] ${SUBNETS}[0] ${SUBNET_CIDRS}[0]
475 OpenStackOperations.Create SubNet ${NETWORKS}[1] ${SUBNETS}[1] ${SUBNET_CIDRS}[1]
476 BuiltIn.Wait Until Keyword Succeeds
479 ... Utils.Check For Elements At URI
480 ... ${SUBNETWORK_URL}
482 OpenStackOperations.Update SubNet ${SUBNETS}[0] additional_args=--description ${UPDATE_SUBNET}
483 ${output} = OpenStackOperations.Show SubNet ${SUBNETS}[0]
484 BuiltIn.Should Contain ${output} ${UPDATE_SUBNET}
485 OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP}
486 ${allowed_address_pairs_args} = BuiltIn.Set Variable
487 ... --allowed-address ip-address=${EXTRA_NW_SUBNET}[0] --allowed-address ip-address=${EXTRA_NW_SUBNET}[1]
491 ... sg=${SECURITY_GROUP}
492 ... additional_args=${allowed_address_pairs_args}
496 ... sg=${SECURITY_GROUP}
497 ... additional_args=${allowed_address_pairs_args}
501 ... sg=${SECURITY_GROUP}
502 ... additional_args=${allowed_address_pairs_args}
506 ... sg=${SECURITY_GROUP}
507 ... additional_args=${allowed_address_pairs_args}
508 Wait Until Keyword Succeeds 3s 1s Check For Elements At URI ${PORT_URL} ${PORTS}
509 ${PORTS_MACADDR} = Get Ports MacAddr ${PORTS}
510 Set Suite Variable ${PORTS_MACADDR}
511 Update Port ${PORTS}[0] additional_args=--description ${UPDATE_PORT}
512 ${output} = Show Port ${PORTS}[0]
513 Should Contain ${output} ${UPDATE_PORT}
514 OpenStackOperations.Create Vm Instance With Port On Compute Node
517 ... ${OS_CMP1_HOSTNAME}
518 ... sg=${SECURITY_GROUP}
519 OpenStackOperations.Create Vm Instance With Port On Compute Node
522 ... ${OS_CMP2_HOSTNAME}
523 ... sg=${SECURITY_GROUP}
524 OpenStackOperations.Create Vm Instance With Port On Compute Node
527 ... ${OS_CMP1_HOSTNAME}
528 ... sg=${SECURITY_GROUP}
529 OpenStackOperations.Create Vm Instance With Port On Compute Node
532 ... ${OS_CMP2_HOSTNAME}
533 ... sg=${SECURITY_GROUP}
534 @{NET_1_VM_IPS} ${NET_1_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_1_VMS}
535 @{NET_2_VM_IPS} ${NET_2_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_2_VMS}
536 BuiltIn.Set Suite Variable @{NET_1_VM_IPS}
537 BuiltIn.Set Suite Variable @{NET_2_VM_IPS}
538 BuiltIn.Should Not Contain ${NET_1_VM_IPS} None
539 BuiltIn.Should Not Contain ${NET_2_VM_IPS} None
540 BuiltIn.Should Not Contain ${NET_1_DHCP_IP} None
541 BuiltIn.Should Not Contain ${NET_2_DHCP_IP} None
542 BuiltIn.Wait Until Keyword Succeeds 30s 10s Wait For Routes To Propogate ${NETWORKS} ${SUBNET_CIDRS}
543 OpenStackOperations.Show Debugs @{NET_1_VMS} @{NET_2_VMS}
544 OpenStackOperations.Get Suite Debugs
547 [Documentation] Delete the setup
548 BuiltIn.Run Keyword And Ignore Error VpnOperations.VPN Delete L3VPN vpnid=${VPN_INSTANCE_IDS}[0]
549 BuiltIn.Run Keyword And Ignore Error VpnOperations.VPN Delete L3VPN vpnid=${VPN_INSTANCE_IDS}[1]
550 BuiltIn.Run Keyword And Ignore Error VpnOperations.VPN Delete L3VPN vpnid=${VPN_INSTANCE_IDS}[2]
551 OpenStackOperations.OpenStack Suite Teardown