2 Documentation Test suite to validate network address translation(snat/dnat) functionality in openstack integrated environment.
3 ... All the testcases were written to do flow validation since dc gateway is unavailable in csit environment.
4 ... This suite assumes proper integration bridges and vxlan tunnels are configured in the environment.
5 Suite Setup Suite Setup
6 Suite Teardown Stop Suite
7 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
8 Test Teardown OpenStackOperations.Get Test Teardown Debugs
10 Library RequestsLibrary
13 Resource ../../../libraries/BgpOperations.robot
14 Resource ../../../libraries/OpenStackOperations.robot
15 Resource ../../../libraries/SetupUtils.robot
16 Resource ../../../libraries/Tcpdump.robot
17 Resource ../../../libraries/Utils.robot
18 Resource ../../../libraries/VpnOperations.robot
19 Resource ../../../variables/Variables.robot
20 Resource ../../../variables/netvirt/Variables.robot
23 ${SECURITY_GROUP} nat_sg
25 ${SNAT_ENABLED} "enable_snat": true
26 ${SNAT_DISABLED} "enable_snat": false
29 ${DCGW_SYSTEM_IP} ${TOOLS_SYSTEM_1_IP}
30 ${LOOPBACK_IP} 5.5.5.2
33 ${VPN_INSTANCE_ID} 4ae8cd92-48ca-49b5-94e1-b2921a261442
34 ${ExtIP} 100.100.100.24
35 @{NETWORKS} nat_net_1 nat_net_2
36 @{EXTERNAL_NETWORKS} nat_ext_11 nat_ext_22
37 @{EXTERNAL_SUB_NETWORKS} nat_ext_sub_net_1 nat_ext_sub_net_2
38 @{SUBNETS} nat_sub_net_1 nat_sub_net_2
39 @{SUBNET_CIDRS} 10.1.1.0/24 20.1.1.0/24
40 @{EXT_SUBNET_CIDRS} 100.100.100.0/24 200.200.200.0/24
41 @{PORTS} nat_port_1 nat_port_2 nat_port_3 nat_port_4
42 @{NET_1_VMS} nat_net_1_vm_1 nat_net_1_vm_2 nat_net_1_vm_3 nat_net_1_vm_4
45 Verify Successful Creation Of External Network With Router External Set To TRUE
46 [Documentation] Create external network,enable snat on router and validate the same.
47 OpenStackOperations.Add Router Gateway ${ROUTER} @{EXTERNAL_NETWORKS}[0] --enable-snat
48 ${output} = OpenStackOperations.Show Router ${ROUTER}
49 BuiltIn.Should Contain ${output} ${SNAT_ENABLED}
50 ${output} = OpenStackOperations.Show Network @{EXTERNAL_NETWORKS}[0]
51 BuiltIn.Should Contain ${output} @{EXTERNAL_NETWORKS}[0]
53 Verify Successful Update Of Router With External_gateway_info, Disable SNAT And Enable SNAT
54 [Documentation] Disable snat, enable snat and validate the same.
55 OpenStackOperations.Add Router Gateway ${ROUTER} @{EXTERNAL_NETWORKS}[0] --disable-snat
56 ${output} = OpenStackOperations.Show Router ${ROUTER}
57 BuiltIn.Should Contain ${output} ${SNAT_DISABLED}
58 OpenStackOperations.Add Router Gateway ${ROUTER} @{EXTERNAL_NETWORKS}[0] --enable-snat
59 ${output} = OpenStackOperations.Show Router ${ROUTER}
60 BuiltIn.Should Contain ${output} ${SNAT_ENABLED}
62 Verify Successful Deletion Of External Network
63 [Documentation] Delete the external network and validate the same.
64 OpenStackOperations.Remove Gateway ${ROUTER}
65 ${output} = OpenStackOperations.Show Router ${ROUTER}
66 BuiltIn.Should Not Contain ${output} ${SNAT_ENABLED}
68 Verify Floating Ip Provision And Reachability From External Network Via Neutron Router Through L3vpn
69 [Documentation] Check floating IP should be present in dump flows after creating the floating IP and associating it to external network
70 ... which is associated to L3VPN
71 VpnOperations.VPN Create L3VPN vpnid=${VPN_INSTANCE_ID} name=${VPN_NAME} rd=["${DCGW_RD}"] exportrt=["${DCGW_RD}"] importrt=["${DCGW_RD}"]
72 ${ext_net_id} = OpenStackOperations.Get Net Id @{EXTERNAL_NETWORKS}[0]
73 VpnOperations.Associate L3VPN To Network networkid=${ext_net_id} vpnid=${VPN_INSTANCE_ID}
74 OpenStackOperations.Add Router Gateway ${ROUTER} @{EXTERNAL_NETWORKS}[0] --disable-snat
75 ${output} = OpenStackOperations.Show Router ${ROUTER}
76 BuiltIn.Should Contain ${output} ${SNAT_DISABLED}
77 ${subnetid} = OpenStackOperations.Get Subnet Id @{EXTERNAL_SUB_NETWORKS}[0]
78 OpenStackOperations.Add Router Gateway ${ROUTER} @{EXTERNAL_NETWORKS}[0] --fixed-ip subnet=${subnetid},ip-address=${ExtIP}
79 ${float} = OpenStackOperations.Create And Associate Floating IPs @{EXTERNAL_NETWORKS}[0] @{NET_1_VMS}[0]
80 ${output} = OVSDB.Get Flow Entries On Node ${OS_CMP1_CONN_ID}
81 BuiltIn.Should Contain ${output} ${ExtIP}
83 Verify Floating Ip De-provision And Reachability From External Network Via Neutron Router Through L3vpn
84 [Documentation] Check floating IP should not be present in dump flows after deleting the floating IP
85 ... and removing the external gateway from router which is associated to L3VPN
86 OpenStackOperations.Get ControlNode Connection
87 ${output} = OpenStackOperations.OpenStack CLI openstack floating ip list |awk '{print$2}'
88 ${floating_id} = BuiltIn.Should Match Regexp ${output} [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
89 OpenStackOperations.Delete Floating IP ${floating_id}
90 OpenStackOperations.Remove Gateway ${ROUTER}
91 ${output} = OVSDB.Get Flow Entries On Node ${OS_CMP1_CONN_ID}
92 BuiltIn.Should Not Contain ${output} ${ExtIP}
94 Verify Floating Ip Re-provision And Reachability From External Network Via Neutron Router Through L3vpn
95 [Documentation] Check floating IP should be present in dump flows after creating the floating IP again wnd associating it to external network
96 ... which is associated to L3VPN
97 ${subnetid} = OpenStackOperations.Get Subnet Id @{EXTERNAL_SUB_NETWORKS}[0]
98 OpenStackOperations.Add Router Gateway ${ROUTER} @{EXTERNAL_NETWORKS}[0] --fixed-ip subnet=${subnetid},ip-address=${ExtIP}
99 ${float} = OpenStackOperations.Create And Associate Floating IPs @{EXTERNAL_NETWORKS}[0] @{NET_1_VMS}[0]
100 ${output} = OVSDB.Get Flow Entries On Node ${OS_CMP1_CONN_ID}
101 BuiltIn.Should Contain ${output} ${ExtIP}
103 Verify Multiple Floating Ip Creation and Association to external network
104 [Documentation] Check Multiple floating IPs should be present in dump flows after creating multiple floating IPs and associating it to external network
105 ... which is associated to L3VPN
106 ${subnetid} = OpenStackOperations.Get Subnet Id @{EXTERNAL_SUB_NETWORKS}[0]
107 OpenStackOperations.Add Router Gateway ${ROUTER} @{EXTERNAL_NETWORKS}[0] --fixed-ip subnet=${subnetid},ip-address=${ExtIP}
108 ${FloatIp1} = OpenStackOperations.Create And Associate Floating IPs @{EXTERNAL_NETWORKS}[0] @{NET_1_VMS}[1]
109 ${FloatIp2} = OpenStackOperations.Create And Associate Floating IPs @{EXTERNAL_NETWORKS}[0] @{NET_1_VMS}[2]
110 ${FloatIp3} = OpenStackOperations.Create And Associate Floating IPs @{EXTERNAL_NETWORKS}[0] @{NET_1_VMS}[3]
111 ${output} = OVSDB.Get Flow Entries On Node ${OS_CMP2_CONN_ID}
112 BuiltIn.Should Match Regexp ${output} ${ExtIP}
113 BuiltIn.Should Match Regexp ${output} .*${FloatIp1}.*
114 BuiltIn.Should Match Regexp ${output} .*${FloatIp2}.*
115 BuiltIn.Should Match Regexp ${output} .*${FloatIp3}.*
119 [Documentation] Test Suite for Subnet_Routing_and_Multicast_Deployments.
120 VpnOperations.Basic Suite Setup
121 BgpOperations.Start Quagga Processes On ODL ${ODL_SYSTEM_IP}
122 BgpOperations.Start Quagga Processes On DCGW ${DCGW_SYSTEM_IP}
124 OpenStackOperations.Show Debugs @{NET_1_VMS}
125 OpenStackOperations.Get Suite Debugs
128 Create Neutron Networks
129 Create Neutron Subnets
130 OpenStackOperations.Create SubNet @{EXTERNAL_NETWORKS}[0] @{EXTERNAL_SUB_NETWORKS}[0] @{EXT_SUBNET_CIDRS}[0]
131 OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP}
134 BgpOperations.Setup BGP Peering On ODL ${ODL_SYSTEM_IP} ${AS_ID} ${DCGW_SYSTEM_IP}
135 BgpOperations.Setup BGP Peering On DCGW ${DCGW_SYSTEM_IP} ${AS_ID} ${ODL_SYSTEM_IP} ${VPN_NAME} ${DCGW_RD} ${LOOPBACK_IP}
136 OpenStackOperations.Create Router ${ROUTER}
137 OpenStackOperations.Add Router Interface ${ROUTER} @{SUBNETS}[0]
138 OpenStackOperations.Add Router Interface ${ROUTER} @{SUBNETS}[1]
140 Create Neutron Networks
141 [Documentation] Create required number of networks
142 : FOR ${NET} IN @{NETWORKS}
143 \ OpenStackOperations.Create Network ${NET}
144 OpenStackOperations.Create Network @{EXTERNAL_NETWORKS}[0] --external --provider-network-type ${NETWORK_TYPE}
145 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${NETWORK_URL} ${NETWORKS}
147 Create Neutron Subnets
148 [Documentation] Create required number of subnets for previously created networks
149 ${num_of_networks} = BuiltIn.Get Length ${NETWORKS}
150 : FOR ${index} IN RANGE 0 ${num_of_networks}
151 \ OpenStackOperations.Create SubNet @{NETWORKS}[${index}] @{SUBNETS}[${index}] @{SUBNET_CIDRS}[${index}]
152 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${SUBNETWORK_URL} ${SUBNETS}
155 [Documentation] Create required number of ports under previously created subnets
156 OpenStackOperations.Create Port @{NETWORKS}[0] @{PORTS}[0] sg=${SECURITY_GROUP}
157 OpenStackOperations.Create Port @{NETWORKS}[0] @{PORTS}[1] sg=${SECURITY_GROUP}
158 OpenStackOperations.Create Port @{NETWORKS}[1] @{PORTS}[2] sg=${SECURITY_GROUP}
159 OpenStackOperations.Create Port @{NETWORKS}[1] @{PORTS}[3] sg=${SECURITY_GROUP}
160 BuiltIn.Wait Until Keyword Succeeds 3s 1s Utils.Check For Elements At URI ${CONFIG_API}/neutron:neutron/ports/ ${PORTS}
163 [Documentation] Create Vm instances on compute nodes
164 OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[0] @{NET_1_VMS}[0] ${OS_CMP1_HOSTNAME} sg=${SECURITY_GROUP}
165 OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[1] @{NET_1_VMS}[1] ${OS_CMP2_HOSTNAME} sg=${SECURITY_GROUP}
166 OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[2] @{NET_1_VMS}[2] ${OS_CMP1_HOSTNAME} sg=${SECURITY_GROUP}
167 OpenStackOperations.Create Vm Instance With Port On Compute Node @{PORTS}[3] @{NET_1_VMS}[3] ${OS_CMP2_HOSTNAME} sg=${SECURITY_GROUP}
168 @{NET_1_VM_IPS} ${NET_1_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_1_VMS}
169 BuiltIn.Set Suite Variable @{NET_1_VM_IPS}
170 BuiltIn.Should Not Contain ${NET_1_VM_IPS} None
171 BuiltIn.Should Not Contain ${NET_1_DHCP_IP} None
174 [Documentation] Test teardown for snat suite.
175 BgpOperations.Delete BGP Configuration On ODL session
176 BgpOperations.Delete BGP Config On Quagga ${DCGW_SYSTEM_IP} ${AS_ID}
177 BgpOperations.Stop BGP Processes On Node ${ODL_SYSTEM_IP}
178 BgpOperations.Stop BGP Processes On Node ${DCGW_SYSTEM_IP}
179 OpenStackOperations.OpenStack Suite Teardown