2 Documentation Test suite to check North-South connectivity in L3 using a router and an external network
3 Suite Setup BuiltIn.Run Keywords SetupUtils.Setup_Utils_For_Setup_And_Teardown
4 ... AND DevstackUtils.Devstack Suite Setup
5 Suite Teardown Close All Connections
6 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
7 Test Teardown Get Test Teardown Debugs
9 Library OperatingSystem
10 Library RequestsLibrary
11 Resource ../../../libraries/DevstackUtils.robot
12 Resource ../../../libraries/OpenStackOperations.robot
13 Resource ../../../libraries/SetupUtils.robot
14 Resource ../../../libraries/Utils.robot
17 @{NETWORKS_NAME} l3_net
18 @{SUBNETS_NAME} l3_subnet
19 @{VM_INSTANCES_FLOATING} VmInstanceFloating1 VmInstanceFloating2
20 @{VM_INSTANCES_SNAT} VmInstanceSnat3 VmInstanceSnat4
21 @{SUBNETS_RANGE} 90.0.0.0/24
22 ${external_gateway} 10.10.10.250
23 ${external_subnet} 10.10.10.0/24
24 ${external_physical_network} physnet1
25 ${external_net_name} external-net
26 ${external_subnet_name} external-subnet
29 Create All Controller Sessions
30 [Documentation] Create sessions for all three controllers
31 ClusterManagement.ClusterManagement Setup
33 Create Private Network
34 [Documentation] Create Network with neutron request.
35 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
36 \ OpenStackOperations.Create Network ${NetworkElement}
38 Create Subnet For Private Network
39 [Documentation] Create Sub Nets for the Networks with neutron request.
40 OpenStackOperations.Create SubNet @{NETWORKS_NAME}[0] @{SUBNETS_NAME}[0] @{SUBNETS_RANGE}[0]
43 [Documentation] Create VM instances using flavor and image names for a network.
44 OpenStackOperations.Create Vm Instances @{NETWORKS_NAME}[0] ${VM_INSTANCES_FLOATING} sg=csit
45 OpenStackOperations.Create Vm Instances @{NETWORKS_NAME}[0] ${VM_INSTANCES_SNAT} sg=csit
47 Check Vm Instances Have Ip Address
48 [Documentation] Test case to verify that all created VMs are ready and have received their ip addresses.
49 ... We are polling first and longest on the last VM created assuming that if it's received it's address
50 ... already the other instances should have theirs already or at least shortly thereafter.
51 # first, ensure all VMs are in ACTIVE state. if not, we can just fail the test case and not waste time polling
53 : FOR ${vm} IN @{VM_INSTANCES_FLOATING} @{VM_INSTANCES_SNAT}
54 \ Wait Until Keyword Succeeds 15s 5s Verify VM Is ACTIVE ${vm}
55 ${FLOATING_VM_COUNT} Get Length ${VM_INSTANCES_FLOATING}
56 ${SNAT_VM_COUNT} Get Length ${VM_INSTANCES_SNAT}
57 ${LOOP_COUNT} Evaluate ${FLOATING_VM_COUNT}+${SNAT_VM_COUNT}
58 : FOR ${index} IN RANGE 1 ${LOOP_COUNT}
59 \ ${FLOATING_VM_IPS} ${FLOATING_DHCP_IP} Wait Until Keyword Succeeds 180s 10s Verify VMs Received DHCP Lease
60 \ ... @{VM_INSTANCES_FLOATING}
61 \ ${SNAT_VM_IPS} ${SNAT_DHCP_IP} Wait Until Keyword Succeeds 180s 10s Verify VMs Received DHCP Lease
62 \ ... @{VM_INSTANCES_SNAT}
63 \ ${FLOATING_VM_LIST_LENGTH}= Get Length ${FLOATING_VM_IPS}
64 \ ${SNAT_VM_LIST_LENGTH}= Get Length ${SNAT_VM_IPS}
65 \ Exit For Loop If ${FLOATING_VM_LIST_LENGTH}==${FLOATING_VM_COUNT} and ${SNAT_VM_LIST_LENGTH}==${SNAT_VM_COUNT}
66 Append To List ${FLOATING_VM_IPS} ${FLOATING_DHCP_IP}
67 Set Suite Variable ${FLOATING_VM_IPS}
68 Append To List ${SNAT_VM_IPS} ${SNAT_DHCP_IP}
69 Set Suite Variable ${SNAT_VM_IPS}
70 [Teardown] Run Keywords Show Debugs ${VM_INSTANCES_FLOATING} ${VM_INSTANCES_SNAT}
71 ... AND Get Test Teardown Debugs
73 Create External Network And Subnet
74 Create Network ${external_net_name} --router:external --provider:network_type=flat --provider:physical_network=${external_physical_network}
75 Create Subnet ${external_net_name} ${external_subnet_name} ${external_subnet} --gateway ${external_gateway}
78 [Documentation] Create Router and Add Interface to the subnets.
79 OpenStackOperations.Create Router router1
81 Add Interfaces To Router
82 [Documentation] Add Interfaces
83 : FOR ${interface} IN @{SUBNETS_NAME}
84 \ OpenStackOperations.Add Router Interface router1 ${interface}
86 Add Router Gateway To Router
87 [Documentation] Add Router Gateway
88 OpenStackOperations.Add Router Gateway router1 ${external_net_name}
90 Verify Created Routers
91 [Documentation] Check created routers using northbound rest calls
92 ${data} Utils.Get Data From URI 1 ${NEUTRON_ROUTERS_API}
94 Should Contain ${data} router1
96 Create And Associate Floating IPs for VMs
97 [Documentation] Create and associate a floating IP for the VM
98 ${VM_FLOATING_IPS} OpenStackOperations.Create And Associate Floating IPs ${external_net_name} @{VM_INSTANCES_FLOATING}
99 Set Suite Variable ${VM_FLOATING_IPS}
100 [Teardown] Run Keywords Show Debugs ${VM_INSTANCES_FLOATING}
101 ... AND Get Test Teardown Debugs
103 Ping External Gateway From Control Node
104 [Documentation] Check reachability of external gateway by pinging it from the control node.
105 OpenStackOperations.Ping Vm From Control Node ${external_gateway}
107 Ping Vm Instance1 Floating IP From Control Node
108 [Documentation] Check reachability of VM instance through floating IP by pinging them.
109 OpenStackOperations.Ping Vm From Control Node @{VM_FLOATING_IPS}[0]
111 Ping Vm Instance2 Floating IP From Control Node
112 [Documentation] Check reachability of VM instance through floating IP by pinging them.
113 OpenStackOperations.Ping Vm From Control Node @{VM_FLOATING_IPS}[1]
115 Prepare SNAT - Install Netcat On Controller
116 Install Netcat On Controller
118 SNAT - TCP connection to External Gateway From SNAT VM Instance1
119 [Documentation] Login to the VM instance and test TCP connection to the controller via SNAT
120 Test Netcat Operations From Vm Instance @{NETWORKS_NAME}[0] @{SNAT_VM_IPS}[0] ${external_gateway}
122 SNAT - UDP connection to External Gateway From SNAT VM Instance1
123 [Documentation] Login to the VM instance and test UDP connection to the controller via SNAT
124 Test Netcat Operations From Vm Instance @{NETWORKS_NAME}[0] @{SNAT_VM_IPS}[0] ${external_gateway} -u
126 SNAT - TCP connection to External Gateway From SNAT VM Instance2
127 [Documentation] Login to the VM instance and test TCP connection to the controller via SNAT
128 Test Netcat Operations From Vm Instance @{NETWORKS_NAME}[0] @{SNAT_VM_IPS}[1] ${external_gateway}
130 SNAT - UDP connection to External Gateway From SNAT VM Instance2
131 [Documentation] Login to the VM instance and test UDP connection to the controller via SNAT
132 Test Netcat Operations From Vm Instance @{NETWORKS_NAME}[0] @{SNAT_VM_IPS}[1] ${external_gateway} -u
135 [Documentation] Delete Vm instances using instance names.
136 : FOR ${VmElement} IN @{VM_INSTANCES_FLOATING}
137 \ OpenStackOperations.Delete Vm Instance ${VmElement}
138 : FOR ${VmElement} IN @{VM_INSTANCES_SNAT}
139 \ OpenStackOperations.Delete Vm Instance ${VmElement}
141 Delete Router Interfaces
142 [Documentation] Remove Interface to the subnets.
143 : FOR ${interface} IN @{SUBNETS_NAME}
144 \ OpenStackOperations.Remove Interface router1 ${interface}
147 [Documentation] Delete Router and Interface to the subnets.
148 OpenStackOperations.Delete Router router1
150 Verify Deleted Routers
151 [Documentation] Check deleted routers using northbound rest calls
152 ${data} Utils.Get Data From URI 1 ${NEUTRON_ROUTERS_API}
154 Should Not Contain ${data} router1
157 [Documentation] Delete Sub Nets for the Networks with neutron request.
158 OpenStackOperations.Delete SubNet @{SUBNETS_NAME}[0]
161 [Documentation] Delete Networks with neutron request.
162 : FOR ${NetworkElement} IN @{NETWORKS_NAME}
163 \ OpenStackOperations.Delete Network ${NetworkElement}
164 OpenStackOperations.Delete Network ${external_net_name}