2 Documentation Test suite to verify packet flows between vm instances.
3 Suite Setup Devstack Suite Setup source_pwd=yes
4 Suite Teardown Close All Connections
5 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
6 Test Teardown Get Test Teardown Debugs
8 Library OperatingSystem
9 Library RequestsLibrary
11 Resource ../../../libraries/Utils.robot
12 Resource ../../../libraries/OpenStackOperations.robot
13 Resource ../../../libraries/DevstackUtils.robot
14 Resource ../../../libraries/OVSDB.robot
15 Resource ../../../libraries/ClusterOvsdb.robot
16 Resource ../../../libraries/ClusterManagement.robot
17 Resource ../../../libraries/SetupUtils.robot
18 Variables ../../../variables/Variables.py
21 @{NETWORKS_NAME} l2_net_1 l2_net_2
22 @{SUBNETS_NAME} l2_sub_net_1 l2_sub_net_2
23 @{NET_1_VM_INSTANCES} VmInstance1_l2_net_1 VmInstance2_net_1 VmInstance3_net_1
24 @{NET_2_VM_INSTANCES} VmInstance1_l2_net_2 VmInstance2_net_2 VmInstance3_net_2
25 @{VM_IPS_NOT_DELETED} 70.0.0.4
26 @{cluster_down_list} ${1} ${2}
27 @{SUBNETS_RANGE} 70.0.0.0/24 80.0.0.0/24
28 ${SECURITY_GROUP} sg-clustering
31 Create All Controller Sessions
32 [Documentation] Create sessions for all three contorllers.
33 ClusterManagement.ClusterManagement Setup
36 [Documentation] Create Network with neutron request.
37 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
38 \ OpenStackOperations.Create Network ${NetworkElement}
40 Create Subnets For l2_net_1
41 [Documentation] Create Sub Nets for the Networks with neutron request.
42 OpenStackOperations.Create SubNet l2_net_1 l2_sub_net_1 @{SUBNETS_RANGE}[0]
44 Create Subnets For l2_net_2
45 [Documentation] Create Sub Nets for the Networks with neutron request.
46 OpenStackOperations.Create SubNet l2_net_2 l2_sub_net_2 @{SUBNETS_RANGE}[1]
49 [Documentation] Allow all TCP/UDP/ICMP packets for this suite
50 OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP}
52 Create Bridge Manually and Verify Before Fail
53 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
54 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
56 Add Tap Device Manually and Verify Before Fail
57 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
58 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP}
60 Delete the Bridge Manually and Verify Before Fail
61 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
62 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
65 [Documentation] Kill the karaf in First Controller
66 ${new_cluster_list} = ClusterManagement.Kill Single Member 1
67 Set Suite Variable ${new_cluster_list}
69 Create Bridge Manually and Verify After Fail
70 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
71 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
73 Add Tap Device Manually and Verify After Fail
74 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
75 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
77 Delete the Bridge Manually and Verify After Fail
78 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
79 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
82 [Documentation] Bring up ODL1 again
83 ClusterManagement.Start Single Member 1
85 Create Bridge Manually and Verify After Recover
86 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
87 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
89 Add Tap Device Manually and Verify After Recover
90 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
91 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP}
93 Delete the Bridge Manually and Verify After Recover
94 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
95 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
98 [Documentation] Kill the karaf in Second Controller
99 ClusterManagement.Kill Single Member 2
101 Create Vm Instances For l2_net_2
102 [Documentation] Create Vm instances using flavor and image names for a network.
103 OpenStackOperations.Create Vm Instances l2_net_2 ${NET_2_VM_INSTANCES} sg=${SECURITY_GROUP}
105 Create Vm Instances For l2_net_1
106 [Documentation] Create Vm instances using flavor and image names for a network.
107 Log ${devstack_conn_id}
108 OpenStackOperations.Create Vm Instances l2_net_1 ${NET_1_VM_INSTANCES} sg=${SECURITY_GROUP}
110 Check Vm Instances Have Ip Address
111 [Documentation] Test case to verify that all created VMs are ready and have received their ip addresses.
112 ... We are polling first and longest on the last VM created assuming that if it's received it's address
113 ... already the other instances should have theirs already or at least shortly thereafter.
114 # first, ensure all VMs are in ACTIVE state. if not, we can just fail the test case and not waste time polling
116 @{NET1_VM_IPS} ${NET1_DHCP_IP} = Get VM IPs @{NET_1_VM_INSTANCES}
117 @{NET2_VM_IPS} ${NET2_DHCP_IP} = Get VM IPs @{NET_2_VM_INSTANCES}
118 Set Suite Variable @{NET1_VM_IPS}
119 Set Suite Variable @{NET2_VM_IPS}
120 Should Not Contain ${NET1_VM_IPS} None
121 Should Not Contain ${NET2_VM_IPS} None
122 Should Not Contain ${NET1_DHCP_IP} None
123 Should Not Contain ${NET2_DHCP_IP} None
124 [Teardown] Run Keywords Show Debugs @{NET_1_VM_INSTANCES} @{NET_2_VM_INSTANCES}
125 ... AND Get Test Teardown Debugs
128 [Documentation] Bring up ODL2 again
129 ClusterManagement.Start Single Member 2
131 Ping Vm Instance1 In l2_net_1
132 [Documentation] Check reachability of vm instances by pinging to them.
134 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[0]
136 Ping Vm Instance2 In l2_net_1
137 [Documentation] Check reachability of vm instances by pinging to them.
139 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[1]
141 Ping Vm Instance3 In l2_net_1
142 [Documentation] Check reachability of vm instances by pinging to them.
144 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[2]
146 Ping Vm Instance1 In l2_net_2
147 [Documentation] Check reachability of vm instances by pinging to them.
149 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[0]
151 Ping Vm Instance2 In l2_net_2
152 [Documentation] Check reachability of vm instances by pinging to them.
154 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[1]
156 Ping Vm Instance3 In l2_net_2
157 [Documentation] Check reachability of vm instances by pinging to them.
159 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[2]
162 [Documentation] Kill the karaf in Third Controller
163 ClusterManagement.Kill Single Member 3
165 Connectivity Tests From Vm Instance1 In l2_net_1
166 [Documentation] Logging to the vm instance using generated key pair.
167 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[0] ${NET_1_VM_IPS}
169 Connectivity Tests From Vm Instance2 In l2_net_1
170 [Documentation] Logging to the vm instance using generated key pair.
171 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[1] ${NET_1_VM_IPS}
173 Connectivity Tests From Vm Instance3 In l2_net_1
174 [Documentation] Logging to the vm instance using generated key pair.
175 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[2] ${NET_1_VM_IPS}
178 [Documentation] Bring up ODL3 again
179 ClusterManagement.Start Single Member 3
181 Take Down ODL1 and ODL2
182 [Documentation] Kill the karaf in First and Second Controller
183 ClusterManagement.Kill Members From List Or All ${cluster_down_list}
185 Connectivity Tests From Vm Instance1 In l2_net_2
186 [Documentation] Logging to the vm instance using generated key pair.
187 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[0] ${NET_2_VM_IPS}
189 Connectivity Tests From Vm Instance2 In l2_net_2
190 [Documentation] Logging to the vm instance using generated key pair.
191 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[1] ${NET_2_VM_IPS}
193 Connectivity Tests From Vm Instance3 In l2_net_2
194 [Documentation] Logging to the vm instance using generated key pair.
195 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[2] ${NET_2_VM_IPS}
197 Bring Up ODL1 and ODL2
198 [Documentation] Bring up ODL1 and ODL2 again.
199 ClusterManagement.Start Members From List Or All ${cluster_down_list}
202 [Documentation] Delete Vm instances using instance names.
203 OpenStackOperations.Delete Vm Instance VmInstance1_l2_net_1
205 No Ping For Deleted Vm
206 [Documentation] Check non reachability of deleted vm instances by pinging to them.
207 ${output}= OpenStackOperations.Ping From DHCP Should Not Succeed l2_net_1 @{NET_1_VM_IPS}[0]
209 Delete Vm Instances In network_1
210 [Documentation] Delete Vm instances using instance names in network_1.
211 : FOR ${VmElement} IN @{NET_1_VM_INSTANCES}
212 \ OpenStackOperations.Delete Vm Instance ${VmElement}
214 Delete Vm Instances In network_2
215 [Documentation] Delete Vm instances using instance names in network_2.
216 : FOR ${VmElement} IN @{NET_2_VM_INSTANCES}
217 \ OpenStackOperations.Delete Vm Instance ${VmElement}
219 Delete Sub Networks In network_1
220 [Documentation] Delete Sub Nets for the Networks with neutron request.
221 OpenStackOperations.Delete SubNet l2_sub_net_1
223 Delete Sub Networks In network_2
224 [Documentation] Delete Sub Nets for the Networks with neutron request.
225 OpenStackOperations.Delete SubNet l2_sub_net_2
228 [Documentation] Delete Networks with neutron request.
229 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
230 \ OpenStackOperations.Delete Network ${NetworkElement}
232 Delete Security Group
233 [Documentation] Delete security groups with neutron request
234 Delete SecurityGroup ${SECURITY_GROUP}
237 [Documentation] Verify that flows have been cleaned up properly after removing all neutron configurations
238 Verify Flows Are Cleaned Up On All OpenStack Nodes