2 Documentation Test suite to validate subnet routing and multicast 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 Suite Setup
6 Suite Teardown Stop Suite
7 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
8 Test Teardown OpenStackOperations.Get Test Teardown Debugs
9 Resource ../../../libraries/BgpOperations.robot
10 Resource ../../../libraries/KarafKeywords.robot
11 Resource ../../../libraries/OpenStackOperations.robot
12 Resource ../../../libraries/Utils.robot
13 Resource ../../../libraries/SetupUtils.robot
14 Resource ../../../variables/Variables.robot
15 Resource ../../../variables/netvirt/Variables.robot
16 Resource ../../../libraries/VpnOperations.robot
20 ${SECURITY_GROUP} mc_sg
21 ${NUM_OF_PORTS_PER_NETWORK} 4
22 ${NUM_OF_INSTANCES} 20
23 ${VPN_INSTANCE_ID} 4ae8cd92-48ca-49b5-94e1-b2921a261111
25 ${LOOPBACK_IP} 5.5.5.2
27 ${DCGW_SYSTEM_IP} ${TOOLS_SYSTEM_1_IP}
28 ${RPING_MIP_IP} sudo arping -I eth0:1 -c 5 -b -s @{EXTRA_NW_SUBNET}[0] @{EXTRA_NW_SUBNET}[0]
29 ${RPING_MIP_IP1} sudo arping -I eth0:1 -c 5 -b -s @{EXTRA_NW_SUBNET}[1] @{EXTRA_NW_SUBNET}[1]
30 ${RPING_MIP_IP2} sudo arping -I eth0:1 -c 5 -b -s @{EXTRA_NW_SUBNET}[2] @{EXTRA_NW_SUBNET}[2]
31 ${RPING_MIP_IP3} sudo arping -I eth0:1 -c 5 -b -s ${NEW_EXTRA_NW_SUBNET} ${NEW_EXTRA_NW_SUBNET}
32 @{INTERFACE_STATE} up down
33 @{NETWORKS} mc_net_1 mc_net_2 mc_net_3
34 @{NET_1_VMS} mc_net_1_vm_1 mc_net_1_vm_2 mc_net_1_vm_3 mc_net_1_vm_4
35 @{NET_2_VMS} mc_net_2_vm_1 mc_net_2_vm_2 mc_net_2_vm_3 mc_net_2_vm_4
36 @{NET_3_VMS} mc_net_3_vm_1 mc_net_3_vm_2 mc_net_3_vm_3 mc_net_3_vm_4
37 @{NET_1_PORTS} mc_net_1_port_1 mc_net_1_port_2 mc_net_1_port_3 mc_net_1_port_4
38 @{NET_2_PORTS} mc_net_2_port_1 mc_net_2_port_2 mc_net_2_port_3 mc_net_2_port_4
39 @{NET_3_PORTS} mc_net_3_port_1 mc_net_3_port_2 mc_net_3_port_3 mc_net_3_port_4
40 @{SUBNETS} mc_sub_1 mc_sub_2 mc_sub_3
41 @{SUBNET_CIDR} 10.1.0.0/24 10.2.0.0/24 10.3.0.0/24
42 @{EXTRA_NW_SUBNET} 10.1.0.100 10.2.0.100 10.3.0.100
43 ${NEW_EXTRA_NW_SUBNET} 10.1.0.110
47 Verify The Subnet Route When Neutron Port Hosting Subnet Route Is Down/up On Single VSwitch Topology
48 [Documentation] Verify the subnet route when enterprise host is down and up.
49 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Configure_IP_On_Sub_Interface @{NETWORKS}[0] @{EXTRA_NW_SUBNET}[0] @{NET_1_VM_IPS}[0]
50 ... ${MASK} @{INTERFACE_STATE}[1]
51 ${allowed_ip_list} = BuiltIn.Create List @{EXTRA_NW_SUBNET}[0]
52 BuiltIn.Wait Until Keyword Succeeds 30s 10s Utils.Check For Elements At URI ${FIB_ENTRY_URL} ${allowed_ip_list}
53 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Configure_IP_On_Sub_Interface @{NETWORKS}[0] @{EXTRA_NW_SUBNET}[0] @{NET_1_VM_IPS}[0]
54 ... ${MASK} @{INTERFACE_STATE}[0]
55 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Verify_IP_Configured_On_Sub_Interface @{NETWORKS}[0] @{EXTRA_NW_SUBNET}[0] @{NET_1_VM_IPS}[0]
56 BuiltIn.Wait Until Keyword Succeeds 30s 10s Utils.Check For Elements At URI ${FIB_ENTRY_URL} ${allowed_ip_list}
57 Verify Ping between Inter Intra And Enterprise host
59 Verify Enterprise Hosts Reachability After VM Reboot
60 [Documentation] Restart the VSwitch1 which is hosting the enterprise host and check the subnet route
61 OpenStackOperations.Get ControlNode Connection
62 @{NET_1_VM_IPS} ${NET1_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_1_VMS}
63 OpenStackOperations.Reboot Nova VM @{NET_1_VMS}[0]
64 @{NET_1_VM_IPS} ${NET1_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_1_VMS}
65 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Configure_IP_On_Sub_Interface @{NETWORKS}[0] @{EXTRA_NW_SUBNET}[0] @{NET_1_VM_IPS}[0]
66 ... ${MASK} @{INTERFACE_STATE}[0]
67 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Verify_IP_Configured_On_Sub_Interface @{NETWORKS}[0] @{EXTRA_NW_SUBNET}[0] @{NET_1_VM_IPS}[0]
68 Verify Ping between Inter Intra And Enterprise host
70 Verify The Subnet Route For Multiple Subnets On Multi VSwitch Topology When DC-GW Is Restarted
71 [Documentation] Restart dcgw and check enterprise hosts reachability
72 BgpOperations.Restart BGP Processes On DCGW ${DCGW_SYSTEM_IP}
73 Create BGP Config On DCGW
74 Verify Ping between Inter Intra And Enterprise host
76 Verify The Subnet Route For Multiple Subnets On Multi VSwitch Topology When Qbgp Is Restarted
77 [Documentation] Restart qbgp and check enterprise hosts reachability
78 BgpOperations.Restart BGP Processes On ODL ${ODL_SYSTEM_IP}
79 Verify Ping between Inter Intra And Enterprise host
81 Verify The Subnet Route When Vswitch Hosting Subnet Route Is Restarted On Single Vswitch Topology
82 [Documentation] Restart single OVS node on which subnet route is configured and verify enterprise hosts reachability
83 OVSDB.Restart OVSDB ${OS_COMPUTE_2_IP}
84 BuiltIn.Wait Until Keyword Succeeds 10s 20s OVSDB.Verify Ovsdb State ${OS_COMPUTE_2_IP}
85 VpnOperations.Verify Tunnel Status as UP
86 Verify Ping between Inter Intra And Enterprise host
88 Verify The Subnet Route When Vswitch Hosting Subnet Enterprise Host Is Restarted On Multiple Vswitch Topology
89 [Documentation] Restart the OVS node on both compute nodes and verify the subnet route
90 OVSDB.Restart OVSDB ${OS_COMPUTE_1_IP}
91 OVSDB.Restart OVSDB ${OS_COMPUTE_2_IP}
92 BuiltIn.Wait Until Keyword Succeeds 10s 20s OVSDB.Verify Ovsdb State ${OS_COMPUTE_1_IP}
93 BuiltIn.Wait Until Keyword Succeeds 10s 20s OVSDB.Verify Ovsdb State ${OS_COMPUTE_2_IP}
94 VpnOperations.Verify Tunnel Status as UP
95 Verify Ping between Inter Intra And Enterprise host
97 Verify The Subnet Route For One Subnet On Single Vswitch
98 [Documentation] Verify the subnet route for one subnet on a single VSwitch
99 ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[2] @{NET_2_VM_IPS}[1] ping -c 3 @{EXTRA_NW_SUBNET}[1]
100 BuiltIn.Should Contain ${output} 64 bytes
101 Utils.Check For Elements At URI ${FIB_ENTRY_URL} ${EXTRA_NW_SUBNET}
102 Verify Ping between Inter Intra And Enterprise host
104 Verify The Subnet Route For Multiple Subnets On Multi Vswitch Topology
105 [Documentation] Configure one more IP on sub interface and verify the subnet route for multiple subnets on multi VSwitch topology
106 BuiltIn.Log Bring up enterprise host in another vswitch
107 Configure_IP_On_Sub_Interface @{NETWORKS}[0] ${NEW_EXTRA_NW_SUBNET} @{NET_1_VM_IPS}[2] ${MASK}
108 Verify_IP_Configured_On_Sub_Interface @{NETWORKS}[0] ${NEW_EXTRA_NW_SUBNET} @{NET_1_VM_IPS}[2]
109 ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[2] ${RPING_MIP_IP3}
110 BuiltIn.Should Contain ${output} broadcast
111 BuiltIn.Should Contain ${output} Received 0 reply
112 ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[2] @{NET_1_VM_IPS}[2] ping -c 3 ${NEW_EXTRA_NW_SUBNET}
113 BuiltIn.Should Contain ${output} 64 bytes
114 Verify Ping between Inter Intra And Enterprise host
116 Verify The Subnet Route When The Network Is Removed From The Vpn
117 [Documentation] Dissociate vpn from the network and verify the subnet route
118 FOR ${network} IN @{NETWORKS}
119 ${network_id} = OpenStackOperations.Get Net Id ${network}
120 VpnOperations.Dissociate L3VPN From Networks networkid=${network_id} vpnid=${VPN_INSTANCE_ID}
122 ${vm_ip_list} = BuiltIn.Create List @{NET_1_VM_IPS} @{NET_2_VM_IPS} @{NET_3_VM_IPS}
123 Utils.Check For Elements Not At URI ${FIB_ENTRY_URL} ${vm_ip_list}
124 FOR ${network} IN @{NETWORKS}
125 ${network_id} = OpenStackOperations.Get Net Id ${network}
126 VpnOperations.Associate L3VPN To Network networkid=${network_id} vpnid=${VPN_INSTANCE_ID}
128 Utils.Check For Elements At URI ${FIB_ENTRY_URL} ${vm_ip_list}
129 Verify Ping between Inter Intra And Enterprise host
133 [Documentation] Test Suite for Subnet_Routing_and_Multicast_Deployments.
134 VpnOperations.Basic Suite Setup
135 BgpOperations.Start Quagga Processes On ODL ${ODL_SYSTEM_IP}
136 BgpOperations.Start Quagga Processes On DCGW ${DCGW_SYSTEM_IP}
140 [Documentation] Test Teardown for Subnet_Routing_and_Multicast_Deployments.
141 BgpOperations.Delete BGP Configuration On ODL session
142 BgpOperations.Delete BGP Config On Quagga ${DCGW_SYSTEM_IP} ${AS_ID}
143 BgpOperations.Stop BGP Processes On Node ${ODL_SYSTEM_IP}
144 BgpOperations.Stop BGP Processes On Node ${DCGW_SYSTEM_IP}
145 OpenStackOperations.OpenStack Suite Teardown
148 [Documentation] Create basic topology
149 OpenStackOperations.OpenStack Suite Setup
150 ${id} = OpenStackOperations.Get Project Id ${ODL_RESTCONF_USER}
151 OpenStackOperations.Set Instance Quota For Project ${NUM_OF_INSTANCES} ${id}
152 Create Neutron Networks
153 Create Neutron Subnets ${3}
154 OpenStackOperations.Create And Configure Security Group ${SECURITY_GROUP}
157 Create Sub Interfaces And Verify
159 FOR ${network} IN @{NETWORKS}
160 ${network_id} = OpenStackOperations.Get Net Id ${network}
161 VpnOperations.Associate L3VPN To Network networkid=${network_id} vpnid=${VPN_INSTANCE_ID}
163 Create BGP Config On ODL
164 Create BGP Config On DCGW
165 BuiltIn.Wait Until Keyword Succeeds 60s 10s VpnOperations.Verify Tunnel Status as UP
166 ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[0] ${RPING_MIP_IP}
167 BuiltIn.Should Contain ${output} broadcast Received 0 reply
168 ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[1] @{NET_2_VM_IPS}[0] ${RPING_MIP_IP1}
169 BuiltIn.Should Contain ${output} broadcast Received 0 reply
170 ${output} = OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[2] @{NET_3_VM_IPS}[0] ${RPING_MIP_IP2}
171 BuiltIn.Should Contain ${output} broadcast Received 0 reply
173 Create Neutron Networks
174 [Documentation] Create required number of networks
175 FOR ${net} IN @{NETWORKS}
176 OpenStackOperations.Create Network ${net}
178 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${NETWORK_URL} ${NETWORKS}
180 Create Neutron Subnets
181 [Arguments] ${num_of_network} ${additional_args}=${EMPTY} ${verbose}=TRUE
182 [Documentation] Create required number of subnets for previously created networks
183 FOR ${index} IN RANGE 0 ${num_of_network}
184 OpenStackOperations.Create SubNet @{NETWORKS}[${index}] @{SUBNETS}[${index}] @{SUBNET_CIDR}[${index}]
186 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${SUBNETWORK_URL} ${SUBNETS}
189 [Documentation] Create required number of ports under previously created subnets
190 ${allowed_address_pairs_args1} = BuiltIn.Set Variable --allowed-address ip-address=@{EXTRA_NW_SUBNET}[0] --allowed-address ip-address=@{EXTRA_NW_SUBNET}[1]
191 ${allowed_address_pairs_args2} = BuiltIn.Set Variable --allowed-address ip-address=@{EXTRA_NW_SUBNET}[1] --allowed-address ip-address=@{EXTRA_NW_SUBNET}[2]
192 ${allowed_address_pairs_args3} = BuiltIn.Set Variable --allowed-address ip-address=@{EXTRA_NW_SUBNET}[2] --allowed-address ip-address=@{EXTRA_NW_SUBNET}[0]
193 FOR ${index} IN RANGE 0 ${NUM_OF_PORTS_PER_NETWORK}
194 OpenStackOperations.Create Port @{NETWORKS}[0] @{NET_1_PORTS}[${index}] sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args1}
196 FOR ${index} IN RANGE 0 ${NUM_OF_PORTS_PER_NETWORK}
197 OpenStackOperations.Create Port @{NETWORKS}[1] @{NET_2_PORTS}[${index}] sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args2}
199 FOR ${index} IN RANGE 0 ${NUM_OF_PORTS_PER_NETWORK}
200 OpenStackOperations.Create Port @{NETWORKS}[2] @{NET_3_PORTS}[${index}] sg=${SECURITY_GROUP} additional_args=${allowed_address_pairs_args3}
204 [Documentation] Create Vm instances on compute nodes
205 FOR ${index} IN RANGE 0 2
206 OpenStackOperations.Create Vm Instance With Port On Compute Node @{NET_1_PORTS}[${index}] @{NET_1_VMS}[${index}] ${OS_CMP1_HOSTNAME} sg=${SECURITY_GROUP}
207 OpenStackOperations.Create Vm Instance With Port On Compute Node @{NET_1_PORTS}[${index+2}] @{NET_1_VMS}[${index+2}] ${OS_CMP2_HOSTNAME} sg=${SECURITY_GROUP}
208 OpenStackOperations.Create Vm Instance With Port On Compute Node @{NET_2_PORTS}[${index}] @{NET_2_VMS}[${index}] ${OS_CMP1_HOSTNAME} sg=${SECURITY_GROUP}
209 OpenStackOperations.Create Vm Instance With Port On Compute Node @{NET_2_PORTS}[${index+2}] @{NET_2_VMS}[${index+2}] ${OS_CMP2_HOSTNAME} sg=${SECURITY_GROUP}
210 OpenStackOperations.Create Vm Instance With Port On Compute Node @{NET_3_PORTS}[${index}] @{NET_3_VMS}[${index}] ${OS_CMP1_HOSTNAME} sg=${SECURITY_GROUP}
211 OpenStackOperations.Create Vm Instance With Port On Compute Node @{NET_3_PORTS}[${index+2}] @{NET_3_VMS}[${index+2}] ${OS_CMP2_HOSTNAME} sg=${SECURITY_GROUP}
213 @{NET_1_VM_IPS} ${NET1_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_1_VMS}
214 @{NET_2_VM_IPS} ${NET2_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_2_VMS}
215 @{NET_3_VM_IPS} ${NET3_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_3_VMS}
216 BuiltIn.Set Suite Variable @{NET_1_VM_IPS}
217 BuiltIn.Set Suite Variable @{NET_2_VM_IPS}
218 BuiltIn.Set Suite Variable @{NET_3_VM_IPS}
219 BuiltIn.Should Not Contain ${NET_1_VM_IPS} None
220 BuiltIn.Should Not Contain ${NET_2_VM_IPS} None
221 BuiltIn.Should Not Contain ${NET_3_VM_IPS} None
222 OpenStackOperations.Show Debugs @{NET_1_VMS} @{NET_2_VMS} @{NET_3_VMS}
224 Create Sub Interfaces And Verify
225 [Documentation] Create Sub Interface and verify for all VMs
226 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Configure_IP_On_Sub_Interface @{NETWORKS}[0] @{EXTRA_NW_SUBNET}[0] @{NET_1_VM_IPS}[0]
227 ... ${MASK} @{INTERFACE_STATE}[0]
228 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Verify_IP_Configured_On_Sub_Interface @{NETWORKS}[0] @{EXTRA_NW_SUBNET}[0] @{NET_1_VM_IPS}[0]
229 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Configure_IP_On_Sub_Interface @{NETWORKS}[1] @{EXTRA_NW_SUBNET}[1] @{NET_2_VM_IPS}[0]
230 ... ${MASK} @{INTERFACE_STATE}[0]
231 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Verify_IP_Configured_On_Sub_Interface @{NETWORKS}[1] @{EXTRA_NW_SUBNET}[1] @{NET_2_VM_IPS}[0]
232 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Configure_IP_On_Sub_Interface @{NETWORKS}[2] @{EXTRA_NW_SUBNET}[2] @{NET_3_VM_IPS}[0]
233 ... ${MASK} @{INTERFACE_STATE}[0]
234 BuiltIn.Wait Until Keyword Succeeds 30s 5s OpenStackOperations.Verify_IP_Configured_On_Sub_Interface @{NETWORKS}[2] @{EXTRA_NW_SUBNET}[2] @{NET_3_VM_IPS}[0]
237 [Documentation] Create L3VPN and verify the same
238 ${net_id} = OpenStackOperations.Get Net Id @{NETWORKS}[0]
239 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
240 VpnOperations.VPN Create L3VPN vpnid=${VPN_INSTANCE_ID} name=${VPN_NAME} rd=["${L3VPN_RD}"] exportrt=["${L3VPN_RD}"] importrt=["${L3VPN_RD}"] tenantid=${tenant_id}
241 VpnOperations.Verify L3VPN On ODL ${VPN_INSTANCE_ID}
243 Create BGP Config On ODL
244 [Documentation] Configure BGP Config on ODL
245 KarafKeywords.Issue Command On Karaf Console ${BGP_CONFIG_SERVER_CMD}
246 BgpOperations.Create BGP Configuration On ODL localas=${AS_ID} routerid=${ODL_SYSTEM_IP}
247 BgpOperations.AddNeighbor To BGP Configuration On ODL remoteas=${AS_ID} neighborAddr=${DCGW_SYSTEM_IP}
248 ${output} = BgpOperations.Get BGP Configuration On ODL session
249 BuiltIn.Should Contain ${output} ${DCGW_SYSTEM_IP}
251 Create BGP Config On DCGW
252 [Documentation] Configure BGP on DCGW
253 BgpOperations.Configure BGP And Add Neighbor On DCGW ${DCGW_SYSTEM_IP} ${AS_ID} ${DCGW_SYSTEM_IP} ${ODL_SYSTEM_IP} ${VPN_NAME} ${L3VPN_RD}
255 ${output} = BgpOperations.Execute Show Command On Quagga ${DCGW_SYSTEM_IP} ${RUN_CONFIG}
256 BuiltIn.Should Contain ${output} ${ODL_SYSTEM_IP}
257 ${output} = BuiltIn.Wait Until Keyword Succeeds 180s 10s BgpOperations.Verify BGP Neighbor Status On Quagga ${DCGW_SYSTEM_IP} ${ODL_SYSTEM_IP}
259 Verify Ping between Inter Intra And Enterprise host
260 [Documentation] Ping Enterprise Host for Intra, Inter from different and same network
261 ${dst_ip_list} = BuiltIn.Create List @{NET_1_VM_IPS} @{NET_2_VM_IPS} @{EXTRA_NW_SUBNET}
262 OpenStackOperations.Test Operations From Vm Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[0] ${dst_ip_list}
263 OpenStackOperations.Test Operations From Vm Instance @{NETWORKS}[1] @{NET_2_VM_IPS}[0] ${dst_ip_list}
264 OpenStackOperations.Test Operations From Vm Instance @{NETWORKS}[0] @{NET_1_VM_IPS}[2] ${dst_ip_list}
265 OpenStackOperations.Test Operations From Vm Instance @{NETWORKS}[1] @{NET_2_VM_IPS}[2] ${dst_ip_list}