#!/bin/bash
#
# sccl_stop_node Stoppt alle Pakete eines Knotens im Script-Cluster
#
# Aufruf:
#
# sccl_stop_node [--force|--clear] [--enable-traps] [-r] [-s] [<node>]
#
# Alle Pakete, die auf dem aktuellen Knoten laufen, werden gestoppt und bei
# angabe -s auf dem naechsten Knoten gestartet
#
########################################################################################
#
. $(dirname $0)/globals.settings
#
SWITCHFLAG=0
unset SAVESTATEFLAG FORCE ENABLETRAPS
#
while getopts I:sr-:? op; do
  case "$op" in
   I) export scclinitiated="$OPTARG";;
   r) SAVESTATEFLAG="-r";;
   s) SWITCH=-s
      SWITCHFLAG=1;;
   -) case "$OPTARG" in
       force) FORCE='--force';;
       clear) FORCE='--clear';;
       enable-traps) ENABLETRAPS='--enable-traps';;
       *) echo "usage: $MYPRG [--force|--clear] [--enable-traps] [-r] [-s] <Node Name>"
          exit 1
      esac;;
   *) echo "usage: $MYPRG [--force|--clear] [--enable-traps] [-r] [-s] <Node Name>"
      exit 1
  esac
done
shift $(( $OPTIND - 1))
#
if [[ $# -gt 0 && "$1" != "$THISHOSTNAME" && "$1" != "$THISFQDN" ]]; then
  callnode $1 "sccl_stop_node.s3w?switch=$SWITCH&force=$FORCE&initiated=${scclinitiated:-$THISHOSTNAME}"
else
  touch "$LOCKDIR/node._progress"
  if [[ "$SAVESTATEFLAG" = "-r" ]]; then
    ./sccl_list_packages_on_node -t >"$LOCKDIR/savestate.LASTSTATE"
    echo 'RESTART' >"$LOCKDIR/node.STOPPED"
  else
    echo 'STOP' >"$LOCKDIR/node.STOPPED"
  fi
  for i in `./sccl_list_packages_on_node -U`; do
    if ./sccl_stop $FORCE --clusterstop $ENABLETRAPS $i THISNODE; then
      if [[ $SWITCHFLAG = 1 ]]; then
        if ALTHOST=$(./sccl_get_alt_node $i $THISHOSTNAME); then
          ./sccl_start_bg $i $ALTHOST
        fi
      fi
    fi
  done
  for i in `./sccl_list_packages_on_node -T`; do
    if ./sccl_stop_tst $i THISNODE; then
      if NEXTNODE=$(./sccl_get_nextnode -f -x ${i##*_} $i $THISHOSTNAME); then
        ./sccl_start_tst $i $NEXTNODE
      fi
    fi
  done
  #
  if [[ "$FORCE" = "--force" ]]; then
    rm -f $LOCKDIR/*$LOCKEXTENSION
  fi
  [[ -f "$LOCKDIR/node._progress" ]] && rm "$LOCKDIR/node._progress"
fi
