2 Documentation Test suite to verify packet flows between vm instances.
3 Suite Setup Devstack Suite Setup Tests source_pwd=yes
4 Suite Teardown Close All Connections
5 Test Teardown Run Keywords Show Debugs ${NET_1_VM_INSTANCES}
6 ... AND Show Debugs ${NET_2_VM_INSTANCES}
7 ... AND Get OvsDebugInfo
9 Library OperatingSystem
10 Library RequestsLibrary
12 Resource ../../../libraries/Utils.robot
13 Resource ../../../libraries/OpenStackOperations.robot
14 Resource ../../../libraries/DevstackUtils.robot
15 Resource ../../../libraries/OVSDB.robot
16 Resource ../../../libraries/ClusterOvsdb.robot
17 Resource ../../../libraries/ClusterManagement.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 @{NET_1_VM_IPS} 70.0.0.3 70.0.0.4 70.0.0.5
26 @{NET_2_VM_IPS} 80.0.0.3 80.0.0.4 80.0.0.5
27 @{VM_IPS_NOT_DELETED} 70.0.0.4
28 @{GATEWAY_IPS} 70.0.0.1 80.0.0.1
29 @{DHCP_IPS} 70.0.0.2 80.0.0.2
30 @{cluster_down_list} ${1} ${2}
31 @{SUBNETS_RANGE} 70.0.0.0/24 80.0.0.0/24
34 Create All Controller Sessions
35 [Documentation] Create sessions for all three contorllers.
36 ClusterManagement.ClusterManagement Setup
38 Check OVS Manager Connection Status
39 [Documentation] This will verify if the OVS manager is connected
40 ${output}= Wait Until Keyword Succeeds 5s 1s Ovsdb.Verify OVS Reports Connected ${OS_CONTROL_NODE_IP}
42 Set Suite Variable ${status} is_connected: true
43 ${dictionary}= Create Dictionary ${status}=9
44 Utils.Check Item Occurrence ${output} ${dictionary}
47 [Documentation] Create Network with neutron request.
48 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
49 \ OpenStackOperations.Create Network ${NetworkElement}
51 Create Subnets For l2_net_1
52 [Documentation] Create Sub Nets for the Networks with neutron request.
53 OpenStackOperations.Create SubNet l2_net_1 l2_sub_net_1 @{SUBNETS_RANGE}[0]
55 Create Subnets For l2_net_2
56 [Documentation] Create Sub Nets for the Networks with neutron request.
57 OpenStackOperations.Create SubNet l2_net_2 l2_sub_net_2 @{SUBNETS_RANGE}[1]
59 Create Bridge Manually and Verify Before Fail
60 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
61 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
63 Add Tap Device Manually and Verify Before Fail
64 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
65 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP}
67 Delete the Bridge Manually and Verify Before Fail
68 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
69 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
72 [Documentation] Kill the karaf in First Controller
73 ${new_cluster_list} = ClusterManagement.Kill Single Member 1
74 Set Suite Variable ${new_cluster_list}
76 Create Bridge Manually and Verify After Fail
77 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
78 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
80 Add Tap Device Manually and Verify After Fail
81 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
82 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
84 Delete the Bridge Manually and Verify After Fail
85 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
86 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
88 Create Vm Instances For l2_net_1
89 [Documentation] Create Vm instances using flavor and image names for a network.
90 Log ${devstack_conn_id}
91 OpenStackOperations.Create Vm Instances l2_net_1 ${NET_1_VM_INSTANCES} sg=csit
94 [Documentation] Bring up ODL1 again
95 ClusterManagement.Start Single Member 1
97 Create Bridge Manually and Verify After Recover
98 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
99 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
101 Add Tap Device Manually and Verify After Recover
102 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
103 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP}
105 Delete the Bridge Manually and Verify After Recover
106 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
107 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
110 [Documentation] Kill the karaf in Second Controller
111 ClusterManagement.Kill Single Member 2
113 Create Vm Instances For l2_net_2
114 [Documentation] Create Vm instances using flavor and image names for a network.
115 OpenStackOperations.Create Vm Instances l2_net_2 ${NET_2_VM_INSTANCES} sg=csit
118 [Documentation] Bring up ODL2 again
119 ClusterManagement.Start Single Member 2
121 Ping Vm Instance1 In l2_net_1
122 [Documentation] Check reachability of vm instances by pinging to them.
124 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[0]
126 Ping Vm Instance2 In l2_net_1
127 [Documentation] Check reachability of vm instances by pinging to them.
129 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[1]
131 Ping Vm Instance3 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}[2]
136 Ping Vm Instance1 In l2_net_2
137 [Documentation] Check reachability of vm instances by pinging to them.
139 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[0]
141 Ping Vm Instance2 In l2_net_2
142 [Documentation] Check reachability of vm instances by pinging to them.
144 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[1]
146 Ping Vm Instance3 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}[2]
152 [Documentation] Kill the karaf in Third Controller
153 ClusterManagement.Kill Single Member 3
155 Connectivity Tests From Vm Instance1 In l2_net_1
156 [Documentation] Logging to the vm instance using generated key pair.
157 ${dst_ip_list}= Create List @{NET_1_VM_IPS}[1] @{DHCP_IPS}[0] @{NET_1_VM_IPS}[2]
160 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[0] ${dst_ip_list}
162 Connectivity Tests From Vm Instance2 In l2_net_1
163 [Documentation] Logging to the vm instance using generated key pair.
164 ${dst_ip_list}= Create List @{NET_1_VM_IPS}[0] @{DHCP_IPS}[0] @{NET_1_VM_IPS}[2]
167 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[1] ${dst_ip_list}
169 Connectivity Tests From Vm Instance3 In l2_net_1
170 [Documentation] Logging to the vm instance using generated key pair.
171 ${dst_ip_list}= Create List @{NET_1_VM_IPS}[0] @{DHCP_IPS}[0] @{NET_1_VM_IPS}[1]
174 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[2] ${dst_ip_list}
177 [Documentation] Bring up ODL3 again
178 ClusterManagement.Start Single Member 3
180 Take Down ODL1 and ODL2
181 [Documentation] Kill the karaf in First and Second Controller
182 ClusterManagement.Kill Members From List Or All ${cluster_down_list}
184 Connectivity Tests From Vm Instance1 In l2_net_2
185 [Documentation] Logging to the vm instance using generated key pair.
186 ${dst_ip_list}= Create List @{NET_2_VM_IPS}[1] @{DHCP_IPS}[1] @{NET_2_VM_IPS}[2]
189 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[0] ${dst_ip_list}
191 Connectivity Tests From Vm Instance2 In l2_net_2
192 [Documentation] Logging to the vm instance using generated key pair.
193 ${dst_ip_list}= Create List @{NET_2_VM_IPS}[0] @{DHCP_IPS}[1] @{NET_2_VM_IPS}[2]
196 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[1] ${dst_ip_list}
198 Connectivity Tests From Vm Instance3 In l2_net_2
199 [Documentation] Logging to the vm instance using generated key pair.
200 ${dst_ip_list}= Create List @{NET_2_VM_IPS}[0] @{DHCP_IPS}[1] @{NET_2_VM_IPS}[1]
203 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[2] ${dst_ip_list}
205 Bring Up ODL1 and ODL2
206 [Documentation] Bring up ODL1 and ODL2 again.
207 ClusterManagement.Start Members From List Or All ${cluster_down_list}
210 [Documentation] Delete Vm instances using instance names.
211 OpenStackOperations.Delete Vm Instance VmInstance1_l2_net_1
213 No Ping For Deleted Vm
214 [Documentation] Check non reachability of deleted vm instances by pinging to them.
215 ${output}= OpenStackOperations.Ping From DHCP Should Not Succeed l2_network_1 @{NET_1_VM_IPS}[0]
217 Delete Vm Instances In network_1
218 [Documentation] Delete Vm instances using instance names in network_1.
219 : FOR ${VmElement} IN @{NET_1_VM_INSTANCES}
220 \ OpenStackOperations.Delete Vm Instance ${VmElement}
222 Delete Vm Instances In network_2
223 [Documentation] Delete Vm instances using instance names in network_2.
224 : FOR ${VmElement} IN @{NET_2_VM_INSTANCES}
225 \ OpenStackOperations.Delete Vm Instance ${VmElement}
227 Delete Sub Networks In network_1
228 [Documentation] Delete Sub Nets for the Networks with neutron request.
229 OpenStackOperations.Delete SubNet l2_sub_net_1
231 Delete Sub Networks In network_2
232 [Documentation] Delete Sub Nets for the Networks with neutron request.
233 OpenStackOperations.Delete SubNet l2_sub_net_2
236 [Documentation] Delete Networks with neutron request.
237 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
238 \ OpenStackOperations.Delete Network ${NetworkElement}