#!/bin/sh

set -e

PKGOS_VERBOSE=yes

set -x
if [ -z "${APTGET}" ] ; then
	APTGET="apt-get -o Dpkg::Options::=--force-confnew --allow-downgrades --allow-change-held-packages -y"
fi

${APTGET} install nova-placement-api

. ./osinstallrc
. /usr/share/openstack-pkg-tools/pkgos_func

mysql --execute="CREATE DATABASE novadb_cell0 CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
mysql --execute="GRANT ALL PRIVILEGES ON novadb_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '${RC_NOVA_SQL_PASS}';"
mysql --execute="GRANT ALL PRIVILEGES ON novadb_cell0.* TO 'nova'@'%' IDENTIFIED BY '${RC_NOVA_SQL_PASS}';"
#mysql --execute="CREATE DATABASE novadb_cell1 CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
#mysql --execute="GRANT ALL PRIVILEGES ON novadb_cell1.* TO 'nova'@'localhost' IDENTIFIED BY '${RC_NOVA_SQL_PASS}';"
#mysql --execute="GRANT ALL PRIVILEGES ON novadb_cell1.* TO 'nova'@'%' IDENTIFIED BY '${RC_NOVA_SQL_PASS}';"

set +x
pkgos_inifile set /etc/nova/nova.conf placement os_region_name ${RC_KEYSTONE_REGION}
pkgos_inifile set /etc/nova/nova.conf placement auth_type v3password
pkgos_inifile set /etc/nova/nova.conf placement auth_url http://${RC_KEYSTONE_ENDPOINT_IP}:35357/v3
pkgos_inifile set /etc/nova/nova.conf placement project_name admin
pkgos_inifile set /etc/nova/nova.conf placement project_domain_name default
pkgos_inifile set /etc/nova/nova.conf placement username admin
pkgos_inifile set /etc/nova/nova.conf placement user_domain_name default
pkgos_inifile set /etc/nova/nova.conf placement password ${RC_KEYSTONE_ADMINPASS}
set -x

service nova-compute start || true

su -s /bin/sh -c "nova-manage cell_v2 map_cell0 --database_connection mysql+pymysql://nova:${RC_NOVA_SQL_PASS}@localhost/novadb_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --database_connection mysql+pymysql://nova:${RC_NOVA_SQL_PASS}@localhost/novadb --transport-url rabbit://guest:${RC_RABIT_PASS}@127.0.0.1" nova
su -s /bin/sh -c "nova-manage db sync" nova

su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
for i in nova-api nova-consoleauth nova-scheduler nova-placement-api nova-compute ; do
	service $i stop || true
	sleep 1
	service $i start
done

for i in /etc/init.d/neutron* ; do
	$i stop
	sleep 1
	$i start
done
