summaryrefslogtreecommitdiffstats
path: root/base/root/scripts/functions
diff options
context:
space:
mode:
Diffstat (limited to 'base/root/scripts/functions')
-rw-r--r--base/root/scripts/functions33
1 files changed, 33 insertions, 0 deletions
diff --git a/base/root/scripts/functions b/base/root/scripts/functions
new file mode 100644
index 0000000..be320fe
--- /dev/null
+++ b/base/root/scripts/functions
@@ -0,0 +1,33 @@
+# Hey Emacs, this is a -*- shell-script -*- In fact, it is bash! :-)
+
+cluster_is_healthy ()
+{(
+ set -o pipefail
+ { ctdb -Y status || return 1 ; } |
+ {
+ read x
+ count=0
+ while read line ; do
+ count=$(($count + 1))
+ [ "${line#:*:*:}" != "0:0:0:0:" ] && cat >/dev/null && return 1
+ done
+ [ $count -gt 0 ] && return $?
+ }
+)}
+
+wait_until_healthy ()
+{
+ local timeout="${1:-120}"
+
+ while [ $timeout -gt 0 ] ; do
+ if cluster_is_healthy ; then
+ echo .
+ return 0
+ fi
+ echo -n .
+ timeout=$(($timeout - 1))
+ sleep 1
+ done
+
+ return 1
+}