X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fsample%2Fbin%2Fpod_wait.sh;h=5a10476a4cbfbbc20031ba96e92e74b62439b646;hb=58c2a7132f861e269ed707eb585657b0c9ead9f5;hp=71773be7ec49046faaf73a746c530870f727cefb;hpb=ee72c3ab8a95a775e5a1db5ea1b1566e0c59f626;p=aaf%2Fauthz.git diff --git a/auth/sample/bin/pod_wait.sh b/auth/sample/bin/pod_wait.sh index 71773be7..5a10476a 100644 --- a/auth/sample/bin/pod_wait.sh +++ b/auth/sample/bin/pod_wait.sh @@ -1,50 +1,143 @@ #!/bin/bash +######### +# ============LICENSE_START==================================================== +# org.onap.aaf +# =========================================================================== +# Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. +# =========================================================================== +# 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. +# ============LICENSE_END==================================================== +# # # A Script for use in Pods... Check for status files, and validate before moving on. # DIR="/opt/app/aaf/status" APP=$1 shift -OTHER=$1 -shift function status { if [ -d "$DIR" ]; then - echo "$@" > $DIR/$APP + echo "$@" > $DIR/$APP-$HOSTNAME fi } -echo $APP $OTHER function check { if [ -d "$DIR" ]; then - if [ -e "$DIR/$OTHER" ]; then - echo "$(cat $DIR/$OTHER)" - else + if [ -z "$(ls $DIR/$OTHER* 2> /dev/null)" ]; then echo "$DIR/$OTHER does not exist" + else + echo "$(cat $DIR/$OTHER*)" fi else echo "$DIR does not exist" fi } -echo "App $APP is waiting to start until $OTHER is ready" -status "waiting for $OTHER" - -n=0 -while [ $n -lt 40 ]; do - rv="$(check)" - echo "$OTHER is $rv" - if [ "$rv" = "ready" ]; then - # This is critical. Until status is literally "ready" in the status directory, no processes will start - status ready - echo "Starting $@" - n=10000 - else - (( ++n )) - echo "Sleep 10 (iteration $n)" - sleep 10 - fi -done - -eval "$@" +function wait { + n=0 + while [ $n -lt 40 ]; do + rv="$(check)" + echo "$rv" + if [ -z "$(echo $rv | grep "ready")" ]; then + (( ++n )) + echo "Sleep 10 (iteration $n)" + sleep 10 + else + echo "$OTHER is $rv" + n=10000 + fi + done +} + +function wait_nc { + n=0 + while [ $n -lt 40 ]; do + echo "Waiting for Network Access to $@" + status "Waiting for Network Access to $1 $2" + rv="$(nc -zvw 5 $1 $2 2>&1 | grep -e "[open|succeed]")" + echo $rv + + if [[ "$rv" == *open* ]] || [[ "$rv" == *succeeded* ]]; then + status "Network Connectable to $1 $2" + n=10000 + else + (( ++n )) + echo "Sleep 10 (iteration $n)" + sleep 10 + fi + done +} + +function start { + n=0 + while [ $n -lt 40 ]; do + rv="$(check)" + echo "$OTHER is $rv" + if [ -z "$(echo $rv | grep "ready")" ]; then + (( ++n )) + echo "Sleep 10 (iteration $n)" + sleep 10 + else + # This is critical. Until status is literally "ready" in the status directory, no processes will start + status ready + echo "Starting $@" + n=10000 + fi + done +} + +while [ ! -z "$1" ]; do + OTHER=$1 + shift + case "$OTHER" in + nc) + H=$1 + shift + P=$1 + shift + wait_nc "$H" "$P" + if [ -z "$@" ]; then + echo "ready" + status "ready" + fi + ;; + sleep) + echo "Sleeping $1" + status "Sleeping $1" + sleep $1 + shift + if [ -z "$@" ]; then + echo "ready" + status "ready" + fi + echo "Done" + ;; + remove) + echo "Removing $DIR/$APP-$HOSTNAME" + rm -f $DIR/$APP-$HOSTNAME + ;; + wait) + OTHER="$1" + shift + wait + ;; + *) + echo "App $APP is waiting to start until $OTHER is ready" + status "waiting for $OTHER" + + start + break + ;; + esac +done