From 34872c1c2f68f4a410c423ed8b615822a29ff94a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Andr=C3=A9?= Date: Mon, 30 Mar 2015 10:14:03 +0900 Subject: [PATCH] Allow check_for_* functions to be consumed by wait_for In order for the `check_for_*` functions to be consumed by `wait_for`, they should notify of their success but not exit. As a consequence, the previous behavior is restored by the fail_unless_* companion functions. With this change, it is now possible to do: wait_for 30 1 check_for_os_service_running keystone Change-Id: I16ddf8913027030c3ccb5487713d172904508fd6 --- docker/barbican/start.sh | 4 +- docker/base/kolla-common.sh | 49 +++++++++++-------- docker/ceilometer/ceilometer-api/start.sh | 4 +- docker/ceilometer/ceilometer-central/start.sh | 2 +- docker/ceilometer/ceilometer-compute/start.sh | 2 +- docker/cinder/start.sh | 28 +++++------ docker/glance/glance-api/start.sh | 2 +- docker/glance/glance-registry/start.sh | 2 +- docker/heat/heat-api/start.sh | 2 +- docker/heat/heat-base/config-heat.sh | 2 +- docker/heat/heat-engine/start.sh | 2 +- docker/horizon/start.sh | 6 +-- docker/keystone/start.sh | 2 +- docker/neutron/neutron-server/start.sh | 4 +- docker/nova-controller/nova-api/start.sh | 4 +- .../nova-controller/nova-conductor/start.sh | 2 +- .../nova-controller/nova-scheduler/start.sh | 2 +- docker/swift/swift-account/start.sh | 4 +- docker/swift/swift-container/start.sh | 4 +- docker/swift/swift-object/start.sh | 4 +- docker/zaqar/start.sh | 7 ++- 21 files changed, 74 insertions(+), 64 deletions(-) diff --git a/docker/barbican/start.sh b/docker/barbican/start.sh index c90f66c470..673aa43393 100755 --- a/docker/barbican/start.sh +++ b/docker/barbican/start.sh @@ -15,8 +15,8 @@ fi check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ KEYSTONE_ADMIN_SERVICE_PORT BARBICAN_ADMIN_PASSWORD -check_for_db -check_for_keystone +fail_unless_db +fail_unless_os_service_running keystone mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <&2 - exit 1 + return 1 } echo "$name is active @ $endpoint" } -check_for_glance() { - check_for_os_service glance GLANCE_API_SERVICE_HOST 9292 +check_for_os_service_running() { + local service=$1 + local args= + case $service in + ("glance") args="GLANCE_API_SERVICE_HOST GLANCE_API_SERVICE_PORT" ;; + ("keystone") args="KEYSTONE_PUBLIC_SERVICE_HOST KEYSTONE_PUBLIC_SERVICE_PORT v2.0" ;; + ("neutron") args="NEUTRON_SERVER_SERVICE_HOST NEUTRON_SERVER_SERVICE_PORT" ;; + ("nova") args="NOVA_API_SERVICE_HOST NOVA_API_SERVICE_PORT" ;; + (*) + echo "Unknown service $service" + return 1 ;; + esac + check_for_os_service_endpoint $service $args } -check_for_keystone() { - check_for_os_service keystone KEYSTONE_PUBLIC_SERVICE_HOST 5000 v2.0 +fail_unless_os_service_running() { + check_for_os_service_running $@ || exit $? } -check_for_nova() { - check_for_os_service nova NOVA_API_SERVICE_HOST 8774 -} - -check_for_neutron() { - check_for_os_service neutron NEUTRON_SERVER_SERVICE_HOST 9696 -} - -# Exit unless we receive a successful response from the database server. +# Check if 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} @@ -148,12 +151,16 @@ check_for_db() { mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" \ -e "select 1" $database > /dev/null 2>&1 || { echo "ERROR: database $database is not available @ $MARIADB_SERVICE_HOST" >&2 - exit 1 + return 1 } echo "database is active @ ${MARIADB_SERVICE_HOST}" } +fail_unless_db() { + check_for_db $@ || exit $? +} + # Dump shell environment to a file dump_vars() { set -o posix diff --git a/docker/ceilometer/ceilometer-api/start.sh b/docker/ceilometer/ceilometer-api/start.sh index 1cd6d4c185..bca5a1aaae 100644 --- a/docker/ceilometer/ceilometer-api/start.sh +++ b/docker/ceilometer/ceilometer-api/start.sh @@ -12,8 +12,8 @@ check_required_vars CEILOMETER_DB_USER CEILOMETER_DB_NAME \ CEILOMETER_KEYSTONE_USER CEILOMETER_ADMIN_PASSWORD \ CEILOMETER_API_SERVICE_HOST PUBLIC_IP -check_for_keystone -check_for_db +fail_unless_os_service_running keystone +fail_unless_db #TODO(pkilambi): Add mongodb support diff --git a/docker/ceilometer/ceilometer-central/start.sh b/docker/ceilometer/ceilometer-central/start.sh index ec9951c908..406245f2de 100644 --- a/docker/ceilometer/ceilometer-central/start.sh +++ b/docker/ceilometer/ceilometer-central/start.sh @@ -6,7 +6,7 @@ check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_AUTH_PROTOCOL \ KEYSTONE_ADMIN_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_PORT -check_for_keystone +fail_unless_os_service_running keystone export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0" diff --git a/docker/ceilometer/ceilometer-compute/start.sh b/docker/ceilometer/ceilometer-compute/start.sh index 5b610b28af..84fe7ab1d8 100644 --- a/docker/ceilometer/ceilometer-compute/start.sh +++ b/docker/ceilometer/ceilometer-compute/start.sh @@ -6,7 +6,7 @@ check_required_vars KEYSTONE_ADMIN_TOKEN RABBITMQ_SERVICE_HOST RABBIT_PASSWORD -check_for_keystone +fail_unless_os_service_running keystone # Nova conf settings crudini --set /etc/nova/nova.conf DEFAULT instance_usage_audit True diff --git a/docker/cinder/start.sh b/docker/cinder/start.sh index 4508d96f46..c0d796f02c 100755 --- a/docker/cinder/start.sh +++ b/docker/cinder/start.sh @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash -e : ${CINDER_DB_USER:=cinder} : ${CINDER_DB_NAME:=cinder} @@ -13,49 +13,49 @@ fi check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ CINDER_ADMIN_PASSWORD -check_for_db +fail_unless_db mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql < /openrc < /openrc <