| Mike Marchetti | 9d9192b | 2018-09-21 12:03:05 -0400 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| tierno | 84a3c9a | 2018-10-24 11:02:57 +0200 | [diff] [blame] | 3 | WAIT_TIME=180 # LCM healthcheck needs 140 senconds |
| 4 | SERVICES_WITH_HEALTH="nbi ro zookeeper lcm" |
| 5 | NUM_SERVICES_WITH_HEALTH=$(echo $SERVICES_WITH_HEALTH | wc -w) |
| Michael Marchetti | 26e8e33 | 2018-11-01 17:12:20 +0000 | [diff] [blame] | 6 | WAIT_FINAL=30 |
| Mike Marchetti | 9d9192b | 2018-09-21 12:03:05 -0400 | [diff] [blame] | 7 | |
| tierno | bc983ec | 2018-10-11 15:03:06 +0200 | [diff] [blame] | 8 | while getopts "w:s:n:c:" o; do |
| Mike Marchetti | 9d9192b | 2018-09-21 12:03:05 -0400 | [diff] [blame] | 9 | 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 | ;; |
| tierno | bc983ec | 2018-10-11 15:03:06 +0200 | [diff] [blame] | 19 | c) |
| 20 | SERVICES_WITH_HEALTH="${OPTARG}" |
| 21 | ;; |
| Mike Marchetti | 9d9192b | 2018-09-21 12:03:05 -0400 | [diff] [blame] | 22 | esac |
| 23 | done |
| 24 | |
| 25 | |
| 26 | time=0 |
| tierno | 84a3c9a | 2018-10-24 11:02:57 +0200 | [diff] [blame] | 27 | step=2 |
| Mike Marchetti | 9d9192b | 2018-09-21 12:03:05 -0400 | [diff] [blame] | 28 | while [ $time -le "$WAIT_TIME" ]; do |
| 29 | if [ "$(docker ps | grep " ${STACK_NAME}_" | grep -i healthy | wc -l)" -ge "$NUM_SERVICES_WITH_HEALTH" ]; then |
| Michael Marchetti | 26e8e33 | 2018-11-01 17:12:20 +0000 | [diff] [blame] | 30 | # 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 Marchetti | 9d9192b | 2018-09-21 12:03:05 -0400 | [diff] [blame] | 33 | exit 0 |
| 34 | fi |
| 35 | |
| 36 | sleep $step |
| 37 | time=$((time+step)) |
| 38 | done |
| Mike Marchetti | 37c3f51 | 2018-09-24 10:27:00 -0400 | [diff] [blame] | 39 | |
| 40 | echo "Not all Docker services are healthy" |
| 41 | docker ps | grep " ${STACK_NAME}_" |
| 42 | |
| tierno | bc983ec | 2018-10-11 15:03:06 +0200 | [diff] [blame] | 43 | for 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 |
| 50 | done |
| 51 | |
| Mike Marchetti | 9d9192b | 2018-09-21 12:03:05 -0400 | [diff] [blame] | 52 | exit 1 |
| tierno | bc983ec | 2018-10-11 15:03:06 +0200 | [diff] [blame] | 53 | |