Documentation Test suite to validate 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 Basic Vpnservice Suite Setup
-Suite Teardown Basic Vpnservice Suite Teardown
+Suite Setup VpnOperations.Basic Suite Setup
+Suite Teardown OpenStackOperations.OpenStack Suite Teardown
Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown Get Test Teardown Debugs
+Test Teardown OpenStackOperations.Get Test Teardown Debugs
Library OperatingSystem
Library RequestsLibrary
Resource ../../../libraries/Utils.robot
Resource ../../../variables/netvirt/Variables.robot
*** Variables ***
-@{NETWORKS} NET10 NET20
-@{SUBNETS} SUBNET1 SUBNET2
-@{SUBNETS_CIDR} 10.1.1.0/24 20.1.1.0/24
-@{PORT_LIST} PORT11 PORT21 PORT12 PORT22
-@{VM_INSTANCES_NET10} VM11 VM21
-@{VM_INSTANCES_NET20} VM12 VM22
-@{ROUTERS} ROUTER_1
-@{EXTRA_NW_IP} 40.1.1.2 50.1.1.2
-@{EXTRA_NW_SUBNET} 40.1.1.0/24 50.1.1.0/24
-${SECURITY_GROUP} sg-vpnservice
+${SECURITY_GROUP} vpn_sg
+@{NETWORKS} vpn_net_1 vpn_net_2
+@{SUBNETS} vpn_sub_1 vpn_sub_2
+@{SUBNET_CIDRS} 10.1.1.0/24 20.1.1.0/24
+@{PORTS} vpn_net_1_port_1 vpn_net_1_port_2 vpn_net_2_port_1 vpn_net_2_port_2
+@{NET_1_VMS} vpn_net_1_vm_1 vpn_net_1_vm_2
+@{NET_2_VMS} vpn_net_2_vm_1 vpn_net_2_vm_2
+${ROUTER} vpn_router
+@{EXTRA_NW_IP} 71.1.1.2 72.1.1.2
+@{EXTRA_NW_SUBNET} 71.1.1.0/24 72.1.1.0/24
${UPDATE_NETWORK} UpdateNetwork
${UPDATE_SUBNET} UpdateSubnet
${UPDATE_PORT} UpdatePort
+@{VPN_INSTANCE_IDS} 4ae8cd92-48ca-49b5-94e1-b2921a261441 4ae8cd92-48ca-49b5-94e1-b2921a261442 4ae8cd92-48ca-49b5-94e1-b2921a261443
+@{VPN_NAMES} vpn_1 vpn_2 vpn_3
+@{RDS} ["2200:2"] ["2300:2"] ["2400:2"]
*** Test Cases ***
Create Neutron Networks
- [Documentation] Create two networks
# TODO: Many of these steps to verify if updates occurred should be in a different suite
# that is checking for such operations.
- Create Network ${NETWORKS[0]}
- Create Network ${NETWORKS[1]}
- Wait Until Keyword Succeeds 3s 1s Check For Elements At URI ${NETWORK_URL} ${NETWORKS}
- Update Network ${NETWORKS[0]} additional_args=--description ${UPDATE_NETWORK}
- ${output} = Show Network ${NETWORKS[0]}
- Should Contain ${output} ${UPDATE_NETWORK}
+ 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
- [Documentation] Create two subnets for previously created networks
- Create SubNet ${NETWORKS[0]} ${SUBNETS[0]} ${SUBNETS_CIDR[0]}
- Create SubNet ${NETWORKS[1]} ${SUBNETS[1]} ${SUBNETS_CIDR[1]}
- Wait Until Keyword Succeeds 3s 1s Check For Elements At URI ${SUBNETWORK_URL} ${SUBNETS}
- Update SubNet ${SUBNETS[0]} additional_args=--description ${UPDATE_SUBNET}
- ${output} = Show SubNet ${SUBNETS[0]}
- Should Contain ${output} ${UPDATE_SUBNET}
+ OpenStackOperations.Create SubNet @{NETWORKS}[0] @{SUBNETS}[0] @{SUBNET_CIDRS}[0]
+ OpenStackOperations.Create SubNet @{NETWORKS}[1] @{SUBNETS}[1] @{SUBNET_CIDRS}[1]
+ 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}
-Add Ssh Allow Rule
- [Documentation] Allow all TCP/UDP/ICMP packets for this suite
+Add Ssh Allow All Rule
OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP}
Create Neutron Ports
- [Documentation] Create four ports under previously created subnets
- ${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]} ${PORT_LIST[0]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
- Create Port ${NETWORKS[0]} ${PORT_LIST[1]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
- Create Port ${NETWORKS[1]} ${PORT_LIST[2]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
- Create Port ${NETWORKS[1]} ${PORT_LIST[3]} sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args}
- Wait Until Keyword Succeeds 3s 1s Check For Elements At URI ${CONFIG_API}/neutron:neutron/ports/ ${PORT_LIST}
- ${PORTS_MACADDR} = Get Ports MacAddr ${PORT_LIST}
+ ${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}
+ Wait Until Keyword Succeeds 3s 1s Check For Elements At URI ${CONFIG_API}/neutron:neutron/ports/ ${PORTS}
+ ${PORTS_MACADDR} = Get Ports MacAddr ${PORTS}
Set Suite Variable ${PORTS_MACADDR}
- Update Port ${PORT_LIST[0]} additional_args=--description ${UPDATE_PORT}
- ${output} = Show Port ${PORT_LIST[0]}
+ Update Port @{PORTS}[0] additional_args=--description ${UPDATE_PORT}
+ ${output} = Show Port @{PORTS}[0]
Should Contain ${output} ${UPDATE_PORT}
Create Nova VMs
- [Documentation] Create Vm instances on compute node with port
- Create Vm Instance With Port On Compute Node ${PORT_LIST[0]} ${VM_INSTANCES_NET10[0]} ${OS_COMPUTE_1_IP} sg=${SECURITY_GROUP}
- Create Vm Instance With Port On Compute Node ${PORT_LIST[1]} ${VM_INSTANCES_NET10[1]} ${OS_COMPUTE_2_IP} sg=${SECURITY_GROUP}
- Create Vm Instance With Port On Compute Node ${PORT_LIST[2]} ${VM_INSTANCES_NET20[0]} ${OS_COMPUTE_1_IP} sg=${SECURITY_GROUP}
- Create Vm Instance With Port On Compute Node ${PORT_LIST[3]} ${VM_INSTANCES_NET20[1]} ${OS_COMPUTE_2_IP} sg=${SECURITY_GROUP}
- @{VM_IP_NET10} ${DHCP_IP1} = Get VM IPs @{VM_INSTANCES_NET10}
- @{VM_IP_NET20} ${DHCP_IP2} = Get VM IPs @{VM_INSTANCES_NET20}
- Set Suite Variable @{VM_IP_NET10}
- Set Suite Variable @{VM_IP_NET20}
- Should Not Contain ${VM_IP_NET10} None
- Should Not Contain ${VM_IP_NET20} None
- Should Not Contain ${DHCP_IP1} None
- Should Not Contain ${DHCP_IP2} None
- Wait Until Keyword Succeeds 30s 10s Wait For Routes To Propogate ${NETWORKS} ${SUBNETS_CIDR}
- [Teardown] Run Keywords Show Debugs @{VM_INSTANCES_NET10} @{VM_INSTANCES_NET20}
- ... AND Get Test Teardown Debugs
+ 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}
+ @{NET_1_VM_IPS} ${NET_1_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_1_VMS}
+ @{NET_2_VM_IPS} ${NET_2_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_2_VMS}
+ BuiltIn.Set Suite Variable @{NET_1_VM_IPS}
+ BuiltIn.Set Suite Variable @{NET_2_VM_IPS}
+ BuiltIn.Should Not Contain ${NET_1_VM_IPS} None
+ BuiltIn.Should Not Contain ${NET_2_VM_IPS} None
+ BuiltIn.Should Not Contain ${NET_1_DHCP_IP} None
+ BuiltIn.Should Not Contain ${NET_2_DHCP_IP} None
+ BuiltIn.Wait Until Keyword Succeeds 30s 10s Wait For Routes To Propogate ${NETWORKS} ${SUBNET_CIDRS}
+ [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
[Documentation] Checks datapath within the same network with different vlans.
- ${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[0]} ping -c 3 ${VM_IP_NET10[1]}
- Should Contain ${output} 64 bytes
- ${output} = Execute Command on VM Instance @{NETWORKS}[1] ${VM_IP_NET20[0]} ping -c 3 ${VM_IP_NET20[1]}
- Should Contain ${output} 64 bytes
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[0] ping -c 3 @{NET_1_VM_IPS}[1]
+ BuiltIn.Should Contain ${output} 64 bytes
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[1] @{NET_2_VM_IPS}[0] ping -c 3 @{NET_2_VM_IPS}[1]
+ BuiltIn.Should Contain ${output} 64 bytes
-Create Routers
- [Documentation] Create Router
- Create Router ${ROUTERS[0]}
- Wait Until Keyword Succeeds 3s 1s Check For Elements At URI ${ROUTER_URL} ${ROUTERS}
+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
- [Documentation] Add Interfaces
- : FOR ${INTERFACE} IN @{SUBNETS}
- \ Add Router Interface ${ROUTERS[0]} ${INTERFACE}
- ${interface_output} = Show Router Interface ${ROUTERS[0]}
- ${GWMAC_ADDRS} ${GWIP_ADDRS} = VpnOperations.Get Gateway MAC And IP Address ${ROUTERS[0]}
- Set Suite Variable ${GWMAC_ADDRS}
- Set Suite Variable ${GWIP_ADDRS}
+ : FOR ${interface} IN @{SUBNETS}
+ \ OpenStackOperations.Add Router Interface ${ROUTER} ${interface}
+ ${interface_output} = OpenStackOperations.Show Router Interface ${ROUTER}
+ ${GWMAC_ADDRS} ${GWIP_ADDRS} = VpnOperations.Get Gateway MAC And IP Address ${ROUTER}
+ BuiltIn.Set Suite Variable ${GWMAC_ADDRS}
+ BuiltIn.Set Suite Variable ${GWIP_ADDRS}
Check L3_Datapath Traffic Across Networks With Router
- [Documentation] Datapath test across the networks using router for L3.
- Log Verification of FIB Entries and Flow
- ${cn1_conn_id} = Start Packet Capture on Node ${OS_COMPUTE_1_IP} file_Name=tcpDumpCN1
- ${cn2_conn_id} = Start Packet Capture on Node ${OS_COMPUTE_2_IP} file_Name=tcpDumpCN2
- ${os_conn_id} = Start Packet Capture on Node ${OS_CONTROL_NODE_IP} file_Name=tcpDumpOS
- ${vm_instances} = Create List @{VM_IP_NET10} @{VM_IP_NET20}
- Wait Until Keyword Succeeds 30s 10s Check For Elements At URI ${FIB_ENTRY_URL} ${vm_instances}
- Wait Until Keyword Succeeds 30s 10s Verify Flows Are Present For L3VPN ${OS_COMPUTE_1_IP} ${vm_instances}
- Wait Until Keyword Succeeds 30s 10s Verify Flows Are Present For L3VPN ${OS_COMPUTE_2_IP} ${vm_instances}
- Wait Until Keyword Succeeds 30s 10s Verify GWMAC Entry On ODL ${GWMAC_ADDRS}
- Wait Until Keyword Succeeds 30s 10s Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_1_IP}
- Wait Until Keyword Succeeds 30s 10s Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_2_IP}
- ${dst_ip_list} = Create List ${VM_IP_NET10[1]} @{VM_IP_NET20}
- Test Operations From Vm Instance ${NETWORKS[0]} ${VM_IP_NET10[0]} ${dst_ip_list}
- ${dst_ip_list} = Create List ${VM_IP_NET20[1]} @{VM_IP_NET10}
- Test Operations From Vm Instance ${NETWORKS[1]} ${VM_IP_NET20[0]} ${dst_ip_list}
+ ${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
+ ${vm_ips} = BuiltIn.Create List @{NET_1_VM_IPS} @{NET_2_VM_IPS}
+ 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_ips}
+ BuiltIn.Wait Until Keyword Succeeds 30s 10s VpnOperations.Verify Flows Are Present For L3VPN ${OS_COMPUTE_2_IP} ${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}
+ BuiltIn.Wait Until Keyword Succeeds 30s 10s VpnOperations.Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_2_IP}
+ ${dst_ip_list} = BuiltIn.Create List @{NET_1_VM_IPS}[1] @{NET_2_VM_IPS}
+ OpenStackOperations.Test Operations From Vm Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[0] ${dst_ip_list}
+ ${dst_ip_list} = BuiltIn.Create List @{NET_2_VM_IPS}[1] @{NET_1_VM_IPS}
+ OpenStackOperations.Test Operations From Vm Instance @{NETWORKS}[1] @{NET_2_VM_IPS}[0] ${dst_ip_list}
[Teardown] VpnOperations.Test Teardown With Tcpdump Stop ${cn1_conn_id} ${cn2_conn_id} ${os_conn_id}
Add Multiple Extra Routes And Check Datapath Before L3VPN Creation
- [Documentation] Add multiple extra routes and check data path before L3VPN creation
- ${CONFIG_EXTRA_ROUTE_IP1} = Catenate sudo ifconfig eth0:1 @{EXTRA_NW_IP}[0] netmask 255.255.255.0 up
- ${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[0]} ${CONFIG_EXTRA_ROUTE_IP1}
- ${CONFIG_EXTRA_ROUTE_IP2} = Catenate sudo ifconfig eth0:2 @{EXTRA_NW_IP}[1] netmask 255.255.255.0 up
- ${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[0]} ${CONFIG_EXTRA_ROUTE_IP2}
- ${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[0]} ifconfig
- ${EXT_RT1} = Set Variable destination=40.1.1.0/24,gateway=${VM_IP_NET10[0]}
- ${EXT_RT2} = Set Variable destination=50.1.1.0/24,gateway=${VM_IP_NET10[0]}
- ${cmd} = Catenate ${RT_OPTIONS} ${EXT_RT1} ${RT_OPTIONS} ${EXT_RT2}
- Update Router @{ROUTERS}[0] ${cmd}
- Show Router @{ROUTERS}[0] -D
- ${vm_instances} = Create List @{EXTRA_NW_SUBNET}
- Wait Until Keyword Succeeds 30s 10s Check For Elements At URI ${FIB_ENTRY_URL} ${vm_instances}
- ${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[1]} ping -c 3 @{EXTRA_NW_IP}[1]
- Should Contain ${output} 64 bytes
- ${output} = Execute Command on VM Instance @{NETWORKS}[1] ${VM_IP_NET20[1]} ping -c 3 @{EXTRA_NW_IP}[1]
- Should Contain ${output} 64 bytes
- ${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[1]} ping -c 3 @{EXTRA_NW_IP}[0]
- Should Contain ${output} 64 bytes
+ ${CONFIG_EXTRA_ROUTE_IP1} = BuiltIn.Catenate sudo ifconfig eth0:1 @{EXTRA_NW_IP}[0] netmask 255.255.255.0 up
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[0] ${CONFIG_EXTRA_ROUTE_IP1}
+ ${CONFIG_EXTRA_ROUTE_IP2} = BuiltIn.Catenate sudo ifconfig eth0:2 @{EXTRA_NW_IP}[1] netmask 255.255.255.0 up
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[0] ${CONFIG_EXTRA_ROUTE_IP2}
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[0] ifconfig
+ ${ext_rt1} = BuiltIn.Set Variable destination=@{EXTRA_NW_SUBNET}[0],gateway=@{NET_1_VM_IPS}[0]
+ ${ext_rt2} = BuiltIn.Set Variable destination=@{EXTRA_NW_SUBNET}[1],gateway=@{NET_1_VM_IPS}[0]
+ ${cmd} = BuiltIn.Catenate ${RT_OPTIONS} ${ext_rt1} ${RT_OPTIONS} ${ext_rt2}
+ OpenStackOperations.Update Router ${ROUTER} ${cmd}
+ OpenStackOperations.Show Router ${ROUTER} -D
+ ${vm_ips} = BuiltIn.Create List @{EXTRA_NW_SUBNET}
+ BuiltIn.Wait Until Keyword Succeeds 30s 10s Utils.Check For Elements At URI ${FIB_ENTRY_URL} ${vm_ips}
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[1] ping -c 3 @{EXTRA_NW_IP}[1]
+ BuiltIn.Should Contain ${output} 64 bytes
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[1] @{NET_2_VM_IPS}[1] ping -c 3 @{EXTRA_NW_IP}[1]
+ BuiltIn.Should Contain ${output} 64 bytes
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[1] ping -c 3 @{EXTRA_NW_IP}[0]
+ BuiltIn.Should Contain ${output} 64 bytes
Delete Extra Route
- [Documentation] Delete the extra routes
- Update Router @{ROUTERS}[0] ${RT_CLEAR}
- Show Router @{ROUTERS}[0] -D
+ OpenStackOperations.Update Router ${ROUTER} ${RT_CLEAR}
+ OpenStackOperations.Show Router ${ROUTER} -D
Delete And Recreate Extra Route
[Documentation] Recreate multiple extra route and check data path before L3VPN creation
- ${CONFIG_EXTRA_ROUTE_IP1} = Catenate sudo ifconfig eth0:1 @{EXTRA_NW_IP}[0] netmask 255.255.255.0 up
- ${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[0]} ${CONFIG_EXTRA_ROUTE_IP1}
- ${EXT_RT1} = Set Variable destination=40.1.1.0/24,gateway=${VM_IP_NET10[0]}
- ${cmd} = Catenate ${RT_OPTIONS} ${EXT_RT1}
- Update Router @{ROUTERS}[0] ${cmd}
- Show Router @{ROUTERS}[0] -D
- ${output} = Execute Command on VM Instance @{NETWORKS}[0] ${VM_IP_NET10[1]} ping -c 3 @{EXTRA_NW_IP}[0]
- Should Contain ${output} 64 bytes
+ ${CONFIG_EXTRA_ROUTE_IP1} = BuiltIn.Catenate sudo ifconfig eth0:1 @{EXTRA_NW_IP}[0] netmask 255.255.255.0 up
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[0] ${CONFIG_EXTRA_ROUTE_IP1}
+ ${ext_rt1} = BuiltIn.Set Variable destination=@{EXTRA_NW_SUBNET}[0],gateway=@{NET_1_VM_IPS}[0]
+ ${cmd} = BuiltIn.Catenate ${RT_OPTIONS} ${ext_rt1}
+ OpenStackOperations.Update Router ${ROUTER} ${cmd}
+ OpenStackOperations.Show Router ${ROUTER} -D
+ ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[1] ping -c 3 @{EXTRA_NW_IP}[0]
+ BuiltIn.Should Contain ${output} 64 bytes
# clear off extra-routes before the next set of tests
- [Teardown] Run Keywords Update Router @{ROUTERS}[0] ${RT_CLEAR}
- ... AND Show Router @{ROUTERS}[0] -D
- ... AND Get Test Teardown Debugs
+ [Teardown] BuiltIn.Run Keywords OpenStackOperations.Update Router ${ROUTER} ${RT_CLEAR}
+ ... AND OpenStackOperations.Show Router ${ROUTER} -D
+ ... AND OpenStackOperations.Get Test Teardown Debugs
Create L3VPN
- [Documentation] Creates L3VPN and verify the same
- ${net_id} = Get Net Id @{NETWORKS}[0] ${devstack_conn_id}
- ${tenant_id} = Get Tenant ID From Network ${net_id}
- Log @{RDS}[0]
- VPN Create L3VPN vpnid=${VPN_INSTANCE_ID[0]} name=${VPN_NAME[0]} rd=@{RDS}[0] exportrt=@{RDS}[0] importrt=@{RDS}[0] tenantid=${tenant_id}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Contain ${resp} ${VPN_INSTANCE_ID[0]}
+ ${net_id} = OpenStackOperations.Get Net Id @{NETWORKS}[0]
+ ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
+ BuiltIn.Log @{RDS}[0]
+ VpnOperations.VPN Create L3VPN vpnid=@{VPN_INSTANCE_IDS}[0] name=@{VPN_NAMES}[0] rd=@{RDS}[0] exportrt=@{RDS}[0] importrt=@{RDS}[0] tenantid=${tenant_id}
+ ${resp}= VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Should Contain ${resp} @{VPN_INSTANCE_IDS}[0]
Associate L3VPN To Routers
- [Documentation] Associating router to L3VPN
- ${router_id}= Get Router Id ${ROUTERS[0]} ${devstack_conn_id}
- Associate VPN to Router routerid=${router_id} vpnid=${VPN_INSTANCE_ID[0]}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Contain ${resp} ${router_id}
+ ${router_id} = OpenStackOperations.Get Router Id ${ROUTER}
+ VpnOperations.Associate VPN to Router routerid=${router_id} vpnid=@{VPN_INSTANCE_IDS}[0]
+ ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Should Contain ${resp} ${router_id}
Verify L3VPN Datapath With Router Association
- [Documentation] Datapath test across the networks using L3VPN with router association.
- ${vm_instances} = Create List @{VM_IP_NET10} @{VM_IP_NET20}
- Wait Until Keyword Succeeds 30s 10s Check For Elements At URI ${VPN_IFACES_URL} ${vm_instances}
- ${RD} = Strip String ${RDS[0]} characters="[]
- Wait Until Keyword Succeeds 60s 15s Check For Elements At URI ${CONFIG_API}/odl-fib:fibEntries/vrfTables/${RD}/ ${vm_instances}
- Wait Until Keyword Succeeds 60s 15s Verify Flows Are Present For L3VPN ${OS_COMPUTE_1_IP} ${vm_instances}
- Wait Until Keyword Succeeds 60s 15s Verify Flows Are Present For L3VPN ${OS_COMPUTE_2_IP} ${vm_instances}
- Wait Until Keyword Succeeds 30s 15s Verify GWMAC Entry On ODL ${GWMAC_ADDRS}
- Wait Until Keyword Succeeds 30s 15s Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_1_IP}
- Wait Until Keyword Succeeds 30s 15s Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_2_IP}
- Log Check datapath from network1 to network2
- ${dst_ip_list} = Create List @{VM_IP_NET10}[1] @{VM_IP_NET20}
- Test Operations From Vm Instance ${NETWORKS[0]} @{VM_IP_NET10}[0] ${dst_ip_list}
- Log Check datapath from network2 to network1
- ${dst_ip_list} = Create List @{VM_IP_NET20}[1] @{VM_IP_NET10}
- Test Operations From Vm Instance ${NETWORKS[1]} @{VM_IP_NET20}[0] ${dst_ip_list}
+ ${vm_instances} = BuiltIn.Create List @{NET_1_VM_IPS} @{NET_2_VM_IPS}
+ BuiltIn.Wait Until Keyword Succeeds 30s 10s Utils.Check For Elements At URI ${VPN_IFACES_URL} ${vm_instances}
+ ${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 30s 15s VpnOperations.Verify GWMAC Entry On ODL ${GWMAC_ADDRS}
+ BuiltIn.Wait Until Keyword Succeeds 30s 15s VpnOperations.Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_1_IP}
+ BuiltIn.Wait Until Keyword Succeeds 30s 15s VpnOperations.Verify GWMAC Flow Entry On Flow Table ${OS_COMPUTE_2_IP}
+ BuiltIn.Log Check datapath from network1 to network2
+ ${dst_ip_list} = BuiltIn.Create List @{NET_1_VM_IPS}[1] @{NET_2_VM_IPS}
+ OpenStackOperations.Test Operations From Vm Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[0] ${dst_ip_list}
+ BuiltIn.Log Check datapath from network2 to network1
+ ${dst_ip_list} = BuiltIn.Create List @{NET_2_VM_IPS}[1] @{NET_1_VM_IPS}
+ OpenStackOperations.Test Operations From Vm Instance @{NETWORKS}[1] @{NET_2_VM_IPS}[0] ${dst_ip_list}
-Dissociate L3VPN From Routers
- [Documentation] Dissociating router from L3VPN
- ${router_id}= Get Router Id ${ROUTERS[0]} ${devstack_conn_id}
- Dissociate VPN to Router routerid=${router_id} vpnid=${VPN_INSTANCE_ID[0]}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Not Contain ${resp} ${router_id}
+Disassociate L3VPN From Router
+ ${router_id}= OpenStackOperations.Get Router Id ${ROUTER}
+ VpnOperations.Dissociate VPN to Router routerid=${router_id} vpnid=@{VPN_INSTANCE_IDS}[0]
+ ${resp}= VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Should Not Contain ${resp} ${router_id}
Delete Router And Router Interfaces With L3VPN
- [Documentation] Delete Router and Interface to the subnets with L3VPN assciate
- ${router_id}= Get Router Id ${ROUTERS[0]} ${devstack_conn_id}
- Associate VPN to Router routerid=${router_id} vpnid=${VPN_INSTANCE_ID[0]}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Contain ${resp} ${router_id}
+ ${router_id}= OpenStackOperations.Get Router Id ${ROUTER}
+ VpnOperations.Associate VPN to Router routerid=${router_id} vpnid=@{VPN_INSTANCE_IDS}[0]
+ ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Should Contain ${resp} ${router_id}
: FOR ${INTERFACE} IN @{SUBNETS}
- \ Remove Interface ${ROUTERS[0]} ${INTERFACE}
- ${interface_output} = Show Router Interface ${ROUTERS[0]}
+ \ OpenStackOperations.Remove Interface ${ROUTER} ${INTERFACE}
+ ${interface_output} = OpenStackOperations.Show Router Interface ${ROUTER}
: FOR ${INTERFACE} IN @{SUBNETS}
- \ ${subnet_id} = Get Subnet Id ${INTERFACE} ${devstack_conn_id}
- \ Should Not Contain ${interface_output} ${subnet_id}
- Delete Router ${ROUTERS[0]}
- ${router_output} = List Routers
- Should Not Contain ${router_output} ${ROUTERS[0]}
- ${router_list} = Create List ${ROUTERS[0]}
- Wait Until Keyword Succeeds 3s 1s Check For Elements Not At URI ${ROUTER_URL} ${router_list}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Not Contain ${resp} ${router_id}
- Wait Until Keyword Succeeds 30s 10s Verify GWMAC Flow Entry Removed From Flow Table ${OS_COMPUTE_1_IP}
- Wait Until Keyword Succeeds 30s 10s Verify GWMAC Flow Entry Removed From Flow Table ${OS_COMPUTE_2_IP}
+ \ ${subnet_id} = OpenStackOperations.Get Subnet Id ${INTERFACE}
+ \ BuiltIn.Should Not Contain ${interface_output} ${subnet_id}
+ Delete Router ${ROUTER}
+ ${router_output} = OpenStackOperations.List Routers
+ BuiltIn.Should Not Contain ${router_output} ${ROUTER}
+ @{router_list} = BuiltIn.Create List ${ROUTER}
+ 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 VpnOperations.Verify GWMAC Flow Entry Removed From Flow Table ${OS_COMPUTE_1_IP}
+ BuiltIn.Wait Until Keyword Succeeds 30s 10s VpnOperations.Verify GWMAC Flow Entry Removed From Flow Table ${OS_COMPUTE_2_IP}
Delete Router With NonExistentRouter Name
[Documentation] Delete router with nonExistentRouter name
${rc} ${output}= Run And Return Rc And Output neutron router-delete nonExistentRouter
- Should Match Regexp ${output} Unable to find router with name or id 'nonExistentRouter'|Unable to find router\\(s\\) with id\\(s\\) 'nonExistentRouter'
+ BuiltIn.Should Match Regexp ${output} Unable Not At URIto find router with name or id 'nonExistentRouter'|Unable to find router\\(s\\) with id\\(s\\) 'nonExistentRouter'
Associate L3VPN To Networks
[Documentation] Associates L3VPN to networks and verify
- ${network1_id} = Get Net Id ${NETWORKS[0]} ${devstack_conn_id}
- ${network2_id} = Get Net Id ${NETWORKS[1]} ${devstack_conn_id}
- Associate L3VPN To Network networkid=${network1_id} vpnid=${VPN_INSTANCE_ID[0]}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Contain ${resp} ${network1_id}
- Associate L3VPN To Network networkid=${network2_id} vpnid=${VPN_INSTANCE_ID[0]}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Contain ${resp} ${network2_id}
+ ${network1_id} = OpenStackOperations.Get Net Id @{NETWORKS}[0]
+ ${network2_id} = OpenStackOperations.Get Net Id @{NETWORKS}[1]
+ VpnOperations.Associate L3VPN To Network networkid=${network1_id} vpnid=@{VPN_INSTANCE_IDS}[0]
+ ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Should Contain ${resp} ${network1_id}
+ VpnOperations.Associate L3VPN To Network networkid=${network2_id} vpnid=@{VPN_INSTANCE_IDS}[0]
+ ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Should Contain ${resp} ${network2_id}
Dissociate L3VPN From Networks
[Documentation] Dissociate L3VPN from networks
- ${network1_id} = Get Net Id ${NETWORKS[0]} ${devstack_conn_id}
- ${network2_id} = Get Net Id ${NETWORKS[1]} ${devstack_conn_id}
- Dissociate L3VPN From Networks networkid=${network1_id} vpnid=${VPN_INSTANCE_ID[0]}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Not Contain ${resp} ${network1_id}
- Dissociate L3VPN From Networks networkid=${network2_id} vpnid=${VPN_INSTANCE_ID[0]}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Not Contain ${resp} ${network2_id}
+ ${network1_id} = OpenStackOperations.Get Net Id @{NETWORKS}[0]
+ ${network2_id} = OpenStackOperations.Get Net Id @{NETWORKS}[1]
+ VpnOperations.Dissociate L3VPN From Networks networkid=${network1_id} vpnid=@{VPN_INSTANCE_IDS}[0]
+ ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Should Not Contain ${resp} ${network1_id}
+ VpnOperations.Dissociate L3VPN From Networks networkid=${network2_id} vpnid=@{VPN_INSTANCE_IDS}[0]
+ ${resp}= VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Should Not Contain ${resp} ${network2_id}
Delete L3VPN
[Documentation] Delete L3VPN
- VPN Delete L3VPN vpnid=${VPN_INSTANCE_ID[0]}
+ VpnOperations.VPN Delete L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
Create Multiple L3VPN
[Documentation] Creates three L3VPNs and then verify the same
- ${net_id} = Get Net Id @{NETWORKS}[0] ${devstack_conn_id}
- ${tenant_id} = Get Tenant ID From Network ${net_id}
- VPN Create L3VPN vpnid=${VPN_INSTANCE_ID[0]} name=${VPN_NAME[0]} rd=${RDS[0]} exportrt=${RDS[0]} importrt=${RDS[0]} tenantid=${tenant_id}
- VPN Create L3VPN vpnid=${VPN_INSTANCE_ID[1]} name=${VPN_NAME[1]} rd=${RDS[1]} exportrt=${RDS[1]} importrt=${RDS[1]} tenantid=${tenant_id}
- VPN Create L3VPN vpnid=${VPN_INSTANCE_ID[2]} name=${VPN_NAME[2]} rd=${RDS[2]} exportrt=${RDS[2]} importrt=${RDS[2]} tenantid=${tenant_id}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- Should Contain ${resp} ${VPN_INSTANCE_ID[0]}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[1]}
- Should Contain ${resp} ${VPN_INSTANCE_ID[1]}
- ${resp}= VPN Get L3VPN vpnid=${VPN_INSTANCE_ID[2]}
- Should Contain ${resp} ${VPN_INSTANCE_ID[2]}
+ ${net_id} = OpenStackOperations.Get Net Id @{NETWORKS}[0]
+ ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
+ VpnOperations.VPN Create L3VPN vpnid=@{VPN_INSTANCE_IDS}[0] name=@{VPN_NAMES}[0] rd=@{RDS}[0] exportrt=@{RDS}[0] importrt=@{RDS}[0] tenantid=${tenant_id}
+ VpnOperations.VPN Create L3VPN vpnid=@{VPN_INSTANCE_IDS}[1] name=@{VPN_NAMES}[1] rd=@{RDS}[1] exportrt=@{RDS}[1] importrt=@{RDS}[1] tenantid=${tenant_id}
+ VpnOperations.VPN Create L3VPN vpnid=@{VPN_INSTANCE_IDS}[2] name=@{VPN_NAMES}[2] rd=@{RDS}[2] exportrt=@{RDS}[2] importrt=@{RDS}[2] tenantid=${tenant_id}
+ ${resp}= VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
+ BuiltIn.Should Contain ${resp} @{VPN_INSTANCE_IDS}[0]
+ ${resp}= VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[1]
+ BuiltIn.Should Contain ${resp} @{VPN_INSTANCE_IDS}[1]
+ ${resp}= VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[2]
+ BuiltIn.Should Contain ${resp} @{VPN_INSTANCE_IDS}[2]
Check Datapath Traffic Across Networks With L3VPN
[Documentation] Datapath Test Across the networks with VPN.
[Tags] exclude
- Log This test will be added in the next patch
+ BuiltIn.Log This test will be added in the next patch
Delete Multiple L3VPN
[Documentation] Delete three L3VPNs created using Multiple L3VPN Test
- VPN Delete L3VPN vpnid=${VPN_INSTANCE_ID[0]}
- VPN Delete L3VPN vpnid=${VPN_INSTANCE_ID[1]}
- VPN Delete L3VPN vpnid=${VPN_INSTANCE_ID[2]}
+ 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]