diff options
| author | Martin André <martin.andre@kvhasia.com> | 2015-03-30 10:14:03 +0900 |
|---|---|---|
| committer | Martin André <martin.andre@kvhasia.com> | 2015-04-01 16:39:44 +0900 |
| commit | 34872c1c2f68f4a410c423ed8b615822a29ff94a (patch) | |
| tree | d68f9b10e68580956a2a3d20f28d8923f255aa25 /docker | |
| parent | cf3086ed3bca797ecc34e9c401951d1d64fe326a (diff) | |
| download | kolla-34872c1c2f68f4a410c423ed8b615822a29ff94a.tar.gz kolla-34872c1c2f68f4a410c423ed8b615822a29ff94a.zip | |
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
Diffstat (limited to 'docker')
| -rwxr-xr-x | docker/barbican/start.sh | 4 | ||||
| -rw-r--r-- | docker/base/kolla-common.sh | 49 | ||||
| -rw-r--r-- | docker/ceilometer/ceilometer-api/start.sh | 4 | ||||
| -rw-r--r-- | docker/ceilometer/ceilometer-central/start.sh | 2 | ||||
| -rw-r--r-- | docker/ceilometer/ceilometer-compute/start.sh | 2 | ||||
| -rwxr-xr-x | docker/cinder/start.sh | 28 | ||||
| -rwxr-xr-x | docker/glance/glance-api/start.sh | 2 | ||||
| -rwxr-xr-x | docker/glance/glance-registry/start.sh | 2 | ||||
| -rwxr-xr-x | docker/heat/heat-api/start.sh | 2 | ||||
| -rwxr-xr-x | docker/heat/heat-base/config-heat.sh | 2 | ||||
| -rwxr-xr-x | docker/heat/heat-engine/start.sh | 2 | ||||
| -rwxr-xr-x | docker/horizon/start.sh | 6 | ||||
| -rwxr-xr-x | docker/keystone/start.sh | 2 | ||||
| -rwxr-xr-x | docker/neutron/neutron-server/start.sh | 4 | ||||
| -rwxr-xr-x | docker/nova-controller/nova-api/start.sh | 4 | ||||
| -rwxr-xr-x | docker/nova-controller/nova-conductor/start.sh | 2 | ||||
| -rwxr-xr-x | docker/nova-controller/nova-scheduler/start.sh | 2 | ||||
| -rw-r--r-- | docker/swift/swift-account/start.sh | 4 | ||||
| -rw-r--r-- | docker/swift/swift-container/start.sh | 4 | ||||
| -rw-r--r-- | docker/swift/swift-object/start.sh | 4 | ||||
| -rwxr-xr-x | 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 c90f66c47..673aa4339 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 <<EOF CREATE DATABASE IF NOT EXISTS ${BARBICAN_DB_NAME}; diff --git a/docker/base/kolla-common.sh b/docker/base/kolla-common.sh index bc932a31d..1a6b0c815 100644 --- a/docker/base/kolla-common.sh +++ b/docker/base/kolla-common.sh @@ -103,43 +103,46 @@ wait_for_output() { wait_for_output_unless $expected_output '' $@ } -# Exit unless we receive a successful response from corresponding OpenStack -# service. -check_for_os_service() { +# Check if we receive a successful response from corresponding OpenStack +# service endpoint. +check_for_os_service_endpoint() { local name=$1 local host_var=$2 - local port=$3 + local port_var=$3 local api_version=$4 - check_required_vars $host_var + check_required_vars $host_var $port_var - local endpoint="http://${!host_var}:$port/$api_version" + local endpoint="http://${!host_var}:${!port_var}/$api_version" curl -sf -o /dev/null "$endpoint" || { echo "ERROR: $name is not available @ $endpoint" >&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_keystone() { - check_for_os_service keystone KEYSTONE_PUBLIC_SERVICE_HOST 5000 v2.0 -} - -check_for_nova() { - check_for_os_service nova NOVA_API_SERVICE_HOST 8774 +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_neutron() { - check_for_os_service neutron NEUTRON_SERVER_SERVICE_HOST 9696 +fail_unless_os_service_running() { + check_for_os_service_running $@ || exit $? } -# 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 1cd6d4c18..bca5a1aaa 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 ec9951c90..406245f2d 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 5b610b28a..84fe7ab1d 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 4508d96f4..c0d796f02 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 <<EOF -CREATE DATABASE IF NOT EXISTS ${CINDER_DB_NAME}; -GRANT ALL PRIVILEGES ON glance* TO - '${CINDER_DB_USER}'@'%' IDENTIFIED BY '${CINDER_DB_PASSWORD}' +CREATE DATABASE IF NOT EXISTS ${CINDER_DB_NAME}; +GRANT ALL PRIVILEGES ON glance* TO + '${CINDER_DB_USER}'@'%' IDENTIFIED BY '${CINDER_DB_PASSWORD}' EOF #-----Cinder.conf setup----- # Cinder database -crudini --set /etc/cinder/cinder.conf \ +crudini --set /etc/cinder/cinder.conf \ DEFAULT \ db_driver \ "cinder.db" # Rabbit -crudini --set /etc/cinder/cinder.conf \ +crudini --set /etc/cinder/cinder.conf \ DEFAULT \ rabbit_host \ "127.0.0.1" -crudini --set /etc/cinder/cinder.conf \ +crudini --set /etc/cinder/cinder.conf \ DEFAULT \ rabbit_port \ "5672" -crudini --set /etc/cinder/cinder.conf \ +crudini --set /etc/cinder/cinder.conf \ DEFAULT \ rabbit_hosts \ "127.0.0.1:5672" -crudini --set /etc/cinder/cinder.conf \ +crudini --set /etc/cinder/cinder.conf \ DEFAULT \ rabbit_userid \ "guest" -crudini --set /etc/cinder/cinder.conf \ +crudini --set /etc/cinder/cinder.conf \ DEFAULT \ rabbit_password \ "guest" -crudini --set /etc/cinder/cinder.conf \ +crudini --set /etc/cinder/cinder.conf \ DEFAULT \ rabbit_virtual_host \ "/" -crudini --set /etc/cinder/cinder.conf \ - DEFAULT \ +crudini --set /etc/cinder/cinder.conf \ + DEFAULT \ rabbit_ha_queues \ "False" diff --git a/docker/glance/glance-api/start.sh b/docker/glance/glance-api/start.sh index 5dd1da5b3..a049b2841 100755 --- a/docker/glance/glance-api/start.sh +++ b/docker/glance/glance-api/start.sh @@ -15,7 +15,7 @@ wait_for 30 1 keystone \ --os-auth-url=http://${KEYSTONE_PUBLIC_SERVICE_HOST}:35357/v2.0 \ --os-username=admin --os-tenant-name=${ADMIN_TENANT_NAME} \ --os-password=${KEYSTONE_ADMIN_PASSWORD} endpoint-list -check_for_keystone +fail_unless_os_service_running keystone export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" export SERVICE_ENDPOINT="http://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0" diff --git a/docker/glance/glance-registry/start.sh b/docker/glance/glance-registry/start.sh index c4658d637..9a6271afe 100755 --- a/docker/glance/glance-registry/start.sh +++ b/docker/glance/glance-registry/start.sh @@ -8,7 +8,7 @@ set -e check_required_vars GLANCE_DB_NAME GLANCE_DB_USER GLANCE_DB_PASSWORD # lets wait for the DB to be available wait_for 25 1 mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" -e 'status;' -check_for_db +fail_unless_db mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF CREATE DATABASE IF NOT EXISTS ${GLANCE_DB_NAME} DEFAULT CHARACTER SET utf8; diff --git a/docker/heat/heat-api/start.sh b/docker/heat/heat-api/start.sh index b6565c207..f065c7de8 100755 --- a/docker/heat/heat-api/start.sh +++ b/docker/heat/heat-api/start.sh @@ -9,7 +9,7 @@ check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ KEYSTONE_AUTH_PROTOCOL ADMIN_TENANT_NAME \ HEAT_API_SERVICE_HOST PUBLIC_IP -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}:35357/v2.0" diff --git a/docker/heat/heat-base/config-heat.sh b/docker/heat/heat-base/config-heat.sh index b85da7e77..e0f3852ee 100755 --- a/docker/heat/heat-base/config-heat.sh +++ b/docker/heat/heat-base/config-heat.sh @@ -16,7 +16,7 @@ set -e check_required_vars HEAT_DB_PASSWORD HEAT_KEYSTONE_PASSWORD \ KEYSTONE_PUBLIC_SERVICE_HOST RABBITMQ_SERVICE_HOST -check_for_db +fail_unless_db dump_vars cat > /openrc <<EOF diff --git a/docker/heat/heat-engine/start.sh b/docker/heat/heat-engine/start.sh index e9d3f9e41..8eda98f3d 100755 --- a/docker/heat/heat-engine/start.sh +++ b/docker/heat/heat-engine/start.sh @@ -4,7 +4,7 @@ . /opt/kolla/config-heat.sh check_required_vars HEAT_DB_NAME HEAT_DB_USER HEAT_DB_PASSWORD -check_for_db +fail_unless_db mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF CREATE DATABASE IF NOT EXISTS ${HEAT_DB_NAME} DEFAULT CHARACTER SET utf8; diff --git a/docker/horizon/start.sh b/docker/horizon/start.sh index 5f65f72fe..f087a429e 100755 --- a/docker/horizon/start.sh +++ b/docker/horizon/start.sh @@ -5,9 +5,9 @@ set -e . /opt/kolla/kolla-common.sh -check_for_keystone -check_for_glance -check_for_nova +fail_unless_os_service_running keystone +fail_unless_os_service_running glance +fail_unless_os_service_running nova export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0" diff --git a/docker/keystone/start.sh b/docker/keystone/start.sh index 420295dcb..cb76496f9 100755 --- a/docker/keystone/start.sh +++ b/docker/keystone/start.sh @@ -37,7 +37,7 @@ echo "Running the kolla-common script" ## Check DB connectivity and required variables echo "Checking connectivity to the DB" -check_for_db +fail_unless_db echo "Checking for required variables" check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_DB_PASSWORD \ KEYSTONE_ADMIN_PASSWORD ADMIN_TENANT_NAME \ diff --git a/docker/neutron/neutron-server/start.sh b/docker/neutron/neutron-server/start.sh index 91af87bb3..b121b6f95 100755 --- a/docker/neutron/neutron-server/start.sh +++ b/docker/neutron/neutron-server/start.sh @@ -11,8 +11,8 @@ check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ NEUTRON_KEYSTONE_USER NEUTRON_KEYSTONE_PASSWORD \ ADMIN_TENANT_NAME NEUTRON_SERVER_SERVICE_HOST \ PUBLIC_IP NEUTRON_DB_PASSWORD -check_for_keystone -check_for_db +fail_unless_os_service_running keystone +fail_unless_db mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF CREATE DATABASE IF NOT EXISTS ${NEUTRON_DB_NAME} DEFAULT CHARACTER SET utf8; diff --git a/docker/nova-controller/nova-api/start.sh b/docker/nova-controller/nova-api/start.sh index 723a3539e..90cc62976 100755 --- a/docker/nova-controller/nova-api/start.sh +++ b/docker/nova-controller/nova-api/start.sh @@ -8,8 +8,8 @@ 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_DB_NAME -check_for_keystone -check_for_db $NOVA_DB_NAME +fail_unless_os_service_running keystone +fail_unless_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-conductor/start.sh b/docker/nova-controller/nova-conductor/start.sh index 831c80e80..599fb0246 100755 --- a/docker/nova-controller/nova-conductor/start.sh +++ b/docker/nova-controller/nova-conductor/start.sh @@ -5,7 +5,7 @@ set -e . /opt/kolla/config-nova.sh check_required_vars NOVA_DB_NAME NOVA_DB_USER NOVA_DB_PASSWORD -check_for_db +fail_unless_db mysql -h ${MARIADB_SERVICE_HOST} -u root \ -p${DB_ROOT_PASSWORD} mysql <<EOF diff --git a/docker/nova-controller/nova-scheduler/start.sh b/docker/nova-controller/nova-scheduler/start.sh index da7f5f32a..087d477fe 100755 --- a/docker/nova-controller/nova-scheduler/start.sh +++ b/docker/nova-controller/nova-scheduler/start.sh @@ -5,6 +5,6 @@ set -e . /opt/kolla/config-nova.sh check_required_vars NOVA_DB_NAME -check_for_db $NOVA_DB_NAME +fail_unless_db $NOVA_DB_NAME exec /usr/bin/nova-scheduler diff --git a/docker/swift/swift-account/start.sh b/docker/swift/swift-account/start.sh index 2fe6f2469..884a24742 100644 --- a/docker/swift/swift-account/start.sh +++ b/docker/swift/swift-account/start.sh @@ -8,8 +8,8 @@ check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ SWIFT_ADMIN_PASSWORD -check_for_db -check_for_keystone +fail_unless_db +fail_unless_os_service_running keystone if ! [ "$SWIFT_DB_PASSWORD" ]; then SWIFT_DB_PASSWORD=$(openssl rand -hex 15) diff --git a/docker/swift/swift-container/start.sh b/docker/swift/swift-container/start.sh index 2a191e1d2..42b426c74 100644 --- a/docker/swift/swift-container/start.sh +++ b/docker/swift/swift-container/start.sh @@ -8,8 +8,8 @@ check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ SWIFT_ADMIN_PASSWORD -check_for_db -check_for_keystone +fail_unless_db +fail_unless_os_service_running keystone if ! [ "$SWIFT_DB_PASSWORD" ]; then SWIFT_DB_PASSWORD=$(openssl rand -hex 15) diff --git a/docker/swift/swift-object/start.sh b/docker/swift/swift-object/start.sh index c43efc5fb..430a87b69 100644 --- a/docker/swift/swift-object/start.sh +++ b/docker/swift/swift-object/start.sh @@ -8,8 +8,8 @@ check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ SWIFT_ADMIN_PASSWORD -check_for_db -check_for_keystone +fail_unless_db +fail_unless_os_service_running keystone if ! [ "$SWIFT_DB_PASSWORD" ]; then SWIFT_DB_PASSWORD=$(openssl rand -hex 15) diff --git a/docker/zaqar/start.sh b/docker/zaqar/start.sh index 6c68fccf2..04680c8f9 100755 --- a/docker/zaqar/start.sh +++ b/docker/zaqar/start.sh @@ -13,8 +13,9 @@ check_required_vars ZAQAR_KEYSTONE_PASSWORD ZAQAR_SERVER_SERVICE_HOST \ PUBLIC_IP dump_vars -#check_for_mongodb -check_for_keystone +# TODO Check for mongodb availability +# https://bugs.launchpad.net/kolla/+bug/1394727 +fail_unless_os_service_running keystone cat > /openrc <<EOF export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0" @@ -30,6 +31,8 @@ crudini --set $cfg DEFAULT log_file \ crudini --set $cfg DEFAULT use_stderr \ true +# TODO Switch to mongodb +# https://bugs.launchpad.net/kolla/+bug/1394727 crudini --set $cfg drivers storage \ sqlite |
