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
30 Create All Controller Sessions
31 [Documentation] Create sessions for all three contorllers.
32 ClusterManagement.ClusterManagement Setup
35 [Documentation] Create Network with neutron request.
36 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
37 \ OpenStackOperations.Create Network ${NetworkElement}
39 Create Subnets For l2_net_1
40 [Documentation] Create Sub Nets for the Networks with neutron request.
41 OpenStackOperations.Create SubNet l2_net_1 l2_sub_net_1 @{SUBNETS_RANGE}[0]
43 Create Subnets For l2_net_2
44 [Documentation] Create Sub Nets for the Networks with neutron request.
45 OpenStackOperations.Create SubNet l2_net_2 l2_sub_net_2 @{SUBNETS_RANGE}[1]
47 Create Bridge Manually and Verify Before Fail
48 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
49 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
51 Add Tap Device Manually and Verify Before Fail
52 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
53 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP}
55 Delete the Bridge Manually and Verify Before Fail
56 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
57 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
60 [Documentation] Kill the karaf in First Controller
61 ${new_cluster_list} = ClusterManagement.Kill Single Member 1
62 Set Suite Variable ${new_cluster_list}
64 Create Bridge Manually and Verify After Fail
65 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
66 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
68 Add Tap Device Manually and Verify After Fail
69 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
70 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
72 Delete the Bridge Manually and Verify After Fail
73 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
74 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP} ${new_cluster_list}
77 [Documentation] Bring up ODL1 again
78 ClusterManagement.Start Single Member 1
80 Create Bridge Manually and Verify After Recover
81 [Documentation] Create bridge with OVS command and verify it gets applied from all instances.
82 ClusterOvsdb.Create Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
84 Add Tap Device Manually and Verify After Recover
85 [Documentation] Add tap devices to the bridge with OVS command and verify it gets applied from all instances.
86 ClusterOvsdb.Add Sample Tap Device To The Manual Bridge And Verify ${OS_CONTROL_NODE_IP}
88 Delete the Bridge Manually and Verify After Recover
89 [Documentation] Delete bridge with OVS command and verify it gets deleted from all instances.
90 ClusterOvsdb.Delete Sample Bridge Manually And Verify ${OS_CONTROL_NODE_IP}
93 [Documentation] Kill the karaf in Second Controller
94 ClusterManagement.Kill Single Member 2
96 Create Vm Instances For l2_net_2
97 [Documentation] Create Vm instances using flavor and image names for a network.
98 OpenStackOperations.Create Vm Instances l2_net_2 ${NET_2_VM_INSTANCES} sg=csit
100 Create Vm Instances For l2_net_1
101 [Documentation] Create Vm instances using flavor and image names for a network.
102 Log ${devstack_conn_id}
103 OpenStackOperations.Create Vm Instances l2_net_1 ${NET_1_VM_INSTANCES} sg=csit
105 Check Vm Instances Have Ip Address
106 [Documentation] Test case to verify that all created VMs are ready and have received their ip addresses.
107 ... We are polling first and longest on the last VM created assuming that if it's received it's address
108 ... already the other instances should have theirs already or at least shortly thereafter.
109 # first, ensure all VMs are in ACTIVE state. if not, we can just fail the test case and not waste time polling
111 : FOR ${vm} IN @{NET_1_VM_INSTANCES} @{NET_2_VM_INSTANCES}
112 \ Wait Until Keyword Succeeds 15s 5s Verify VM Is ACTIVE ${vm}
113 : FOR ${index} IN RANGE 1 5
114 \ ${NET1_VM_IPS} @{NET1_DHCP_IP} Verify VMs Received DHCP Lease @{NET_1_VM_INSTANCES}
115 \ ${NET2_VM_IPS} @{NET2_DHCP_IP} Verify VMs Received DHCP Lease @{NET_2_VM_INSTANCES}
116 \ ${VM_IPS}= Collections.Combine Lists ${NET1_VM_IPS} ${NET2_VM_IPS} ${NET1_DHCP_IP} ${NET2_DHCP_IP}
117 \ ${status} ${message} Run Keyword And Ignore Error List Should Not Contain Value ${VM_IPS} None
118 \ Exit For Loop If '${status}' == 'PASS'
120 : FOR ${vm} IN @{NET_1_VM_INSTANCES} @{NET_2_VM_INSTANCES}
121 \ Write Commands Until Prompt nova console-log ${vm} 30s
122 Append To List ${NET1_VM_IPS} @{NET1_DHCP_IP}[0]
123 Set Suite Variable ${NET1_VM_IPS}
124 Append To List ${NET2_VM_IPS} @{NET2_DHCP_IP}[0]
125 Set Suite Variable ${NET2_VM_IPS}
126 Should Not Contain ${NET1_VM_IPS} None
127 Should Not Contain ${NET2_VM_IPS} None
128 [Teardown] Run Keywords Show Debugs @{NET_1_VM_INSTANCES} @{NET_2_VM_INSTANCES}
129 ... AND Get Test Teardown Debugs
132 [Documentation] Bring up ODL2 again
133 ClusterManagement.Start Single Member 2
135 Ping Vm Instance1 In l2_net_1
136 [Documentation] Check reachability of vm instances by pinging to them.
138 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[0]
140 Ping Vm Instance2 In l2_net_1
141 [Documentation] Check reachability of vm instances by pinging to them.
143 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[1]
145 Ping Vm Instance3 In l2_net_1
146 [Documentation] Check reachability of vm instances by pinging to them.
148 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_1 @{NET_1_VM_IPS}[2]
150 Ping Vm Instance1 In l2_net_2
151 [Documentation] Check reachability of vm instances by pinging to them.
153 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[0]
155 Ping Vm Instance2 In l2_net_2
156 [Documentation] Check reachability of vm instances by pinging to them.
158 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[1]
160 Ping Vm Instance3 In l2_net_2
161 [Documentation] Check reachability of vm instances by pinging to them.
163 OpenStackOperations.Ping Vm From DHCP Namespace l2_net_2 @{NET_2_VM_IPS}[2]
166 [Documentation] Kill the karaf in Third Controller
167 ClusterManagement.Kill Single Member 3
169 Connectivity Tests From Vm Instance1 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}[0] ${NET_1_VM_IPS}
173 Connectivity Tests From Vm Instance2 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}[1] ${NET_1_VM_IPS}
177 Connectivity Tests From Vm Instance3 In l2_net_1
178 [Documentation] Logging to the vm instance using generated key pair.
179 OpenStackOperations.Test Operations From Vm Instance l2_net_1 @{NET_1_VM_IPS}[2] ${NET_1_VM_IPS}
182 [Documentation] Bring up ODL3 again
183 ClusterManagement.Start Single Member 3
185 Take Down ODL1 and ODL2
186 [Documentation] Kill the karaf in First and Second Controller
187 ClusterManagement.Kill Members From List Or All ${cluster_down_list}
189 Connectivity Tests From Vm Instance1 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}[0] ${NET_2_VM_IPS}
193 Connectivity Tests From Vm Instance2 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}[1] ${NET_2_VM_IPS}
197 Connectivity Tests From Vm Instance3 In l2_net_2
198 [Documentation] Logging to the vm instance using generated key pair.
199 OpenStackOperations.Test Operations From Vm Instance l2_net_2 @{NET_2_VM_IPS}[2] ${NET_2_VM_IPS}
201 Bring Up ODL1 and ODL2
202 [Documentation] Bring up ODL1 and ODL2 again.
203 ClusterManagement.Start Members From List Or All ${cluster_down_list}
206 [Documentation] Delete Vm instances using instance names.
207 OpenStackOperations.Delete Vm Instance VmInstance1_l2_net_1
209 No Ping For Deleted Vm
210 [Documentation] Check non reachability of deleted vm instances by pinging to them.
211 ${output}= OpenStackOperations.Ping From DHCP Should Not Succeed l2_network_1 @{NET_1_VM_IPS}[0]
213 Delete Vm Instances In network_1
214 [Documentation] Delete Vm instances using instance names in network_1.
215 : FOR ${VmElement} IN @{NET_1_VM_INSTANCES}
216 \ OpenStackOperations.Delete Vm Instance ${VmElement}
218 Delete Vm Instances In network_2
219 [Documentation] Delete Vm instances using instance names in network_2.
220 : FOR ${VmElement} IN @{NET_2_VM_INSTANCES}
221 \ OpenStackOperations.Delete Vm Instance ${VmElement}
223 Delete Sub Networks In network_1
224 [Documentation] Delete Sub Nets for the Networks with neutron request.
225 OpenStackOperations.Delete SubNet l2_sub_net_1
227 Delete Sub Networks In network_2
228 [Documentation] Delete Sub Nets for the Networks with neutron request.
229 OpenStackOperations.Delete SubNet l2_sub_net_2
232 [Documentation] Delete Networks with neutron request.
233 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
234 \ OpenStackOperations.Delete Network ${NetworkElement}