#!/bin/bash # # 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 fi } function check { if [ -d "$DIR" ]; then if [ -e "$DIR/$OTHER" ]; then echo "$(cat $DIR/$OTHER)" else echo "$DIR/$OTHER does not exist" fi else echo "$DIR does not exist" fi } function start { 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 } if [ "sleep" = "$OTHER" ]; then echo "Sleeping $1" status "Sleeping $1" sleep $1 shift status "ready" echo "Done" else echo "App $APP is waiting to start until $OTHER is ready" status "waiting for $OTHER" start fi eval "$@"