Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
executable file 155 lines (130 sloc) 3.89 KB
#!/bin/sh
# -*- tab-width:4;indent-tabs-mode:nil -*-
# ex: ts=4 sw=4 et
RUNNER_SCRIPT_DIR=$(cd ${0%/*} && pwd)
RUNNER_BASE_DIR=${RUNNER_SCRIPT_DIR%/*}
RUNNER_ETC_DIR=$RUNNER_BASE_DIR/etc
RUNNER_LOG_DIR=$RUNNER_BASE_DIR/log
# Note the trailing slash on $PIPE_DIR/
PIPE_DIR=$RUNNER_BASE_DIR/tmp/
RUNNER_USER=
# Make sure this script is running as the appropriate user
if [ ! -z "$RUNNER_USER" ] && [ `whoami` != "$RUNNER_USER" ]; then
exec sudo -u $RUNNER_USER -i $0 $@
fi
# Make sure CWD is set to runner base dir
cd $RUNNER_BASE_DIR
# Make sure log directory exists
mkdir -p $RUNNER_LOG_DIR
# Identify the script name
SCRIPT=`basename $0`
# Parse out release and erts info
START_ERL=`cat $RUNNER_BASE_DIR/releases/start_erl.data`
ERTS_VSN=${START_ERL% *}
APP_VSN=${START_ERL#* }
# Use releases/VSN/vm.args if it exists otherwise use etc/vm.args
if [ -e "$RUNNER_BASE_DIR/releases/$APP_VSN/vm.args" ]; then
VMARGS_PATH="$RUNNER_BASE_DIR/releases/$APP_VSN/vm.args"
else
VMARGS_PATH="$RUNNER_ETC_DIR/vm.args"
fi
# Use releases/VSN/sys.config if it exists otherwise use etc/app.config
if [ -e "$RUNNER_BASE_DIR/releases/$APP_VSN/sys.config" ]; then
CONFIG_PATH="$RUNNER_BASE_DIR/releases/$APP_VSN/sys.config"
else
CONFIG_PATH="$RUNNER_ETC_DIR/app.config"
fi
# Extract the target node name from node.args
NAME_ARG=`egrep '^-s?name' $VMARGS_PATH`
if [ -z "$NAME_ARG" ]; then
echo "vm.args needs to have either -name or -sname parameter."
exit 1
fi
# Extract the target cookie
COOKIE_ARG=`grep '^-setcookie' $VMARGS_PATH`
if [ -z "$COOKIE_ARG" ]; then
echo "vm.args needs to have a -setcookie parameter."
exit 1
fi
# Add ERTS bin dir to our path
ERTS_PATH=$RUNNER_BASE_DIR/erts-$ERTS_VSN/bin
# Setup command to control the node
NODETOOL="$ERTS_PATH/escript $ERTS_PATH/nodetool-admin $NAME_ARG $COOKIE_ARG"
# Check the first argument for instructions
case "$1" in
bootstrap)
# Make sure there IS a node running
RES=`$NODETOOL ping`
if [ "$RES" != "pong" ]; then
echo "Node is not running!"
exit 1
fi
## Cluster bootstrap
$NODETOOL $*
ES=$?
if [ "$ES" -ne 0 ]; then
exit $ES
fi
;;
create-table)
# Make sure there IS a node running
RES=`$NODETOOL ping`
if [ "$RES" != "pong" ]; then
echo "Node is not running!"
exit 1
fi
## Cluster createtable
$NODETOOL $*
ES=$?
if [ "$ES" -ne 0 ]; then
exit $ES
fi
;;
client-add)
# Make sure a node IS running
RES=`$NODETOOL ping`
if [ "$RES" != "pong" ]; then
echo "Node is not running!"
exit 1
fi
## Cluster add client(s)
$NODETOOL $*
ES=$?
if [ "$ES" -ne 0 ]; then
exit $ES
fi
;;
client-delete)
# Make sure a node IS running
RES=`$NODETOOL ping`
if [ "$RES" != "pong" ]; then
echo "Node is not running!"
exit 1
fi
## Cluster delete client(s)
$NODETOOL $*
ES=$?
if [ "$ES" -ne 0 ]; then
exit $ES
fi
;;
client-list)
# Make sure a node IS running
RES=`$NODETOOL ping`
if [ "$RES" != "pong" ]; then
echo "Node is not running!"
exit 1
fi
## Cluster list client(s)
$NODETOOL $*
ES=$?
if [ "$ES" -ne 0 ]; then
exit $ES
fi
;;
*)
echo "Usage: $SCRIPT {(bootstrap | create-table <name>) [-bigdata] [-disklogging] [-syncwrites] [-varprefix] [-varprefixsep <char>] [-varprefixnum <num>] [-bricksperchain <num>] [-numnodesperblock <num>] [-blockmultfactor <num>] [-local <num> | <brick> ...] | client-add <client> ... | client-delete <client> ... | client-list}"
exit 1
;;
esac
exit 0
Something went wrong with that request. Please try again.