blob: 4dfaf8c44dbb6af26cb3efc864ab115dcf073b5c [file] [log] [blame]
# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
description "Configure the database for moblab"
author "chromium-os-dev@chromium.org"
start on stopped autotest_setup
respawn
normal exit 0
pre-start script
mkdir -p /var/log/bootup/
exec >>/var/log/bootup/${UPSTART_JOB}.log 2>&1
set -x
set -e
logger -t "${UPSTART_JOB}" "Pre Start Starting."
MYSQL_LIB_DIR=/var/lib/mysql
if [ ! -d "${MYSQL_LIB_DIR}" ]; then
mkdir -p "${MYSQL_LIB_DIR}"
chown -R mysql:mysql "${MYSQL_LIB_DIR}"
fi
MYSQL_RUN_DIR=/run/mysqld
if [ ! -d "${MYSQL_RUN_DIR}" ]; then
mkdir -p "${MYSQL_RUN_DIR}"
chown -R mysql:mysql "${MYSQL_RUN_DIR}"
fi
MYSQL_LOG_DIR=/var/log/mysql
if [ ! -d "${MYSQL_LOG_DIR}" ]; then
mkdir -p "${MYSQL_LOG_DIR}"
chown -R mysql:mysql "${MYSQL_LOG_DIR}"
fi
# Clean up the binary logs if they still exist.
if [ -e "${MYSQL_LIB_DIR}/mysqld-bin.000001" ]; then
rm "${MYSQL_LIB_DIR}"/mysqld-bin.*
fi
# The below command won't work if the database has already been installed
# as it is not supplying the set password.
/usr/share/mysql/scripts/mysql_install_db --user=mysql \
--ldata="${MYSQL_LIB_DIR}" --basedir=/usr/ || :
end script
post-start script
exec >>/var/log/bootup/${UPSTART_JOB}.log 2>&1
set -x
set -e
logger -t "$UPSTART_JOB" "Starting."
# Wait for the service to come up.
SLEEP_TIME=2
while [ ! -e /run/mysqld/mysqld.sock ]; do
logger -t "$UPSTART_JOB" "mysqld not up. Sleeping ${SLEEP_TIME} seconds."
sleep ${SLEEP_TIME}
done
passwd=$(sed -n '/^password: /{s,^[^:]*: *,,p;q}' \
/usr/local/autotest/shadow_config.ini)
if [ -z "$passwd" ]; then
passwd=$(sed -n '/^password = /{s,^[^=]*= *,,p;q}' \
/usr/local/autotest/shadow_config.ini)
fi
if mysql -u root; then
mysqladmin -u root password "${passwd}"
fi
PASSWD_STRING="-p${passwd}"
# Create autotest database
logger -t "$UPSTART_JOB" "Create database."
clobberdb=
DATABASE_LOOKUP_SQL="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA \
WHERE SCHEMA_NAME = 'chromeos_autotest_db'"
EXISTING_DATABASE=$(mysql -u root "${PASSWD_STRING}" -e "${DATABASE_LOOKUP_SQL}")
if [ -z "${EXISTING_DATABASE}" ]; then
clobberdb=true
fi
SQL_COMMAND="drop database if exists chromeos_autotest_db; \
create database chromeos_autotest_db; \
grant all privileges on chromeos_autotest_db.* TO \
'chromeosqa-admin'@'localhost' identified by '${passwd}'; \
FLUSH PRIVILEGES;"
if [ "${clobberdb}" = true ]; then
mysql -u root "${PASSWD_STRING}" -e "${SQL_COMMAND}"
fi
logger -t "$UPSTART_JOB" "Database Migration."
AT_DIR="/usr/local/autotest"
python2.7 "${AT_DIR}"/database/migrate.py sync -f
python2.7 "${AT_DIR}"/frontend/manage.py syncdb --noinput
# You may have to run this twice.
python2.7 "${AT_DIR}"/frontend/manage.py syncdb --noinput
# Create whining database
logger -t "$UPSTART_JOB" "Create whining database."
WHINING_DIR="/whining"
cd "${WHINING_DIR}"/src/backend/sql
DATABASE_LOOKUP_SQL="SELECT User FROM mysql.user WHERE User='wmreader';"
EXISTING_WMREADER=$(mysql -u root "${PASSWD_STRING}" -e "${DATABASE_LOOKUP_SQL}")
DATABASE_LOOKUP_SQL="SELECT User FROM mysql.user WHERE User='wmatrix';"
EXISTING_WMATRIX=$(mysql -u root "${PASSWD_STRING}" -e "${DATABASE_LOOKUP_SQL}")
if [ -z "${EXISTING_WMREADER}" -o -z "${EXISTING_WMATRIX}" ]; then
sh createusers_moblab.sh "${passwd}" <<EOF
wmreader0000
wmatrix0000
EOF
fi
DATABASE_LOOKUP_SQL="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA \
WHERE SCHEMA_NAME = 'rawdb'"
EXISTING_RAWDB=$(mysql -u root "${PASSWD_STRING}" -e "${DATABASE_LOOKUP_SQL}")
if [ -z "${EXISTING_RAWDB}" ]; then
sh rawrecreate_moblab.sh "${passwd}" rawdb
fi
DATABASE_LOOKUP_SQL="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA \
WHERE SCHEMA_NAME = 'wmdb'"
EXISTING_WMDB=$(mysql -u root "${PASSWD_STRING}" -e "${DATABASE_LOOKUP_SQL}")
if [ -z "${EXISTING_WMDB}" ]; then
sh recreate_moblab.sh "${passwd}" wmdb
fi
logger -t "$UPSTART_JOB" "Ending."
end script
exec /usr/sbin/mysqld