print container logs when not healthy
[osm/devops.git] / installers / osm_health.sh
1 #!/bin/sh
2
3 WAIT_TIME=60
4 NUM_SERVICES_WITH_HEALTH=3
5 SERVICES_WITH_HEALTH="nbi ro kafka"
6
7 while getopts "w:s:n:c:" o; do
8 case "${o}" in
9 w)
10 WAIT_TIME=${OPTARG}
11 ;;
12 s)
13 STACK_NAME=${OPTARG}
14 ;;
15 n)
16 NUM_SERVICES_WITH_HEALTH=${OPTARG}
17 ;;
18 c)
19 SERVICES_WITH_HEALTH="${OPTARG}"
20 ;;
21 esac
22 done
23
24
25 time=0
26 step=1
27 while [ $time -le "$WAIT_TIME" ]; do
28 if [ "$(docker ps | grep " ${STACK_NAME}_" | grep -i healthy | wc -l)" -ge "$NUM_SERVICES_WITH_HEALTH" ]; then
29 exit 0
30 fi
31
32 sleep $step
33 time=$((time+step))
34 done
35
36 echo "Not all Docker services are healthy"
37 docker ps | grep " ${STACK_NAME}_"
38
39 for S_WITH_HEALTH in $SERVICES_WITH_HEALTH ; do
40 docker ps | grep " ${STACK_NAME}_" | grep -i healthy | grep -q "_${S_WITH_HEALTH}." && continue
41 echo
42 echo BEGIN LOGS of container ${S_WITH_HEALTH} not healthy
43 docker service logs ${STACK_NAME}_${S_WITH_HEALTH} 2>&1 | tail -n 100
44 echo END LOGS of container ${S_WITH_HEALTH} not healthy
45 echo
46 done
47
48 exit 1
49