2 Documentation Test suite to validate BGP 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.
5 Suite Setup BGP Vpnservice Suite Setup
6 Suite Teardown BGP Vpnservice Suite Teardown
7 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
8 Test Teardown OpenStackOperations.Get Test Teardown Debugs
9 Library OperatingSystem
10 Library RequestsLibrary
12 Resource ../../../libraries/Utils.robot
13 Resource ../../../libraries/OpenStackOperations.robot
14 Resource ../../../libraries/DevstackUtils.robot
15 Resource ../../../libraries/VpnOperations.robot
16 Resource ../../../libraries/OVSDB.robot
17 Resource ../../../libraries/SetupUtils.robot
18 Resource ../../../libraries/BgpOperations.robot
19 Resource ../../../variables/Variables.robot
20 Resource ../../../variables/netvirt/Variables.robot
23 @{NETWORKS} bgp_net_1 bgp_net_2 bgp_net_3 bgp_net_4
24 @{SUBNETS} bgp_sub_1 bgp_sub_2 bgp_sub_3 bgp_sub_4
25 @{SUBNET_CIDR} 101.1.1.0/8 102.1.1.0/16 103.1.1.0/24 104.1.1.0/24
26 @{PORTS} bgp_port_101 bgp_port_102 bgp_port_103 bgp_port_104
27 @{VM_NAMES} bgp_vm_101 bgp_vm_102 bgp_vm_103 bgp_vm_104
28 @{VPN_INSTANCE_IDS} 4ae8cd92-48ca-49b5-94e1-b2921a261111 4ae8cd92-48ca-49b5-94e1-b2921a261112
29 @{RD_LIST} ["2200:2"] ["2300:2"]
30 @{VPN_NAMES} bgp_vpn_101 bgp_vpn_102
31 ${LOOPBACK_IP} 5.5.5.2
32 ${DCGW_SYSTEM_IP} ${TOOLS_SYSTEM_1_IP}
35 ${SECURITY_GROUP} bgp_sg
38 Create BGP Config On ODL
39 [Documentation] Create BGP Config on ODL
40 BgpOperations.Create BGP Configuration On ODL localas=${AS_ID} routerid=${ODL_SYSTEM_IP}
41 BgpOperations.AddNeighbor To BGP Configuration On ODL remoteas=${AS_ID} neighborAddr=${DCGW_SYSTEM_IP}
42 ${output} = BgpOperations.Get BGP Configuration On ODL session
44 BuiltIn.Should Contain ${output} ${DCGW_SYSTEM_IP}
46 Create BGP Config On DCGW
47 [Documentation] Configure BGP Config on DCGW
48 BgpOperations.Configure BGP And Add Neighbor On DCGW ${DCGW_SYSTEM_IP} ${AS_ID} ${DCGW_SYSTEM_IP} ${ODL_SYSTEM_IP} @{VPN_NAMES}[0] ${DCGW_RD}
50 BgpOperations.Add Loopback Interface On DCGW ${DCGW_SYSTEM_IP} lo ${LOOPBACK_IP}
51 ${output} = BgpOperations.Execute Show Command On Quagga ${DCGW_SYSTEM_IP} show running-config
53 BuiltIn.Should Contain ${output} ${ODL_SYSTEM_IP}
55 Verify BGP Neighbor Status
56 [Documentation] Verify BGP status established
57 ${output} = BuiltIn.Wait Until Keyword Succeeds 60s 15s BgpOperations.Verify BGP Neighbor Status On Quagga ${DCGW_SYSTEM_IP} ${ODL_SYSTEM_IP}
59 ${output1} = BgpOperations.Execute Show Command On Quagga ${DCGW_SYSTEM_IP} show ip bgp vrf ${DCGW_RD}
60 BuiltIn.Log ${output1}
61 BuiltIn.Should Contain ${output1} ${LOOPBACK_IP}
63 Create External Tunnel Endpoint
64 [Documentation] Create and verify external tunnel endpoint between ODL and GWIP
65 BgpOperations.Create External Tunnel Endpoint Configuration destIp=${DCGW_SYSTEM_IP}
66 ${output} = BgpOperations.Get External Tunnel Endpoint Configuration ${DCGW_SYSTEM_IP}
67 BuiltIn.Should Contain ${output} ${DCGW_SYSTEM_IP}
69 Verify Routes Exchange Between ODL And DCGW
70 [Documentation] Verify routes exchange between ODL and DCGW
71 ${fib_values} = BuiltIn.Create List ${LOOPBACK_IP} @{VM_IPS}
72 BuiltIn.Wait Until Keyword Succeeds 60s 15s Utils.Check For Elements At URI ${CONFIG_API}/odl-fib:fibEntries/vrfTables/${DCGW_RD}/ ${fib_values}
73 BuiltIn.Wait Until Keyword Succeeds 60s 15s Verify Routes On Quagga ${DCGW_SYSTEM_IP} ${DCGW_RD} ${fib_values}
74 [Teardown] BuiltIn.Run Keywords Report_Failure_Due_To_Bug 7607
75 ... AND OpenStackOperations.Get Test Teardown Debugs
77 Delete External Tunnel Endpoint
78 [Documentation] Delete external tunnel endpoint
79 BgpOperations.Delete External Tunnel Endpoint Configuration destIp=${DCGW_SYSTEM_IP}
80 ${output} = BgpOperations.Get External Tunnel Endpoint Configuration ${DCGW_SYSTEM_IP}
81 BuiltIn.Should Not Contain ${output} ${DCGW_SYSTEM_IP}
83 Delete BGP Config On ODL
84 [Documentation] Delete BGP Configuration on ODL
85 BgpOperations.Delete BGP Configuration On ODL session
86 ${output} = BgpOperations.Get BGP Configuration On ODL session
88 BuiltIn.Should Not Contain ${output} ${DCGW_SYSTEM_IP}
89 Utils.Run Command On Remote System ${ODL_SYSTEM_IP} sudo cp /opt/quagga/var/log/quagga/zrpcd.init.log /tmp/
91 Delete BGP Config On DCGW
92 [Documentation] Delete BGP Configuration on DCGW
93 ${output} = BgpOperations.Delete BGP Config On Quagga ${DCGW_SYSTEM_IP} ${AS_ID}
95 BuiltIn.Should Not Contain ${output} ${ODL_SYSTEM_IP}
98 BGP Vpnservice Suite Setup
99 SetupUtils.Setup_Utils_For_Setup_And_Teardown
100 DevstackUtils.Devstack Suite Setup
101 OpenStackOperations.Create And Configure Security Group ${SECURITY_GROUP}
102 BgpOperations.Start Quagga Processes On ODL ${ODL_SYSTEM_IP}
103 BgpOperations.Start Quagga Processes On DCGW ${DCGW_SYSTEM_IP}
104 BgpOperations.Create Basic Configuartion for BGP VPNservice Suite
106 BGP Vpnservice Suite Teardown
107 BgpOperations.Delete Basic Configuartion for BGP VPNservice Suite
108 OpenStackOperations.Delete SecurityGroup ${SECURITY_GROUP}
109 SSHLibrary.Close All Connections
111 Create Basic Configuartion for BGP VPNservice Suite
112 [Documentation] Create basic configuration for BGP VPNservice suite
113 BgpOperations.Start Quagga Processes On ODL ${ODL_SYSTEM_IP}
114 : FOR ${network} IN @{NETWORKS}
115 \ OpenStackOperations.Create Network ${network}
116 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${NETWORK_URL} ${NETWORKS}
117 ${length} = BuiltIn.Get Length ${SUBNETS}
118 : FOR ${idx} IN RANGE ${length}
119 \ OpenStackOperations.Create SubNet ${NETWORKS[${idx}]} ${SUBNETS[${idx}]} @{SUBNET_CIDR}[${idx}]
120 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${SUBNETWORK_URL} ${SUBNETS}
121 : FOR ${network} ${port} IN ZIP ${NETWORKS} ${PORTS}
122 \ OpenStackOperations.Create Port ${network} ${port} sg=${SECURITY_GROUP}
123 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${PORT_URL} ${PORTS}
124 OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[0] @{VM_NAMES}[0] ${OS_COMPUTE_1_IP} sg=${SECURITY_GROUP}
125 OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[1] @{VM_NAMES}[1] ${OS_COMPUTE_1_IP} sg=${SECURITY_GROUP}
126 OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[2] @{VM_NAMES}[2] ${OS_COMPUTE_2_IP} sg=${SECURITY_GROUP}
127 OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[3] @{VM_NAMES}[3] ${OS_COMPUTE_2_IP} sg=${SECURITY_GROUP}
128 @{VM_IPS} ${DHCP_IPS} = OpenStackOperations.Get VM IPs @{VM_NAMES}
129 BuiltIn.Set Suite Variable @{VM_IPS}
130 BuiltIn.Should Not Contain ${VM_IPS} None
131 BuiltIn.Should Not Contain ${DHCP_IPS} None
132 ${net_id} = OpenStackOperations.Get Net Id @{NETWORKS}[0] ${devstack_conn_id}
133 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
134 VpnOperations.VPN Create L3VPN vpnid=@{VPN_INSTANCE_IDS}[0] name=@{VPN_NAMES}[0] rd=@{RD_LIST}[0] exportrt=@{RD_LIST}[0] importrt=@{RD_LIST}[0] tenantid=${tenant_id}
135 : FOR ${network} IN @{NETWORKS}
136 \ ${network_id} = Get Net Id ${network} ${devstack_conn_id}
137 \ VpnOperations.Associate L3VPN To Network networkid=${network_id} vpnid=@{VPN_INSTANCE_IDS}[0]
138 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
141 Delete Basic Configuartion for BGP VPNservice Suite
142 [Documentation] Delete basic configuration for BGP Vpnservice suite
143 : FOR ${network} IN @{NETWORKS}
144 \ ${network_id} = OpenStackOperations.Get Net Id ${network} ${devstack_conn_id}
145 \ VpnOperations.Dissociate L3VPN From Networks networkid=${network_id} vpnid=@{VPN_INSTANCE_IDS}[0]
146 VpnOperations.VPN Delete L3VPN vpnid=@{VPN_INSTANCE_IDS}[0]
147 : FOR ${vm} IN @{VM_NAMES}
148 \ OpenStackOperations.Delete Vm Instance ${vm}
149 : FOR ${port} IN @{PORTS}
150 \ OpenStackOperations.Delete Port ${port}
151 : FOR ${subnet} IN @{SUBNETS}
152 \ OpenStackOperations.Delete SubNet ${subnet}
153 : FOR ${network} IN @{NETWORKS}
154 \ OpenStackOperations.Delete Network ${network}