aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin André <martin.andre@kvhasia.com>2015-01-19 15:06:28 +0900
committerMartin André <martin.andre@kvhasia.com>2015-01-21 09:34:01 +0900
commitf4b7ae95ac24f395e8d7ddd36cba362659fd29b4 (patch)
tree53ff0c851c967efd9cdaa7b5c79e169de7c7f321
parent91ca8d4b00c632bcf7a2a9903aa4cf584fee27e9 (diff)
downloadkolla-f4b7ae95ac24f395e8d7ddd36cba362659fd29b4.tar.gz
kolla-f4b7ae95ac24f395e8d7ddd36cba362659fd29b4.zip
Check for nova DB availability in dependent containers
When nova-api start and the nova database hasn't yet been created, it would create it itself, preventing the migration in nova-conductor to run and making it unable to start. This commit ensures that nova-api container will not try to steal nova-conductor's job of creating the nova database. Nova-scheduler reacts differently to the missing database and simply exits with a backtrace. This commit also prevents nova-scheduler to start when the nova database cannot be found. Change-Id: Ib6f7521151815faa7a26ec1d170df5a1cdb7fd63 Related-Bug: #1335804
-rw-r--r--docker/fedora-rdo-base/kolla-common.sh6
-rwxr-xr-xdocker/nova-base/config-nova.sh1
-rwxr-xr-xdocker/nova-controller/nova-api/start.sh3
-rwxr-xr-xdocker/nova-controller/nova-scheduler/start.sh3
4 files changed, 9 insertions, 4 deletions
diff --git a/docker/fedora-rdo-base/kolla-common.sh b/docker/fedora-rdo-base/kolla-common.sh
index c9ba03be5..56c658c43 100644
--- a/docker/fedora-rdo-base/kolla-common.sh
+++ b/docker/fedora-rdo-base/kolla-common.sh
@@ -56,12 +56,14 @@ check_for_neutron() {
}
# Exit unless we receive a successful response from the database server.
+# Optionally takes a database name to check for. Defaults to 'mysql'.
check_for_db() {
+ local database=${1:-mysql}
check_required_vars MARIADB_SERVICE_HOST DB_ROOT_PASSWORD
mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" \
- -e "select 1" mysql > /dev/null 2>&1 || {
- echo "ERROR: database is not available @ $MARIADB_SERVICE_HOST" >&2
+ -e "select 1" $database > /dev/null 2>&1 || {
+ echo "ERROR: database $database is not available @ $MARIADB_SERVICE_HOST" >&2
exit 1
}
diff --git a/docker/nova-base/config-nova.sh b/docker/nova-base/config-nova.sh
index 10aa646fa..829fb48de 100755
--- a/docker/nova-base/config-nova.sh
+++ b/docker/nova-base/config-nova.sh
@@ -11,7 +11,6 @@
: ${RABBIT_PASSWORD:=guest}
: ${NETWORK_MANAGER:=nova}
-check_for_db
check_required_vars KEYSTONE_ADMIN_TOKEN NOVA_DB_PASSWORD \
RABBITMQ_SERVICE_HOST GLANCE_API_SERVICE_HOST \
KEYSTONE_PUBLIC_SERVICE_HOST PUBLIC_IP
diff --git a/docker/nova-controller/nova-api/start.sh b/docker/nova-controller/nova-api/start.sh
index 49329f21c..723a3539e 100755
--- a/docker/nova-controller/nova-api/start.sh
+++ b/docker/nova-controller/nova-api/start.sh
@@ -7,8 +7,9 @@ set -e
check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
NOVA_KEYSTONE_USER NOVA_KEYSTONE_PASSWORD \
ADMIN_TENANT_NAME NOVA_API_SERVICE_HOST \
- NOVA_EC2_API_SERVICE_HOST PUBLIC_IP
+ NOVA_EC2_API_SERVICE_HOST PUBLIC_IP NOVA_DB_NAME
check_for_keystone
+check_for_db $NOVA_DB_NAME
export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
export SERVICE_ENDPOINT="http://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
diff --git a/docker/nova-controller/nova-scheduler/start.sh b/docker/nova-controller/nova-scheduler/start.sh
index 71dd848f7..da7f5f32a 100755
--- a/docker/nova-controller/nova-scheduler/start.sh
+++ b/docker/nova-controller/nova-scheduler/start.sh
@@ -4,4 +4,7 @@ set -e
. /opt/kolla/config-nova.sh
+check_required_vars NOVA_DB_NAME
+check_for_db $NOVA_DB_NAME
+
exec /usr/bin/nova-scheduler