#!/bin/bash
#
# sccl_stop_node Stoppt alle Pakete eines Knotens im Script-Cluster
#
# Aufruf:
#
# sccl_stop_node [--force|--clear] [-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.functions
#
SWITCHFLAG=0
unset SAVESTATEFLAG FORCE
#
while getopts sr-:? op
 do
  case "$op" in
   r) SAVESTATEFLAG="-r";;
   s) SWITCH=-s
      SWITCHFLAG=1;;
   -) case "$OPTARG" in
       force) FORCE='--force';;
       clear) FORCE='--clear';;
       *) echo "usage: $0 [--force|--clear] [-r] [-s] <Node Name>"
          exit 1
      esac;;
   *) echo "usage: $0 [--force|--clear] [-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"
else
  if [[ "$SAVESTATEFLAG" = "-r" ]]
   then
    ./sccl_list_packages_on_node >$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 $i $THISHOSTNAME
     then
      if [[ $SWITCHFLAG = 1 ]]
       then
        ALTHOST=`./sccl_get_alt_node $i $THISHOSTNAME`
        if [[ ${ALTHOST:-0} != 0 ]]
         then
          ./sccl_start $i $ALTHOST
        fi
      fi
    fi
  done
  #
  if [[ ${FORCE:-nix} = "--force" ]]
   then
    rm -f /clusterlocks/*$LOCKEXTENSION
  fi
fi
