X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fnetvirt%2Fvpnservice%2Fvpn_basic_ipv6.robot;h=b5547c45731f929f6b124f149e8f12c38d3866e8;hb=0a7b377645f729d94c7e19cf93b3eb13836f6bdd;hp=ba02bbde191970a685b9bdd2c0a5d0e0fc3c00f5;hpb=a3363ed8873315380a6186c370b2291ce336ca63;p=integration%2Ftest.git diff --git a/csit/suites/netvirt/vpnservice/vpn_basic_ipv6.robot b/csit/suites/netvirt/vpnservice/vpn_basic_ipv6.robot index ba02bbde19..b5547c4573 100644 --- a/csit/suites/netvirt/vpnservice/vpn_basic_ipv6.robot +++ b/csit/suites/netvirt/vpnservice/vpn_basic_ipv6.robot @@ -2,8 +2,8 @@ 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. -Suite Setup VpnOperations.Basic Suite Setup -Suite Teardown OpenStackOperations.OpenStack Suite Teardown +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 Library OperatingSystem @@ -37,86 +37,6 @@ ${UPDATE_PORT} UpdatePortV6 @{RDS} ["2206:2"] ["2306:2"] ["2406:2"] *** Test Cases *** -Create Neutron Networks - 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} - -Create Neutron Subnets - ${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} - -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} - ${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} - ${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} - -Add Ssh V6 Allow All Rule - OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP} IPv6 - -Create Neutron Ports - ${allowed_address_pairs_args}= Set Variable If '${OPENSTACK_BRANCH}'=='stable/newton' --allowed-address ip_address=@{EXTRA_NW_SUBNET}[0] --allowed-address ip_address=@{EXTRA_NW_SUBNET}[1] --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] - -Create Nova VMs - OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[0] @{NET_1_VMS}[0] ${OS_COMPUTE_1_IP} sg=${SECURITY_GROUP} - OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[1] @{NET_1_VMS}[1] ${OS_COMPUTE_2_IP} sg=${SECURITY_GROUP} - OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[2] @{NET_2_VMS}[0] ${OS_COMPUTE_1_IP} sg=${SECURITY_GROUP} - OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[3] @{NET_2_VMS}[1] ${OS_COMPUTE_2_IP} sg=${SECURITY_GROUP} - ${vms}= BuiltIn.Create List @{NET_1_VMS} @{NET_2_VMS} - : FOR ${vm} IN @{vms} - \ OpenStackOperations.Poll VM Is ACTIVE ${vm} - 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 - \ Run Keyword If '${status}' == 'FAIL' DevstackUtils.Write Commands Until Prompt openstack console log show @{VM_INSTANCES}[${index}] 30s - 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 - [Teardown] BuiltIn.Run Keywords OpenStackOperations.Show Debugs @{NET_1_VMS} @{NET_2_VMS} - ... AND OpenStackOperations.Get Test Teardown Debugs - 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 @@ -125,21 +45,18 @@ Check ELAN Datapath Traffic Within The Networks Check L3_Datapath Traffic Across Networks With Router BuiltIn.Log Verification of FIB Entries and Flow - ${cn1_conn_id} = Tcpdump.Start Packet Capture on Node ${OS_COMPUTE_1_IP} file_Name=tcpDumpCN1 - ${cn2_conn_id} = Tcpdump.Start Packet Capture on Node ${OS_COMPUTE_2_IP} file_Name=tcpDumpCN2 - ${os_conn_id} = Tcpdump.Start Packet Capture on Node ${OS_CONTROL_NODE_IP} file_Name=tcpDumpOS + @{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_COMPUTE_1_IP} ${VM_IP_NET10} - BuiltIn.Wait Until Keyword Succeeds 30s 10s VpnOperations.Verify Flows Are Present For L3VPN ${OS_COMPUTE_1_IP} ${VM_IP_NET20} + 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} - BuiltIn.Wait Until Keyword Succeeds 30s 10s VpnOperations.Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_1_IP} ipv6 - BuiltIn.Wait Until Keyword Succeeds 30s 10s VpnOperations.Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_2_IP} ipv6 + 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 ${cn1_conn_id} ${cn2_conn_id} ${os_conn_id} + [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 @@ -196,15 +113,13 @@ Associate L3VPN To Routers Verify L3VPN Datapath With Router Association BuiltIn.Log Verify VPN interfaces, FIB entries and Flow table - ${vm_instances} = BuiltIn.Create List @{VM_IP_NET10} @{VM_IP_NET20} - BuiltIn.Wait Until Keyword Succeeds 30s 10s Utils.Check For Elements At URI ${VPN_IFACES_URL} ${vm_instances} + ${vm_ips} = BuiltIn.Create List @{VM_IP_NET10} @{VM_IP_NET20} + BuiltIn.Wait Until Keyword Succeeds 30s 10s 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_instances} - BuiltIn.Wait Until Keyword Succeeds 60s 15s VpnOperations.Verify Flows Are Present For L3VPN ${OS_COMPUTE_1_IP} ${vm_instances} - BuiltIn.Wait Until Keyword Succeeds 60s 15s VpnOperations.Verify Flows Are Present For L3VPN ${OS_COMPUTE_2_IP} ${vm_instances} + 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} - BuiltIn.Wait Until Keyword Succeeds 30s 10s VpnOperations.Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_1_IP} ipv6 - BuiltIn.Wait Until Keyword Succeeds 30s 10s VpnOperations.Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_2_IP} ipv6 + 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} @@ -236,8 +151,7 @@ Delete Router And Router Interfaces With L3VPN BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements Not At URI ${ROUTER_URL} ${router_list} ${resp}= VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0] BuiltIn.Should Not Contain ${resp} ${router_id} - BuiltIn.Wait Until Keyword Succeeds 30s 10s Verify GWMAC Flow Entry Removed From Flow Table ${OS_COMPUTE_1_IP} - BuiltIn.Wait Until Keyword Succeeds 30s 10s Verify GWMAC Flow Entry Removed From Flow Table ${OS_COMPUTE_2_IP} + Verify GWMAC Flow Entry Removed From Flow Table On All Compute Nodes Delete Router With NonExistentRouter Name ${rc} ${output}= Run And Return Rc And Output neutron router-delete nonExistentRouter @@ -279,7 +193,79 @@ Create Multiple L3VPN ${resp}= VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[2] BuiltIn.Should Contain ${resp} @{VPN_INSTANCE_IDS}[2] -Delete Multiple L3VPN - VpnOperations.VPN Delete L3VPN vpnid=@{VPN_INSTANCE_IDS}[0] - VpnOperations.VPN Delete L3VPN vpnid=@{VPN_INSTANCE_IDS}[1] - VpnOperations.VPN Delete L3VPN vpnid=@{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} + ${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} + ${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} + 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 + \ Run Keyword If '${status}' == 'FAIL' OpenStack CLI openstack console log show @{VM_INSTANCES}[${index}] 30s + 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