diff options
Diffstat (limited to 'garbd-wrapper')
-rwxr-xr-x | garbd-wrapper | 38 |
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 |