diff options
| author | Martin André <martin.andre@kvhasia.com> | 2015-01-19 15:06:28 +0900 |
|---|---|---|
| committer | Martin André <martin.andre@kvhasia.com> | 2015-01-21 09:34:01 +0900 |
| commit | f4b7ae95ac24f395e8d7ddd36cba362659fd29b4 (patch) | |
| tree | 53ff0c851c967efd9cdaa7b5c79e169de7c7f321 /docker | |
| parent | 91ca8d4b00c632bcf7a2a9903aa4cf584fee27e9 (diff) | |
| download | kolla-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
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/fedora-rdo-base/kolla-common.sh | 6 | ||||
| -rwxr-xr-x | docker/nova-base/config-nova.sh | 1 | ||||
| -rwxr-xr-x | docker/nova-controller/nova-api/start.sh | 3 | ||||
| -rwxr-xr-x | docker/nova-controller/nova-scheduler/start.sh | 3 |
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 |
