blob: 2684af7309f53cfc2bd503713ece164c21363fc1 [file] [log] [blame]
Mike Marchetti9d9192b2018-09-21 12:03:05 -04001#!/bin/sh
2
tierno84a3c9a2018-10-24 11:02:57 +02003WAIT_TIME=180 # LCM healthcheck needs 140 senconds
4SERVICES_WITH_HEALTH="nbi ro zookeeper lcm"
5NUM_SERVICES_WITH_HEALTH=$(echo $SERVICES_WITH_HEALTH | wc -w)
Michael Marchetti26e8e332018-11-01 17:12:20 +00006WAIT_FINAL=30
Mike Marchetti9d9192b2018-09-21 12:03:05 -04007
tiernobc983ec2018-10-11 15:03:06 +02008while getopts "w:s:n:c:" o; do
Mike Marchetti9d9192b2018-09-21 12:03:05 -04009 case "${o}" in
10 w)
11 WAIT_TIME=${OPTARG}
12 ;;
13 s)
14 STACK_NAME=${OPTARG}
15 ;;
16 n)
17 NUM_SERVICES_WITH_HEALTH=${OPTARG}
18 ;;
tiernobc983ec2018-10-11 15:03:06 +020019 c)
20 SERVICES_WITH_HEALTH="${OPTARG}"
21 ;;
Mike Marchetti9d9192b2018-09-21 12:03:05 -040022 esac
23done
24
25
26time=0
tierno84a3c9a2018-10-24 11:02:57 +020027step=2
Mike Marchetti9d9192b2018-09-21 12:03:05 -040028while [ $time -le "$WAIT_TIME" ]; do
29 if [ "$(docker ps | grep " ${STACK_NAME}_" | grep -i healthy | wc -l)" -ge "$NUM_SERVICES_WITH_HEALTH" ]; then
Michael Marchetti26e8e332018-11-01 17:12:20 +000030 # all dockers are healthy now.
31 # final sleep is needed until more health checks are added to validate system is ready to handle requests
32 sleep $WAIT_FINAL
Mike Marchetti9d9192b2018-09-21 12:03:05 -040033 exit 0
34 fi
35
36 sleep $step
37 time=$((time+step))
38done
Mike Marchetti37c3f512018-09-24 10:27:00 -040039
40echo "Not all Docker services are healthy"
41docker ps | grep " ${STACK_NAME}_"
42
tiernobc983ec2018-10-11 15:03:06 +020043for S_WITH_HEALTH in $SERVICES_WITH_HEALTH ; do
44 docker ps | grep " ${STACK_NAME}_" | grep -i healthy | grep -q "_${S_WITH_HEALTH}." && continue
45 echo
46 echo BEGIN LOGS of container ${S_WITH_HEALTH} not healthy
47 docker service logs ${STACK_NAME}_${S_WITH_HEALTH} 2>&1 | tail -n 100
48 echo END LOGS of container ${S_WITH_HEALTH} not healthy
49 echo
50done
51
Mike Marchetti9d9192b2018-09-21 12:03:05 -040052exit 1
tiernobc983ec2018-10-11 15:03:06 +020053