Update DCAE Startup Info
[aaf/authz.git] / auth / sample / bin / pod_wait.sh
index 732edff..5a10476 100644 (file)
 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"
@@ -51,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
@@ -67,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