diff options
Diffstat (limited to 'tools/leavecluster')
-rwxr-xr-x | tools/leavecluster | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/tools/leavecluster b/tools/leavecluster deleted file mode 100755 index 73602044..00000000 --- a/tools/leavecluster +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/sh - -# Remove the current ejabberd node in a cluster - -# copyright (c) 2010-2015 ProcessOne - -# Return Code: -# 0 : groovy baby -# 10 : ejabberdctl not found -# 11 : erl not found -# 12 : erlc not found -# 22 : temporary dir can not be created - -error() -{ - echo "Error: $1" >&2 - exit $2 -} - -[ -z $NO_WARNINGS ] && { - echo "--------------------------------------------------------------------" - echo "" - echo "ejabberd cluster configuration" - echo "" - echo "This ejabberd node will be removed from the cluster." - echo "IMPORTANT: this node will be stopped. At least one other clustered" - echo "node must be running." - echo "" - echo "--------------------------------------------------------------------" - echo "Press any key to continue, or Ctrl+C to stop now" - read foo - echo "" -} - -PA=/tmp/clustersetup_$$ -CTL=$(which ejabberdctl) -[ -x "$CTL" ] || { - HERE=`which "$0"` - BASE=`dirname $HERE`/.. - ROOTDIR=`cd $BASE; pwd` - PATH=$ROOTDIR/bin:$PATH - PA=$ROOTDIR/clustersetup_$$ - CTL=$(which ejabberdctl) -} -echo "Using commands:" -[ -x "$CTL" ] && echo $CTL || error "can't find ejabberdctl" 10 - -exec $CTL stop 2>/dev/null >/dev/null -ERLC=${ERL}c - -[ -x $ERL ] && echo $ERL || error "can't find erl" 11 -[ -x $ERLC ] && echo $ERLC || error "can't find erlc" 12 -echo "" - -$CTL stopped - -CLUSTERSETUP=clustersetup -CLUSTERSETUP_ERL=$PA/$CLUSTERSETUP.erl - -set -o errexit -set -o nounset - -mkdir -p $PA || error "$PA cannot be created" 22 -cd $PA -cat <<EOF > $CLUSTERSETUP_ERL --module($CLUSTERSETUP). - --export([start/0]). - -del_table_copy(Table, Node) -> - case mnesia:del_table_copy(Table, Node) of - {aborted, Reason} -> io:format("Error: can not remove ~p table: ~p~n", [Table, Reason]); - _ -> io:format("table ~p removed from cluster~n", [Table]) - end. - -del_tables([],_) -> - ok; -del_tables([schema | Tables], Node) -> - del_tables(Tables, Node); -del_tables([Table | Tables], Node) -> - del_table_copy(Table, Node), - del_tables(Tables, Node). - -start() -> - io:format("~n",[]), - Removed = node(), - case mnesia:system_info(running_db_nodes)--[Removed] of - [] -> io:format("Error: no other node running in the cluster~n"); - Nodes -> - del_tables(mnesia:system_info(local_tables), Removed), - mnesia:stop(), - case rpc:call(hd(Nodes), mnesia, del_table_copy, [schema, Removed]) of - {badrpc,Reason} -> io:format("Error: can not unregister node ~p from cluster: ~p~n", [Removed, Reason]); - {aborted,Reason} -> io:format("Error: can not unregister node ~p from cluster: ~p~n", [Removed, Reason]); - {atomic, ok} -> - mnesia:delete_schema([Removed]), - io:format("node ~p removed from cluster~n", [Removed]) - end - end, - halt(0). -EOF - -$ERLC -o $PA $CLUSTERSETUP_ERL -$ERL $NAME $ERLANG_NODE -pa $PA $KERNEL_OPTS -mnesia dir "\"$SPOOL_DIR\"" -s mnesia -s $CLUSTERSETUP start -cd - -rm -Rf $PA - -echo "End." -echo "Check that there is no error in the above messages." |