Make OOM workable with Dublin
[aaf/authz.git] / auth / sample / bin / pod_wait.sh
index 5a8d062..5a10476 100644 (file)
@@ -1,26 +1,43 @@
 #!/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
 }
 
 
 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"
@@ -32,10 +49,29 @@ function wait {
   while [ $n -lt 40  ]; do 
      rv="$(check)"
      echo "$rv"
-     if [ "$rv" = "ready" ]; then
+     if [ -z "$(echo $rv | grep "ready")" ]; then
+       (( ++n )) 
+       echo "Sleep 10 (iteration $n)"
+       sleep 10
+     else 
        echo "$OTHER is $rv"
        n=10000
-     else 
+     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
@@ -48,39 +84,60 @@ function start {
   while [ $n -lt 40  ]; do 
      rv="$(check)"
      echo "$OTHER is $rv"
-     if [ "$rv" = "ready" ]; then
+     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
-     else 
-       (( ++n )) 
-       echo "Sleep 10 (iteration $n)"
-       sleep 10
      fi
   done
 }
 
-case "$OTHER" in
-  sleep)
-    echo "Sleeping $1"
-    status "Sleeping $1"
-    sleep $1
-    shift
-    status "ready"
-    echo "Done"
-    ;;
-  wait)
-    OTHER="$1"
-    shift    
-    wait
+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
     ;;
-  *)
-    echo "App $APP is waiting to start until $OTHER is ready"
-    status "waiting for $OTHER"
-  
-    start
-  ;;
-esac  
-
-eval "$@"
+  esac  
+done