#!/bin/bash
set -eux

RUN_DB_SYNC=${1:-""}
function run_db_sync() {
    [ -n "$RUN_DB_SYNC" ]
}

db_pass=$(os-apply-config --key db-password)

STATEDIR=/mnt/state/var/lib/mysql
DONE=${STATEDIR}/db.initialized
if [ -e ${DONE} ] ; then
  echo "DB files already initialized."
else
  for FILE in ibdata1 ib_logfile0 ib_logfile1 ; do
    if [ -e $STATEDIR/$FILE ] ; then
      mv $STATEDIR/$FILE $STATEDIR/$FILE.bak
    fi
  done
  # Sometimes packages make the files ownership wrong
  chown -R mysql.mysql ${STATEDIR}
  touch ${DONE}
fi

service mysql restart || service mysqld restart

PATH=/usr/local/bin:$PATH
venvs=/opt/stack/venvs

os-db-create keystone keystone $db_pass
run_db_sync && $venvs/keystone/bin/keystone-manage db_sync

if [ -x "$venvs/cinder/bin/cinder-manage" ] ; then
    os-db-create cinder cinder $db_pass
    run_db_sync && $venvs/cinder/bin/cinder-manage db sync
fi

if [ -x "$venvs/ironic/bin/ironic-dbsync" ] ; then
    os-db-create ironic ironic $db_pass
    run_db_sync && $venvs/ironic/bin/ironic-dbsync --config-file /etc/ironic/ironic.conf
fi

if [ -x "$venvs/tuskar/bin/tuskar-dbsync" ] ; then
    os-db-create tuskar tuskar $db_pass
    run_db_sync && $venvs/tuskar/bin/tuskar-dbsync --config-file /etc/tuskar/tuskar.conf
fi

os-db-create nova nova $db_pass
run_db_sync && $venvs/nova/bin/nova-manage db sync

os-db-create nova_bm nova $db_pass
run_db_sync && $venvs/nova/bin/nova-baremetal-manage db sync

os-db-create glance glance $db_pass
run_db_sync && $venvs/glance/bin/glance-manage db_sync

os-db-create heat heat $db_pass
run_db_sync && $venvs/heat/bin/heat-manage db_sync

os-db-create ovs_neutron neutron $db_pass

