7 PLATFORM=$(python -mplatform)
8 TOKEN=$(openssl rand -hex 10)
10 AUTH="--os-auth-url http://127.0.0.1:35357 --os-token $TOKEN --os-endpoint http://127.0.0.1:35357/v2.0/"
11 NEUTRON_AUTH="--os-username neutron --os-password neutron --os-tenant-name neutron --os-auth-url http://127.0.0.1:35357/v2.0"
12 CORE_PLUGIN="neutron.plugins.ml2.plugin.Ml2Plugin"
14 if [[ $PLATFORM =~ Ubuntu ]]
17 #Tests for RPM packages are disabled
18 #until migration to CentOS 7 is completed
19 echo "RPM tests are temporarily disabled"
22 if [ -z $PACKAGE ]; then echo "Package for testing is not specified"; exit 1; fi
23 echo "127.0.10.1 $(hostname)" >> /etc/hosts
29 echo "mysql-server mysql-server/root_password select $MYSQL_PASS" | debconf-set-selections
30 echo "mysql-server mysql-server/root_password_again select $MYSQL_PASS" | debconf-set-selections
31 apt-get install -y --force-yes rabbitmq-server mysql-server mysql-client-core-5.5 python-mysqldb keystone bridge-utils
33 yum install -y openstack-keystone rabbitmq-server mysql-server MySQL-client python-oslo-utils bridge-utils
34 #Install some plugins because they are required for db-migration scripts (bug #1371184)
35 #Ubuntu neutron-server package include them
36 yum install -y openstack-neutron-bigswitch openstack-neutron-brocade openstack-neutron-cisco openstack-neutron-hyperv openstack-neutron-vmware openstack-neutron-openvswitch \
37 openstack-neutron-linuxbridge openstack-neutron-metaplugin openstack-neutron-mellanox openstack-neutron-nec openstack-neutron-nuage
41 install_neutron_server () {
44 apt-get install -y --force-yes neutron-server
46 yum install -y openstack-neutron openstack-neutron-ml2
52 service mysql restart || service mysqld restart
55 mysqladmin -u root password $MYSQL_PASS
57 mysql -uroot -p$MYSQL_PASS -Bse "create database keystone"
58 mysql -uroot -p$MYSQL_PASS -Bse "create database neutron"
59 mysql -uroot -p$MYSQL_PASS -Bse "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron'"
60 mysql -uroot -p$MYSQL_PASS -Bse "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone'"
61 mysql -uroot -p$MYSQL_PASS -Bse "flush privileges"
68 cp /usr/share/keystone/keystone-dist-paste.ini /etc/keystone/keystone-paste.ini
70 cat > /etc/keystone/keystone.conf << EOF
74 connection=mysql://keystone:keystone@localhost/keystone
76 provider=keystone.token.providers.uuid.Provider
78 keystone-manage db_sync
79 chown -R keystone:keystone /var/log/keystone/
82 service keystone restart
84 service openstack-keystone start
87 #Setup Neutron credentials
88 keystone $AUTH user-create --name neutron --pass neutron
89 keystone $AUTH tenant-create --name neutron
90 keystone $AUTH role-create --name=admin
91 keystone $AUTH user-role-add --user neutron --role admin --tenant neutron
92 NEUTRON_SERVICE=`keystone $AUTH service-create --name=neutron --type=network --description="Neutron Networking Service" | grep id | awk -F '|' '{print $3}' | tr -d ' '`
93 keystone $AUTH endpoint-create --region RegionOne --service-id=$NEUTRON_SERVICE --publicurl=http://localhost:9696 --internalurl=http://localhost:9696 --adminurl=http://localhost:9696
96 setup_neutron_services() {
98 cat > /etc/neutron/neutron.conf << EOF
100 auth_strategy = keystone
103 service_plugins = neutron.services.l3_router.l3_router_plugin.L3RouterPlugin
104 core_plugin = $CORE_PLUGIN
105 rabbit_password = guest
106 rabbit_hosts = 127.0.0.1
107 rpc_backend = neutron.openstack.common.rpc.impl_kombu
108 state_path = /var/lib/neutron
109 lock_path = $state_path/lock
111 auth_host = 127.0.0.1
114 admin_tenant_name = neutron
116 admin_password = neutron
117 auth_url=http://127.0.0.1:35357/v2.0
122 root_helper = sudo neutron-rootwrap /etc/neutron/rootwrap.conf
124 connection = mysql://neutron:neutron@127.0.0.1/neutron?charset=utf8
126 service_provider=LOADBALANCER:Haproxy:neutron.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
127 service_provider=VPN:openswan:neutron.services.vpn.service_drivers.ipsec.IPsecVPNDriver:default
130 cat > /etc/neutron/l3_agent.ini << EOF
132 interface_driver =neutron.agent.linux.interface.OVSInterfaceDriver
133 root_helper=sudo neutron-rootwrap /etc/neutron/rootwrap.conf
138 cp /usr/share/neutron/api-paste.ini /etc/neutron/
139 chown neutron:neutron /etc/neutron/api-paste.ini
142 touch /etc/neutron/plugin.ini
145 service rabbitmq-server restart
146 if [ $? -eq 0 ]; then break; fi
147 echo "RabbitMQ server failed to start"
148 cat /var/log/rabbitmq/startup_err
149 cat /var/log/rabbitmq/startup_log
152 #br-int is required for OVS agent
156 upgrade_neutron_db () {
157 neutron-db-manage --config-file /etc/neutron/neutron.conf upgrade head || (echo "DB migration failed" && exit 1)
160 start_neutron_server () {
161 service neutron-server restart
162 # Sleep is to let Neutron server successfully reconnect to AMQP
176 FAILED_TESTS+="$TEST_FUNCTION "
181 check_neutron_server() {
183 neutron $NEUTRON_AUTH net-create mynet1
184 CHECK=$(neutron $NEUTRON_AUTH net-list | grep id)
185 if [ -z "$CHECK" ]; then echo "Network listing failed" && FAILURE=true; fi
188 check_neutron_openvswitch () {
190 # Workaround for bug #1371184
193 chown root:neutron /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
197 service openvswitch start
198 service neutron-openvswitch-agent start
200 service openvswitch-switch restart
201 service neutron-plugin-openvswitch-agent restart
204 STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "Open vSwitch agent" | awk -F "|" '{print $5}' | tr -d " ")
205 if [ "$STATUS" != ":-)" ]; then echo "OVS agent check failed"; FAILURE=true; fi
208 check_neutron_l3_agent () {
210 service neutron-l3-agent restart
211 #This sleep here and in other functions is intended to let the agent add information to the queue
213 STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "L3 agent" | awk -F "|" '{print $5}' | tr -d " ")
214 if [ "$STATUS" != ":-)" ]; then echo "L3 agent check failed"; FAILURE=true; fi
217 check_neutron_dhcp_agent () {
219 service neutron-dhcp-agent restart
221 STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "DHCP agent" | awk -F "|" '{print $5}' | tr -d " ")
222 if [ "$STATUS" != ":-)" ]; then echo "DHCP agent check failed"; FAILURE=true; fi
225 check_neutron_metadata_agent () {
227 service neutron-metadata-agent restart
229 STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "Metadata agent" | awk -F "|" '{print $5}' | tr -d " ")
230 if [ "$STATUS" != ":-)" ]; then echo "Metadata agent check failed"; FAILURE=true; fi
233 check_neutron_metering_agent () {
235 service neutron-metering-agent restart
237 STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "Metering agent" | awk -F "|" '{print $5}' | tr -d " ")
238 if [ "$STATUS" != ":-)" ]; then echo "Metering agent check failed"; FAILURE=true; fi
241 check_neutron_client () {
242 neutron --help > /dev/null
243 if [ $? -ne 0 ]; then echo "Neutron client check failed"; FAILURE=true; fi
247 if [ "$FAILED_TESTS" != "" ]
249 grep TRACE /var/log/neutron/*
250 grep ERROR /var/log/neutron/*
251 echo "Failed tests are: $FAILED_TESTS"
258 install_neutron_server
262 setup_neutron_services
265 try check_neutron_server
269 install_neutron_server
273 setup_neutron_services
276 try check_neutron_server
277 try check_neutron_l3_agent
278 try check_neutron_dhcp_agent
279 try check_neutron_metadata_agent
282 openstack-neutron-ml2)
283 install_neutron_server
287 setup_neutron_services
290 try check_neutron_server
293 openstack-neutron-openvswitch|neutron-plugin-openvswitch-agent)
295 install_neutron_server
298 setup_neutron_services
301 try check_neutron_openvswitch
304 python-neutronclient)
309 install_neutron_server
313 setup_neutron_services
316 try check_neutron_l3_agent
320 install_neutron_server
324 setup_neutron_services
327 try check_neutron_dhcp_agent
330 neutron-metadata-agent)
331 install_neutron_server
335 setup_neutron_services
338 try check_neutron_metadata_agent
341 openstack-neutron-metering-agent|neutron-plugin-metering-agent)
342 install_neutron_server
346 setup_neutron_services
349 try check_neutron_metering_agent