summaryrefslogtreecommitdiff
path: root/garbd-wrapper
diff options
context:
space:
mode:
Diffstat (limited to 'garbd-wrapper')
-rwxr-xr-xgarbd-wrapper38
1 files changed, 38 insertions, 0 deletions
diff --git a/garbd-wrapper b/garbd-wrapper
new file mode 100755
index 0000000..ede76f7
--- /dev/null
+++ b/garbd-wrapper
@@ -0,0 +1,38 @@
+#!/usr/bin/sh
+# This script is simple wrapper around garbd, that parses startup configuration.
+# Its main purpose is to bridge the differences between initscript and systemd unit file.
+
+CONFIG_FILE=/etc/sysconfig/garb
+
+source $CONFIG_FILE
+
+# Check that node addresses and group name are configured
+if [ -z "$GALERA_NODES" ]; then
+ echo "List of GALERA_NODES is not configured" >&2
+ exit 1
+fi
+if [ -z "$GALERA_GROUP" ]; then
+ echo "GALERA_GROUP name is not configured" >&2
+ exit 1
+fi
+
+GALERA_PORT=${GALERA_PORT:-4567}
+
+# Find a working node
+for ADDRESS in ${GALERA_NODES} 0; do
+ HOST=$(echo $ADDRESS | cut -d \: -f 1)
+ PORT=$(echo $ADDRESS | cut -s -d \: -f 2)
+ PORT=${PORT:-$GALERA_PORT}
+ ncat --send-only --recv-only $HOST $PORT >/dev/null && break
+done
+if [ ${ADDRESS} == "0" ]; then
+ echo "None of the nodes in GALERA_NODES is accessible" >&2
+ exit 1
+fi
+
+OPTIONS="-a gcomm://$ADDRESS"
+[ -n "$GALERA_GROUP" ] && OPTIONS="$OPTIONS -g $GALERA_GROUP"
+[ -n "$GALERA_OPTIONS" ] && OPTIONS="$OPTIONS -o $GALERA_OPTIONS"
+[ -n "$LOG_FILE" ] && OPTIONS="$OPTIONS -l $LOG_FILE"
+
+exec /usr/sbin/garbd $OPTIONS