2 Documentation Suite that Intalls Neutron and Configures Networking ODL
5 Library OperatingSystem
6 Library RequestsLibrary
7 Resource ../libraries/OpenStackInstallUtils.robot
8 Resource ../libraries/OpenStackOperations.robot
9 Resource ../libraries/SystemUtils.robot
10 Resource ../libraries/Utils.robot
12 Suite Setup OpenStackInstallUtils.Get All Ssh Connections
13 Suite Teardown Close All Connections
18 Create And Configure Neutron Db ${OS_CONTROL_1_IP} root mysql ${OS_CONTROL_1_HOSTNAME}
19 IF 2 < ${NUM_CONTROL_NODES}
20 Create And Configure Neutron Db Other Nodes ${OS_CONTROL_2_IP} root mysql ${OS_CONTROL_2_HOSTNAME}
22 IF 2 < ${NUM_CONTROL_NODES}
23 Create And Configure Neutron Db Other Nodes ${OS_CONTROL_3_IP} root mysql ${OS_CONTROL_3_HOSTNAME}
25 IF 3 < ${NUM_CONTROL_NODES}
26 Create And Configure Neutron Db Other Nodes ${OS_CONTROL_4_IP} root mysql ${OS_CONTROL_4_HOSTNAME}
28 IF 4 < ${NUM_CONTROL_NODES}
29 Create And Configure Neutron Db Other Nodes ${OS_CONTROL_5_IP} root mysql ${OS_CONTROL_5_HOSTNAME}
31 IF 2 < ${NUM_CONTROL_NODES}
32 Create Openstack Elements ${HAPROXY_HOSTNAME}
34 IF 2 > ${NUM_CONTROL_NODES}
35 Create Openstack Elements ${OS_CONTROL_1_HOSTNAME}
37 IF 2 < ${NUM_CONTROL_NODES}
38 Install Configure Neutron ${OS_CONTROL_1_IP} ${OS_CONTROL_1_IP} ${HAPROXY_HOSTNAME}
40 IF 2 > ${NUM_CONTROL_NODES}
41 Install Configure Neutron ${OS_CONTROL_1_IP} ${OS_CONTROL_1_IP} ${OS_CONTROL_1_HOSTNAME}
43 IF 2 < ${NUM_CONTROL_NODES}
44 Install Configure Neutron ${OS_CONTROL_2_IP} ${OS_CONTROL_2_IP} ${HAPROXY_HOSTNAME}
46 IF 2 < ${NUM_CONTROL_NODES}
47 Install Configure Neutron ${OS_CONTROL_3_IP} ${OS_CONTROL_3_IP} ${HAPROXY_HOSTNAME}
49 IF 3 < ${NUM_CONTROL_NODES}
50 Install Configure Neutron ${OS_CONTROL_4_IP} ${OS_CONTROL_3_IP} ${HAPROXY_HOSTNAME}
52 IF 4 < ${NUM_CONTROL_NODES}
53 Install Configure Neutron ${OS_CONTROL_5_IP} ${OS_CONTROL_3_IP} ${HAPROXY_HOSTNAME}
55 IF 2 > ${NUM_CONTROL_NODES} Sync Db ${OS_CONTROL_1_IP}
56 IF 2 < ${NUM_CONTROL_NODES} Sync Db ${OS_CONTROL_1_IP}
57 IF 2 < ${NUM_CONTROL_NODES} Sync Db ${OS_CONTROL_2_IP}
58 IF 2 < ${NUM_CONTROL_NODES} Sync Db ${OS_CONTROL_3_IP}
59 IF 3 < ${NUM_CONTROL_NODES} Sync Db ${OS_CONTROL_4_IP}
60 IF 4 < ${NUM_CONTROL_NODES} Sync Db ${OS_CONTROL_5_IP}
61 IF 2 < ${NUM_CONTROL_NODES}
62 Generic HAProxy Entry ${HAPROXY_IP} ${HAPROXY_IP} 9696 neutron_server
64 IF 2 > ${NUM_CONTROL_NODES}
65 Add ODL As Ovs Manager ${OS_CONTROL_1_IP}
67 IF 2 < ${NUM_CONTROL_NODES}
68 Add ODL As Ovs Manager ${OS_CONTROL_1_IP}
70 IF 2 < ${NUM_CONTROL_NODES}
71 Add ODL As Ovs Manager ${OS_CONTROL_2_IP}
73 IF 2 < ${NUM_CONTROL_NODES}
74 Add ODL As Ovs Manager ${OS_CONTROL_3_IP}
76 IF 2 > ${NUM_CONTROL_NODES}
77 Start Neutron Service ${OS_CONTROL_1_IP}
79 IF 2 < ${NUM_CONTROL_NODES}
80 Start Neutron Service ${OS_CONTROL_1_IP}
82 IF 2 < ${NUM_CONTROL_NODES}
83 Start Neutron Service ${OS_CONTROL_2_IP}
85 IF 2 < ${NUM_CONTROL_NODES}
86 Start Neutron Service ${OS_CONTROL_3_IP}
88 IF 1 > ${NUM_COMPUTE_NODES}
89 Install Configure Neutron Compute ${OS_CONTROL_1_IP} ${OS_CONTROL_1_IP} ${OS_CONTROL_1_IP}
91 IF 0 < ${NUM_COMPUTE_NODES} and 2 < ${NUM_CONTROL_NODES}
92 Install Configure Neutron Compute ${OS_COMPUTE_1_IP} ${OS_COMPUTE_1_IP} ${HAPROXY_HOSTNAME}
94 IF 1 < ${NUM_COMPUTE_NODES} and 2 < ${NUM_CONTROL_NODES}
95 Install Configure Neutron Compute ${OS_COMPUTE_2_IP} ${OS_COMPUTE_2_IP} ${HAPROXY_HOSTNAME}
97 IF 0 < ${NUM_COMPUTE_NODES} and 2 > ${NUM_CONTROL_NODES}
98 Install Configure Neutron Compute ${OS_COMPUTE_1_IP} ${OS_COMPUTE_1_IP} ${OS_CONTROL_1_HOSTNAME}
100 IF 1 < ${NUM_COMPUTE_NODES} and 2 > ${NUM_CONTROL_NODES}
101 Install Configure Neutron Compute ${OS_COMPUTE_2_IP} ${OS_COMPUTE_2_IP} ${OS_CONTROL_1_HOSTNAME}
106 Create And Configure Neutron Db
107 [Arguments] ${os_node_cxn} ${mysql_user} ${mysql_pass} ${host_name}
108 Create Database for Mysql ${os_node_cxn} ${mysql_user} ${mysql_pass} neutron
109 Grant Privileges To Mysql Database
117 Grant Privileges To Mysql Database
125 IF 2 < ${NUM_CONTROL_NODES}
126 Grant Privileges To Mysql Database
132 ... ${HAPROXY_HOSTNAME}
136 Create And Configure Neutron Db Other Nodes
137 [Arguments] ${os_node_cxn} ${mysql_user} ${mysql_pass} ${host_name}
138 Grant Privileges To Mysql Database
146 Grant Privileges To Mysql Database
154 Grant Privileges To Mysql Database
160 ... ${HAPROXY_HOSTNAME}
163 Create Openstack Elements
164 [Arguments] ${host_name}
165 Create User neutron default neutron rc_file=/tmp/stackrc
166 Role Add service neutron admin rc_file=/tmp/stackrc
167 Create Service neutron "Networking service" network rc_file=/tmp/stackrc
168 Create Endpoint RegionOne ${host_name} network public 9696 rc_file=/tmp/stackrc
169 Create Endpoint RegionOne ${host_name} network internal 9696 rc_file=/tmp/stackrc
170 Create Endpoint RegionOne ${host_name} network admin 9696 rc_file=/tmp/stackrc
172 Install Configure Neutron
173 [Arguments] ${os_node_cxn} ${host_ip} ${host_name}
174 IF '${OS_APPS_PRE_INSTALLED}' == 'no'
175 Install Rpm Package ${os_node_cxn} openstack-neutron openstack-neutron-ml2 ebtables
177 IF 2 < ${NUM_CONTROL_NODES}
180 ... /etc/neutron/neutron.conf
183 ... "rabbit://openstack:rabbit@${OS_CONTROL_1_HOSTNAME},openstack:rabbit@${OS_CONTROL_2_HOSTNAME},openstack:rabbit@${OS_CONTROL_3_HOSTNAME}"
185 IF 2 > ${NUM_CONTROL_NODES}
188 ... /etc/neutron/neutron.conf
191 ... "rabbit://openstack:rabbit@${host_name}"
193 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf DEFAULT core_plugin ml2
194 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf DEFAULT allow_overlapping_ips true
197 ... /etc/neutron/neutron.conf
200 ... "mysql+pymysql://neutron:neutron@${host_name}/neutron"
201 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
204 ... /etc/neutron/neutron.conf
206 ... notify_nova_on_port_status_changes
208 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes true
209 IF 2 < ${NUM_CONTROL_NODES}
210 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf DEFAULT dhcp_agents_per_network 3
214 ... /etc/neutron/neutron.conf
215 ... keystone_authtoken
217 ... http://${host_name}:5000
220 ... /etc/neutron/neutron.conf
221 ... keystone_authtoken
223 ... http://${host_name}:35357
224 IF 2 < ${NUM_CONTROL_NODES}
227 ... /etc/neutron/neutron.conf
228 ... keystone_authtoken
229 ... memcached_servers
230 ... ${OS_CONTROL_1_IP}:11211,${OS_CONTROL_2_IP}:11211,${OS_CONTROL_3_IP}:11211
232 IF 2 > ${NUM_CONTROL_NODES}
235 ... /etc/neutron/neutron.conf
236 ... keystone_authtoken
237 ... memcached_servers
238 ... ${host_name}:11211
240 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf keystone_authtoken auth_type password
241 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
242 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
243 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf keystone_authtoken project_name service
244 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf keystone_authtoken username neutron
245 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf keystone_authtoken password neutron
246 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf nova auth_uri http://${host_name}:5000
247 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf nova auth_url http://${host_name}:35357
248 IF 2 < ${NUM_CONTROL_NODES}
251 ... /etc/neutron/neutron.conf
253 ... memcached_servers
254 ... ${OS_CONTROL_1_IP}:11211,${OS_CONTROL_2_IP}:11211,${OS_CONTROL_3_IP}:11211
256 IF 2 > ${NUM_CONTROL_NODES}
257 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf nova memcached_servers ${host_name}:11211
259 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf nova auth_type password
260 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf nova project_domain_name default
261 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf nova user_domain_name default
262 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf nova project_name service
263 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf nova username nova
264 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf nova password nova
267 ... /etc/neutron/neutron.conf
270 ... /var/lib/neutron/tmp
271 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf OVS ovsdb_connection tcp:127.0.0.1:6641
272 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_max_retries 0
273 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_ha_queues true
274 Crudini Edit ${os_node_cxn} /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers "flat,vlan,vxlan"
275 Crudini Edit ${os_node_cxn} /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan
276 Crudini Edit ${os_node_cxn} /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:1000
279 ... /etc/neutron/plugins/ml2/ml2_conf.ini
281 ... network_vlan_ranges
283 Crudini Edit ${os_node_cxn} /etc/neutron/dhcp_agent.ini DEFAULT ovs_use_veth True
284 Crudini Edit ${os_node_cxn} /etc/neutron/dhcp_agent.ini DEFAULT interface_driver openvswitch
285 Crudini Edit ${os_node_cxn} /etc/neutron/dhcp_agent.ini DEFAULT enable_isolated_metadata true
286 Crudini Edit ${os_node_cxn} /etc/neutron/dhcp_agent.ini OVS ovsdb_connection tcp:127.0.0.1:6641
287 Crudini Edit ${os_node_cxn} /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_ip ${host_name}
290 ... /etc/neutron/metadata_agent.ini
292 ... metadata_proxy_shared_secret
294 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron url http://${host_name}:9696
295 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron auth_url http://${host_name}:35357
296 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron auth_type password
297 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron project_domain_name default
298 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron user_domain_name default
299 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron region_name RegionOne
300 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron project_name service
301 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron username neutron
302 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron password neutron
303 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron service_metadata_proxy true
304 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron metadata_proxy_shared_secret metadata
305 IF '${OS_APPS_PRE_INSTALLED}' == 'no'
306 Install Rpm Package ${os_node_cxn} python-networking-odl
310 ... /etc/neutron/plugins/ml2/ml2_conf.ini
312 ... mechanism_drivers
316 ... /etc/neutron/plugins/ml2/ml2_conf.ini
319 ... http://${host_name}:8080/controller/nb/v2/neutron
320 Crudini Edit ${os_node_cxn} /etc/neutron/plugins/ml2/ml2_conf.ini ml2_odl username admin
321 Crudini Edit ${os_node_cxn} /etc/neutron/plugins/ml2/ml2_conf.ini ml2_odl password admin
324 ... /etc/neutron/plugins/ml2/ml2_conf.ini
326 ... port_binding_controller
327 ... pseudo-agentdb-binding
330 ... /etc/neutron/plugins/ml2/ml2_conf.ini
332 ... enable_security_group
336 ... /etc/neutron/plugins/ml2/ml2_conf.ini
338 ... extension_drivers
340 Crudini Edit ${os_node_cxn} /etc/neutron/neutron.conf DEFAULT service_plugins odl-router_v2
341 Install OVS And Configure ${os_node_cxn} ${host_ip}
344 [Arguments] ${os_node_cxn}
345 #Unlink File ${os_node_cxn} /etc/neutron/plugin.ini
346 Create Softlink ${os_node_cxn} /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
349 ... "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head"
353 ... neutron-server.service neutron-dhcp-agent.service neutron-metadata-agent.service
355 Start Neutron Service
356 [Arguments] ${os_node_cxn}
357 Restart Service ${os_node_cxn} openstack-nova-api.service
358 Start Service ${os_node_cxn} neutron-server.service neutron-dhcp-agent.service neutron-metadata-agent.service
360 Install Configure Neutron Compute
361 [Arguments] ${os_node_cxn} ${host_ip} ${host_name}
362 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron auth_type password
363 IF 2 > ${NUM_CONTROL_NODES}
364 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron auth_url http://${host_name}:35357
366 IF 2 < ${NUM_CONTROL_NODES}
369 ... /etc/nova/nova.conf
372 ... http://${HAPROXY_HOSTNAME}:35357
374 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron username neutron
375 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron password neutron
376 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron user_domain_name Default
377 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron project_domain_name Default
378 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron project_name service
379 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron auth_strategy keystone
380 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron region_name RegionOne
381 IF 2 > ${NUM_CONTROL_NODES}
382 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron url http://${host_name}:9696
384 IF 2 < ${NUM_CONTROL_NODES}
385 Crudini Edit ${os_node_cxn} /etc/nova/nova.conf neutron url http://${HAPROXY_HOSTNAME}:9696
387 Restart Service ${os_node_cxn} libvirtd.service openstack-nova-compute.service
388 Install OVS And Configure ${os_node_cxn} ${host_ip}
389 Add ODL As Ovs Manager ${os_node_cxn}
391 Install OVS And Configure
392 [Arguments] ${os_node_cxn} ${host_ip}
393 IF '${OS_APPS_PRE_INSTALLED}' == 'no'
394 Install Rpm Package ${os_node_cxn} python-networking-odl openvswitch
396 Enable Service ${os_node_cxn} openvswitch
397 Restart Service ${os_node_cxn} openvswitch
400 ... sudo neutron-odl-ovs-hostconfig --config-file=/etc/neutron/neutron.conf --debug --noovs_dpdk --bridge_mappings="flat1:br-flat1,flat2:br-flat2,physnet1:br-physnet1" --local_ip ${host_ip}
402 Add ODL As Ovs Manager
403 [Arguments] ${os_node_cxn}
404 IF 2 < ${NUM_CONTROL_NODES}
407 ... sudo ovs-vsctl set-manager tcp:${OS_CONTROL_1_IP}:6640 tcp:${OS_CONTROL_2_IP}:6640 tcp:${OS_CONTROL_3_IP}:6640
409 IF 2 > ${NUM_CONTROL_NODES}
410 Run Command ${os_node_cxn} sudo ovs-vsctl set-manager tcp:${OS_CONTROL_1_IP}:6640