blob: 995fcd3ebdc3ba96f1667b5b59387a4d3a9032fa [file] [log] [blame]
Mike Marchetti9d9192b2018-09-21 12:03:05 -04001#!/bin/sh
2
vijaynag8339ed22019-07-25 17:10:58 +05303# Copyright 2019 ETSI
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14# implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17
garciadeblas0dc45d82018-12-20 17:10:27 +010018WAIT_TIME=340 # LCM healthcheck needs 2x(30+140) senconds
beierlmc3a33002020-10-14 07:25:16 -040019#SERVICES_WITH_HEALTH="nbi ro zookeeper lcm mon light-ui pol kafka"
20SERVICES_WITH_HEALTH="nbi ro zookeeper lcm mon pol kafka"
tierno84a3c9a2018-10-24 11:02:57 +020021NUM_SERVICES_WITH_HEALTH=$(echo $SERVICES_WITH_HEALTH | wc -w)
Michael Marchetti26e8e332018-11-01 17:12:20 +000022WAIT_FINAL=30
beierlmc3a33002020-10-14 07:25:16 -040023#OSM_DEPLOYMENT="light-ui nbi lcm ro mon pol keystone"
24OSM_DEPLOYMENT="nbi lcm ro mon pol keystone"
vijaynag8339ed22019-07-25 17:10:58 +053025OSM_STATEFULSET="zookeeper kafka mongo mysql prometheus"
26NUM_K8S_PODS=$(echo $OSM_DEPLOYMENT $OSM_STATEFULSET | wc -w)
Mike Marchetti9d9192b2018-09-21 12:03:05 -040027
vijaynag8339ed22019-07-25 17:10:58 +053028while getopts "w:s:n:c:k" o; do
Mike Marchetti9d9192b2018-09-21 12:03:05 -040029 case "${o}" in
30 w)
31 WAIT_TIME=${OPTARG}
32 ;;
33 s)
34 STACK_NAME=${OPTARG}
35 ;;
36 n)
37 NUM_SERVICES_WITH_HEALTH=${OPTARG}
38 ;;
tiernobc983ec2018-10-11 15:03:06 +020039 c)
40 SERVICES_WITH_HEALTH="${OPTARG}"
41 ;;
vijaynag8339ed22019-07-25 17:10:58 +053042 k)
43 KUBERNETES="y"
44 ;;
Mike Marchetti9d9192b2018-09-21 12:03:05 -040045 esac
46done
47
48
49time=0
tierno84a3c9a2018-10-24 11:02:57 +020050step=2
Mike Marchetti9d9192b2018-09-21 12:03:05 -040051while [ $time -le "$WAIT_TIME" ]; do
vijaynag8339ed22019-07-25 17:10:58 +053052 if [ -n "$KUBERNETES" ]; then
53 if [ "$(kubectl get pods -n "${STACK_NAME}" | grep -i running | wc -l)" -ge "$NUM_K8S_PODS" ]; then
54 #all pods are running now.
55 sleep $WAIT_FINAL
56 exit 0
57 fi
58 else
endikaae9807e2020-09-11 15:19:52 +020059 if [ "$(sg docker -c "docker ps" | grep " ${STACK_NAME}_" | grep -i healthy | wc -l)" -ge "$NUM_SERVICES_WITH_HEALTH" ]; then
vijaynag8339ed22019-07-25 17:10:58 +053060 # all dockers are healthy now.
61 # final sleep is needed until more health checks are added to validate system is ready to handle requests
62 sleep $WAIT_FINAL
63 exit 0
64 fi
Mike Marchetti9d9192b2018-09-21 12:03:05 -040065 fi
66
67 sleep $step
68 time=$((time+step))
69done
Mike Marchetti37c3f512018-09-24 10:27:00 -040070
vijaynag8339ed22019-07-25 17:10:58 +053071if [ -n "$KUBERNETES" ]; then
72 echo "Not all pods are running"
73 kubectl get pods -n "${STACK_NAME}"
74 for POD in $OSM_DEPLOYMENT $OSM_STATEFULSET; do
75 kubectl get pods -n "${STACK_NAME}" | grep -i running | grep -q ^"${POD}-" && continue
76 echo
77 echo BEGIN LOGS of pods ${POD} not running
78 LOG_POD=$(kubectl get pods -n "${STACK_NAME}" | grep -e ^"${POD}-" | awk '{print $1}' )
79 [ -z "$LOG_POD" ] && echo "${POD} Failed to deploy" || kubectl logs ${LOG_POD} -n $STACK_NAME 2>&1 | tail -n 100
80 echo END LOGS of services $POD not running
81 done
82else
83 echo "Not all Docker services are healthy"
endikaae9807e2020-09-11 15:19:52 +020084 sg docker -c "docker ps" | grep " ${STACK_NAME}_"
vijaynag8339ed22019-07-25 17:10:58 +053085 for S_WITH_HEALTH in $SERVICES_WITH_HEALTH ; do
endikaae9807e2020-09-11 15:19:52 +020086 sg docker -c "docker ps" | grep " ${STACK_NAME}_" | grep -i healthy | grep -q "_${S_WITH_HEALTH}." && continue
vijaynag8339ed22019-07-25 17:10:58 +053087 echo
88 echo BEGIN LOGS of container ${S_WITH_HEALTH} not healthy
endikaae9807e2020-09-11 15:19:52 +020089 sg docker -c "docker service logs ${STACK_NAME}_${S_WITH_HEALTH} 2>&1" | tail -n 100
vijaynag8339ed22019-07-25 17:10:58 +053090 echo END LOGS of container ${S_WITH_HEALTH} not healthy
91 echo
92 done
93fi
tiernobc983ec2018-10-11 15:03:06 +020094
Mike Marchetti9d9192b2018-09-21 12:03:05 -040095exit 1