blob: 5a8d06253277248178fc61c69ff4c2a39e162eb4 [file] [log] [blame]
Instrumental08e93402018-10-03 08:38:52 -05001#!/bin/bash
2#
3# A Script for use in Pods... Check for status files, and validate before moving on.
4#
5DIR="/opt/app/aaf/status"
6APP=$1
7shift
8OTHER=$1
9shift
10
11function status {
12 if [ -d "$DIR" ]; then
13 echo "$@" > $DIR/$APP
14 fi
15}
16
Instrumental08e93402018-10-03 08:38:52 -050017
18function check {
19 if [ -d "$DIR" ]; then
20 if [ -e "$DIR/$OTHER" ]; then
21 echo "$(cat $DIR/$OTHER)"
22 else
23 echo "$DIR/$OTHER does not exist"
24 fi
25 else
26 echo "$DIR does not exist"
27 fi
28}
29
Instrumentalca788dc2018-11-03 14:38:21 -050030function wait {
31 n=0
32 while [ $n -lt 40 ]; do
33 rv="$(check)"
34 echo "$rv"
35 if [ "$rv" = "ready" ]; then
36 echo "$OTHER is $rv"
37 n=10000
38 else
39 (( ++n ))
40 echo "Sleep 10 (iteration $n)"
41 sleep 10
42 fi
43 done
44}
45
Instrumental14f37072018-10-09 08:32:06 -050046function start {
47 n=0
48 while [ $n -lt 40 ]; do
49 rv="$(check)"
50 echo "$OTHER is $rv"
51 if [ "$rv" = "ready" ]; then
52 # This is critical. Until status is literally "ready" in the status directory, no processes will start
53 status ready
54 echo "Starting $@"
55 n=10000
56 else
57 (( ++n ))
58 echo "Sleep 10 (iteration $n)"
59 sleep 10
60 fi
61 done
62}
Instrumental08e93402018-10-03 08:38:52 -050063
Instrumentalca788dc2018-11-03 14:38:21 -050064case "$OTHER" in
65 sleep)
66 echo "Sleeping $1"
67 status "Sleeping $1"
68 sleep $1
69 shift
70 status "ready"
71 echo "Done"
72 ;;
73 wait)
74 OTHER="$1"
75 shift
76 wait
77 ;;
78 *)
79 echo "App $APP is waiting to start until $OTHER is ready"
80 status "waiting for $OTHER"
81
82 start
83 ;;
84esac
Instrumental08e93402018-10-03 08:38:52 -050085
86eval "$@"