105 lines
3.9 KiB
Bash
105 lines
3.9 KiB
Bash
#!/bin/bash
|
|
# Copyright 2016 Mirantis, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
function retry_checker {
|
|
tries=0
|
|
echo "checking with command \"$*\""
|
|
until eval $*; do
|
|
rc=$?
|
|
let 'tries=tries+1'
|
|
echo "try number $tries"
|
|
echo "return code is $rc"
|
|
if [ $tries -gt $CHECK_RETRIES ];then
|
|
failure=1
|
|
break
|
|
fi
|
|
sleep 5
|
|
done
|
|
}
|
|
|
|
function get_service_credentials {
|
|
credentialfile=$(mktemp /tmp/servicepws.XXXXX)
|
|
flat_yaml.py $ASTUTE_YAML > $credentialfile
|
|
. $credentialfile
|
|
rm -f $credentialfile
|
|
}
|
|
|
|
function check_ready {
|
|
#Uses a custom command to ensure a container is ready
|
|
get_service_credentials
|
|
failure=0
|
|
|
|
case $1 in
|
|
nailgun)
|
|
if [ "${SYSTEMD:-false}" == "true" ]; then
|
|
retry_checker "systemctl is-active nailgun"
|
|
else
|
|
retry_checker "supervisorctl status nailgun | grep -q RUNNING"
|
|
fi
|
|
retry_checker "fuel fuel-version >/dev/null 2>&1"
|
|
;;
|
|
ostf)
|
|
retry_checker "egrep -q ^[2-4][0-9]? < <(curl --connect-timeout 1 -s -w '%{http_code}' http://$ADMIN_IP:8777/ostf/not_found -o /dev/null)"
|
|
;;
|
|
#NOTICE: Cobbler console tool does not comply unix conversation: 'cobbler profile find' always return 0 as exit code
|
|
cobbler)
|
|
retry_checker "ps waux | grep -q 'cobblerd -F' && pgrep dnsmasq"
|
|
retry_checker "cobbler profile find --name=ubuntu* | grep -q ubuntu && cobbler profile find --name=*bootstrap* | grep -q bootstrap"
|
|
;;
|
|
rabbitmq)
|
|
retry_checker "curl -f -L -i -u \"$astute_user:$astute_password\" http://127.0.0.1:15672/api/nodes 1>/dev/null 2>&1"
|
|
retry_checker "curl -f -L -u \"$mcollective_user:$mcollective_password\" -s http://127.0.0.1:15672/api/exchanges | grep -qw 'mcollective_broadcast'"
|
|
retry_checker "curl -f -L -u \"$mcollective_user:$mcollective_password\" -s http://127.0.0.1:15672/api/exchanges | grep -qw 'mcollective_directed'"
|
|
;;
|
|
postgres)
|
|
retry_checker "PGPASSWORD=$postgres_nailgun_password /usr/bin/psql -h $ADMIN_IP -U \"$postgres_nailgun_user\" \"$postgres_nailgun_dbname\" -c '\copyright' 2>&1 1>/dev/null"
|
|
;;
|
|
astute)
|
|
retry_checker "ps waux | grep -q 'astuted'"
|
|
retry_checker "curl -f -L -u \"$astute_user:$astute_password\" -s http://127.0.0.1:15672/api/exchanges | grep -qw 'nailgun'"
|
|
retry_checker "curl -f -L -u \"$astute_user:$astute_password\" -s http://127.0.0.1:15672/api/exchanges | grep -qw 'naily_service'"
|
|
;;
|
|
rsync)
|
|
retry_checker "netstat -ntl | grep -q 873"
|
|
;;
|
|
rsyslog)
|
|
retry_checker "netstat -nl | grep -q 514"
|
|
;;
|
|
mcollective)
|
|
retry_checker "ps waux | grep -q mcollectived"
|
|
;;
|
|
nginx)
|
|
retry_checker "ps waux | grep -q nginx"
|
|
;;
|
|
keystone)
|
|
retry_checker "keystone --os-auth-url \"http://$ADMIN_IP:35357/v2.0\" --os-username \"$keystone_nailgun_user\" --os-password \"$keystone_nailgun_password\" token-get &>/dev/null"
|
|
;;
|
|
*)
|
|
echo "No defined test for determining if $1 is ready."
|
|
;;
|
|
esac
|
|
|
|
#Catch all to ensure puppet is not running
|
|
retry_checker "! pgrep puppet"
|
|
|
|
if [ $failure -eq 1 ]; then
|
|
echo "ERROR: $1 failed to start."
|
|
return 1
|
|
else
|
|
echo "$1 is ready."
|
|
return 0
|
|
fi
|
|
}
|