Remove variables and scripts for netvirt
[integration/test.git] / csit / suites / openstack / connectivity / external_network.robot
1 *** Settings ***
2 Documentation       Test suite to check North-South connectivity in L3 using a router and an external network
3
4 Library             Collections
5 Library             SSHLibrary
6 Library             OperatingSystem
7 Library             RequestsLibrary
8 Resource            ../../../libraries/DevstackUtils.robot
9 Resource            ../../../libraries/DataModels.robot
10 Resource            ../../../libraries/OpenStackOperations.robot
11 Resource            ../../../libraries/SetupUtils.robot
12 Resource            ../../../libraries/Utils.robot
13
14 Suite Setup         Suite Setup
15 Suite Teardown      OpenStackOperations.OpenStack Suite Teardown
16 Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
17 Test Teardown       OpenStackOperations.Get Test Teardown Debugs
18
19 Force Tags          skip_if_${odl_snat_mode}
20
21
22 *** Variables ***
23 ${SECURITY_GROUP}                       l3_ext_sg
24 @{NETWORKS}                             l3_ext_net_1    l3_ext_net_2
25 @{SUBNETS}                              l3_ext_sub_1    l3_ext_sub_2
26 @{ROUTERS}                              l3_ext_router_1    l3_ext_router_2
27 @{NET1_FIP_VMS}                         l3_ext_net_1_fip_vm_1    l3_ext_net_1_fip_vm_2    l3_ext_net_1_fip_vm_3
28 @{NET1_SNAT_VMS}                        l3_ext_net_1_snat_vm_1    l3_ext_net_1_snat_vm_2
29 @{NET2_SNAT_VMS}                        l3_ext_net_2_snat_vm_3
30 @{SNAT_VMS}                             @{NET1_SNAT_VMS}    @{NET2_SNAT_VMS}
31 @{SUBNET_CIDRS}                         41.0.0.0/24    42.0.0.0/24
32 # Parameter values below are based on releng/builder - changing them requires updates in releng/builder as well
33 ${EXTERNAL_GATEWAY}                     10.10.10.250
34 ${EXTERNAL_PNF}                         10.10.10.253
35 ${EXTERNAL_SUBNET}                      10.10.10.0/24
36 ${EXTERNAL_SUBNET_ALLOCATION_POOL}      start=10.10.10.2,end=10.10.10.249
37 ${EXTERNAL_INTERNET_ADDR}               10.9.9.9
38 ${EXTERNAL_NET_NAME}                    external-net
39 ${EXTERNAL_SUBNET_NAME}                 external-subnet
40
41
42 *** Test Cases ***
43 Initial Ping To External Network PNF from Vm Instance 1
44     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
45     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
46     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
47     OpenStackOperations.Test Operations From Vm Instance
48     ...    ${NETWORKS}[0]
49     ...    ${NET1_FIP_VM_IPS}[0]
50     ...    ${dst_ip}
51     ...    ttl=1
52     ...    ping_should_succeed=${expect_ping_to_work}
53     ...    ping_tries=8
54
55 Initial Ping To External Network PNF from Vm Instance 2
56     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
57     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
58     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
59     OpenStackOperations.Test Operations From Vm Instance
60     ...    ${NETWORKS}[0]
61     ...    ${NET1_FIP_VM_IPS}[1]
62     ...    ${dst_ip}
63     ...    ttl=1
64     ...    ping_should_succeed=${expect_ping_to_work}
65     ...    ping_tries=8
66
67 Create And Associate Floating IPs for VMs
68     [Documentation]    Create and associate a floating IP for the VM
69     ${VM_FLOATING_IPS} =    OpenStackOperations.Create And Associate Floating IPs
70     ...    ${EXTERNAL_NET_NAME}
71     ...    @{NET1_FIP_VMS}
72     BuiltIn.Set Suite Variable    ${VM_FLOATING_IPS}
73     [Teardown]    BuiltIn.Run Keywords    OpenStackOperations.Show Debugs    @{NET1_FIP_VMS}
74     ...    AND    OpenStackOperations.Get Test Teardown Debugs
75
76 Ping External Gateway From Control Node
77     [Documentation]    Check reachability of external gateway by pinging it from the control node.
78     OpenStackOperations.Ping Vm From Control Node
79     ...    ${EXTERNAL_GATEWAY}
80     ...    additional_args=-I ${EXTERNAL_INTERNET_ADDR}
81
82 Ping Vm Instance1 Floating IP From Control Node
83     [Documentation]    Check reachability of VM instance through floating IP by pinging them.
84     OpenStackOperations.Ping Vm From Control Node
85     ...    ${VM_FLOATING_IPS}[0]
86     ...    additional_args=-I ${EXTERNAL_INTERNET_ADDR}
87
88 Ping Vm Instance2 Floating IP From Control Node
89     [Documentation]    Check reachability of VM instance through floating IP by pinging them.
90     OpenStackOperations.Ping Vm From Control Node
91     ...    ${VM_FLOATING_IPS}[1]
92     ...    additional_args=-I ${EXTERNAL_INTERNET_ADDR}
93
94 Ping Vm Instance2 Floating IP From Vm Instance1 With Floating IP (Hairpinning)
95     [Documentation]    Check reachability of VM instance floating IP from another VM instance with FIP (with ttl=1 to make sure no router hops)
96     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[1]
97     OpenStackOperations.Test Operations From Vm Instance
98     ...    ${NETWORKS}[0]
99     ...    ${NET1_FIP_VM_IPS}[0]
100     ...    ${dst_ip}
101     ...    ttl=1
102
103 Connectivity Tests To Vm Instance2 Floating IP From Vm Instance3 With Floating IP (FIP-FIP in the same compute node)
104     [Documentation]    Check reachability of VM instance floating IP from another VM instance with FIP (FIP-FIP in the same compute node)
105     BuiltIn.Pass Execution    pass this test until ovs 2.9 is ready
106     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[1]
107     OpenStackOperations.Test Netcat Operations From Vm Instance    ${NETWORKS}[0]    ${NET1_FIP_VM_IPS}[2]    ${dst_ip}
108
109 Ping Vm Instance1 Floating IP From SNAT VM Instance1
110     [Documentation]    Check reachability of VM instance floating IP from another VM without Floating IP
111     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
112     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[0]
113     OpenStackOperations.Test Operations From Vm Instance
114     ...    ${NETWORKS}[0]
115     ...    ${NET1_SNAT_VM_IPS}[0]
116     ...    ${dst_ip}
117     ...    ttl=1
118     ...    ping_should_succeed=${expect_ping_to_work}
119     OpenStackOperations.Test Operations From Vm Instance
120     ...    ${NETWORKS}[1]
121     ...    ${NET2_SNAT_VM_IPS}[0]
122     ...    ${dst_ip}
123     ...    ttl=1
124     ...    ping_should_succeed=${expect_ping_to_work}
125
126 Ping Vm Instance1 Floating IP From SNAT VM Instance2
127     [Documentation]    Check reachability of VM instance floating IP from another VM without Floating IP
128     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
129     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[0]
130     OpenStackOperations.Test Operations From Vm Instance
131     ...    ${NETWORKS}[0]
132     ...    ${NET1_SNAT_VM_IPS}[1]
133     ...    ${dst_ip}
134     ...    ttl=1
135     ...    ping_should_succeed=${expect_ping_to_work}
136
137 Ping Vm Instance2 Floating IP From SNAT VM Instance1
138     [Documentation]    Check reachability of VM instance floating IP from another VM without Floating IP
139     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
140     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[1]
141     OpenStackOperations.Test Operations From Vm Instance
142     ...    ${NETWORKS}[0]
143     ...    ${NET1_SNAT_VM_IPS}[0]
144     ...    ${dst_ip}
145     ...    ttl=1
146     ...    ping_should_succeed=${expect_ping_to_work}
147     OpenStackOperations.Test Operations From Vm Instance
148     ...    ${NETWORKS}[1]
149     ...    ${NET2_SNAT_VM_IPS}[0]
150     ...    ${dst_ip}
151     ...    ttl=1
152     ...    ping_should_succeed=${expect_ping_to_work}
153
154 Ping Vm Instance2 Floating IP From SNAT VM Instance2
155     [Documentation]    Check reachability of VM instance floating IP from another VM without Floating IP
156     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
157     ${dst_ip} =    BuiltIn.Create List    ${VM_FLOATING_IPS}[1]
158     OpenStackOperations.Test Operations From Vm Instance
159     ...    ${NETWORKS}[0]
160     ...    ${NET1_SNAT_VM_IPS}[1]
161     ...    ${dst_ip}
162     ...    ttl=1
163     ...    ping_should_succeed=${expect_ping_to_work}
164
165 Ping External Network PNF from Vm Instance 1 After Floating IP Assignment
166     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
167     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
168     OpenStackOperations.Test Operations From Vm Instance
169     ...    ${NETWORKS}[0]
170     ...    ${NET1_FIP_VM_IPS}[0]
171     ...    ${dst_ip}
172     ...    ttl=1
173     ...    ping_tries=8
174
175 SNAT - TCP connection to External Gateway From SNAT VM Instance1
176     [Documentation]    Login to the VM instance and test TCP connection to the controller via SNAT
177     [Tags]    non_gate
178     OpenStackOperations.Test Netcat Operations From Vm Instance
179     ...    ${NETWORKS}[0]
180     ...    ${NET1_SNAT_VM_IPS}[0]
181     ...    ${EXTERNAL_GATEWAY}
182
183 SNAT - UDP connection to External Gateway From SNAT VM Instance1
184     [Documentation]    Login to the VM instance and test UDP connection to the controller via SNAT
185     [Tags]    non_gate
186     OpenStackOperations.Test Netcat Operations From Vm Instance
187     ...    ${NETWORKS}[0]
188     ...    ${NET1_SNAT_VM_IPS}[0]
189     ...    ${EXTERNAL_GATEWAY}
190     ...    -u
191
192 SNAT - TCP connection to External Gateway From SNAT VM Instance2
193     [Documentation]    Login to the VM instance and test TCP connection to the controller via SNAT
194     [Tags]    non_gate
195     OpenStackOperations.Test Netcat Operations From Vm Instance
196     ...    ${NETWORKS}[0]
197     ...    ${NET1_SNAT_VM_IPS}[1]
198     ...    ${EXTERNAL_GATEWAY}
199
200 SNAT - UDP connection to External Gateway From SNAT VM Instance2
201     [Documentation]    Login to the VM instance and test UDP connection to the controller via SNAT
202     [Tags]    non_gate
203     OpenStackOperations.Test Netcat Operations From Vm Instance
204     ...    ${NETWORKS}[0]
205     ...    ${NET1_SNAT_VM_IPS}[1]
206     ...    ${EXTERNAL_GATEWAY}
207     ...    -u
208
209 SNAT - TCP connection to External Gateway From SNAT VM Instance3
210     [Documentation]    Login to the VM instance and test TCP connection to the controller via SNAT
211     [Tags]    non_gate
212     OpenStackOperations.Test Netcat Operations From Vm Instance
213     ...    ${NETWORKS}[1]
214     ...    ${NET2_SNAT_VM_IPS}[0]
215     ...    ${EXTERNAL_GATEWAY}
216
217 SNAT - UDP connection to External Gateway From SNAT VM Instance3
218     [Documentation]    Login to the VM instance and test UDP connection to the controller via SNAT
219     [Tags]    non_gate
220     OpenStackOperations.Test Netcat Operations From Vm Instance
221     ...    ${NETWORKS}[1]
222     ...    ${NET2_SNAT_VM_IPS}[0]
223     ...    ${EXTERNAL_GATEWAY}
224     ...    -u
225
226 Ping External Network PNF from SNAT VM Instance1
227     [Documentation]    Check reachability of External Network PNF from SNAT VM Instance1
228     [Tags]    non_gate
229     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
230     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
231     OpenStackOperations.Test Operations From Vm Instance
232     ...    ${NETWORKS}[0]
233     ...    ${NET1_SNAT_VM_IPS}[0]
234     ...    ${dst_ip}
235     ...    ping_should_succeed=${expect_ping_to_work}
236
237 Ping External Network PNF from SNAT VM Instance2
238     [Documentation]    Check reachability of External Network PNF from SNAT VM Instance2
239     [Tags]    non_gate
240     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
241     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
242     OpenStackOperations.Test Operations From Vm Instance
243     ...    ${NETWORKS}[0]
244     ...    ${NET1_SNAT_VM_IPS}[1]
245     ...    ${dst_ip}
246     ...    ping_should_succeed=${expect_ping_to_work}
247
248 Remove Floating Ip from VM Instance 1
249     [Documentation]    Delete FIP from VM Instance 1
250     [Tags]    non_gate
251     OpenStackOperations.Remove Floating Ip From Vm    ${NET1_FIP_VMS}[0]    ${VM_FLOATING_IPS}[0]
252
253 Remove Floating Ip from VM Instance 2
254     [Documentation]    Delete FIP from VM Instance 2
255     [Tags]    non_gate
256     OpenStackOperations.Remove Floating Ip From Vm    ${NET1_FIP_VMS}[1]    ${VM_FLOATING_IPS}[1]
257
258 Ping External Network PNF from Vm Instance 1 After Floating IP Removal
259     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
260     [Tags]    non_gate
261     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
262     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
263     OpenStackOperations.Test Operations From Vm Instance
264     ...    ${NETWORKS}[0]
265     ...    ${NET1_FIP_VM_IPS}[0]
266     ...    ${dst_ip}
267     ...    ttl=1
268     ...    ping_should_succeed=${expect_ping_to_work}
269
270 Ping External Network PNF from Vm Instance 2 After Floating IP Removal
271     [Documentation]    Check reachability of External Network PNF from VM instance (with ttl=1 to make sure no router hops)
272     [Tags]    non_gate
273     ${expect_ping_to_work} =    Set Variable If    "skip_if_controller" in @{TEST_TAGS}    False    True
274     ${dst_ip} =    BuiltIn.Create List    ${EXTERNAL_PNF}
275     OpenStackOperations.Test Operations From Vm Instance
276     ...    ${NETWORKS}[0]
277     ...    ${NET1_FIP_VM_IPS}[1]
278     ...    ${dst_ip}
279     ...    ttl=1
280     ...    ping_should_succeed=${expect_ping_to_work}
281
282
283 *** Keywords ***
284 Suite Setup
285     OpenStackOperations.OpenStack Suite Setup
286     FOR    ${network}    IN    @{NETWORKS}
287         OpenStackOperations.Create Network    ${network}
288     END
289     FOR    ${network}    ${subnet}    ${cidr}    IN ZIP    ${NETWORKS}    ${SUBNETS}
290     ...    ${SUBNET_CIDRS}
291         OpenStackOperations.Create SubNet    ${network}    ${subnet}    ${cidr}
292     END
293     OpenStackOperations.Create Allow All SecurityGroup    ${SECURITY_GROUP}
294     OpenStackOperations.Create Vm Instance On Compute Node
295     ...    ${NETWORKS}[0]
296     ...    ${NET1_FIP_VMS}[0]
297     ...    ${OS_CMP1_HOSTNAME}
298     ...    sg=${SECURITY_GROUP}
299     OpenStackOperations.Create Vm Instance On Compute Node
300     ...    ${NETWORKS}[0]
301     ...    ${NET1_FIP_VMS}[1]
302     ...    ${OS_CMP2_HOSTNAME}
303     ...    sg=${SECURITY_GROUP}
304     OpenStackOperations.Create Vm Instance On Compute Node
305     ...    ${NETWORKS}[0]
306     ...    ${NET1_FIP_VMS}[2]
307     ...    ${OS_CMP2_HOSTNAME}
308     ...    sg=${SECURITY_GROUP}
309     OpenStackOperations.Create Vm Instance On Compute Node
310     ...    ${NETWORKS}[0]
311     ...    ${NET_1_SNAT_VMS}[0]
312     ...    ${OS_CMP1_HOSTNAME}
313     ...    sg=${SECURITY_GROUP}
314     OpenStackOperations.Create Vm Instance On Compute Node
315     ...    ${NETWORKS}[0]
316     ...    ${NET_1_SNAT_VMS}[1]
317     ...    ${OS_CMP1_HOSTNAME}
318     ...    sg=${SECURITY_GROUP}
319     OpenStackOperations.Create Vm Instance On Compute Node
320     ...    ${NETWORKS}[1]
321     ...    ${NET_2_SNAT_VMS}[0]
322     ...    ${OS_CMP2_HOSTNAME}
323     ...    sg=${SECURITY_GROUP}
324     @{NET1_FIP_VM_IPS}    ${NET1_FIP_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET1_FIP_VMS}
325     @{NET1_SNAT_VM_IPS}    ${NET1_SNAT_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET1_SNAT_VMS}
326     @{NET2_SNAT_VM_IPS}    ${NET2_SNAT_DHCP_IP} =    OpenStackOperations.Get VM IPs    @{NET2_SNAT_VMS}
327     BuiltIn.Set Suite Variable    @{NET1_FIP_VM_IPS}
328     BuiltIn.Set Suite Variable    @{NET1_SNAT_VM_IPS}
329     BuiltIn.Set Suite Variable    @{NET2_SNAT_VM_IPS}
330     BuiltIn.Should Not Contain    ${NET1_FIP_VM_IPS}    None
331     BuiltIn.Should Not Contain    ${NET1_SNAT_VM_IPS}    None
332     BuiltIn.Should Not Contain    ${NET2_SNAT_VM_IPS}    None
333     BuiltIn.Should Not Contain    ${NET1_FIP_DHCP_IP}    None
334     BuiltIn.Should Not Contain    ${NET1_SNAT_DHCP_IP}    None
335     BuiltIn.Should Not Contain    ${NET2_SNAT_DHCP_IP}    None
336     OpenStackOperations.Create Network
337     ...    ${EXTERNAL_NET_NAME}
338     ...    --provider-network-type flat --provider-physical-network ${PUBLIC_PHYSICAL_NETWORK}
339     OpenStackOperations.Update Network    ${EXTERNAL_NET_NAME}    --external
340     OpenStackOperations.Create Subnet
341     ...    ${EXTERNAL_NET_NAME}
342     ...    ${EXTERNAL_SUBNET_NAME}
343     ...    ${EXTERNAL_SUBNET}
344     ...    --gateway ${EXTERNAL_GATEWAY} --allocation-pool ${EXTERNAL_SUBNET_ALLOCATION_POOL}
345     FOR    ${router}    IN    @{ROUTERS}
346         OpenStackOperations.Create Router    ${router}
347     END
348     FOR    ${router}    ${interface}    IN ZIP    ${ROUTERS}    ${SUBNETS}
349         OpenStackOperations.Add Router Interface    ${router}    ${interface}
350     END
351     FOR    ${router}    IN    @{ROUTERS}
352         OpenStackOperations.Add Router Gateway    ${router}    ${EXTERNAL_NET_NAME}
353     END
354     ${data} =    Utils.Get Data From URI    1    ${NEUTRON_ROUTERS_API}
355     BuiltIn.Log    ${data}
356     FOR    ${router}    IN    @{ROUTERS}
357         Should Contain    ${data}    ${router}
358     END
359     OpenStackOperations.Show Debugs    @{NET1_FIP_VMS}    @{NET1_SNAT_VMS}    @{NET2_SNAT_VMS}
360     OpenStackOperations.Get Suite Debugs