#!/bin/bash
#
# sccl_restart stoppt und startet ein Paket im Script-Cluster
#
# Aufruf:
#
# sccl_restart <paketname>[,<paketname2>,...] [<node>]
#
# Das Paket <paketname> wird auf dem Knoten <node> gestartet, wenn angegeben,
# sonst auf dem Knoten, auf dem das Skript sccl_start laeuft.
#
########################################################################################
#
unset SCCLINITIGNORE
#
while getopts i:? op
 do
  case "$op" in
   i) SCCLINITIGNORE="$OPTARG";;
   ?) echo "usage: `basename $0` [-i <initignore>] <packages> [<node>]"
      exit 1;;
  esac
done
#
shift $(( $OPTIND - 1))
#
# ist [<node>] angegeben? wenn ja, dann sccl_restart auf $2 ausfuehren
if [[ $# -lt 1 || $# -gt 2 ]]
 then
  echo "usage: $0 <paketname>[,<paketname2>,...] [<node>]"
  exit 1
fi
#
. `dirname $0`/globals.functions
#
PACKS=$1
STPACKS=""
#
if [[ $# -eq 2 ]]
 then
  callnode $2 "sccl_restart.s3w?paket=$1&initignore=${SCCLINITIGNORE:-$1:$THISHOSTNAME}"
else
  export SCCLINITIGNORE="${SCCLINITIGNORE:-$1:$THISHOSTNAME}"
  for i in `echo $PACKS | sed 's/,/ /g'`
   do
    if ./sccl_test_res $i
     then
      if ./sccl_stop_package $i
       then
        echo "Paket $i ist auf $THISHOSTNAME gestoppt"
        STPACKS="$i $STPACKS"
      else
        echo "Paket $i konnte auf $THISHOSTNAME nicht gestoppt werden"
      fi
    fi
  done
  if [[ -n "$STPACKS" ]]
   then
    sleep 10
  fi
  for i in `echo $STPACKS | sed 's/,/ /g'`
   do
    if ./sccl_start_package $i
     then
      echo "Das Paket $i wurde auf $THISHOSTNAME gestartet."
    else
      echo "Das Paket $i konnte nicht gestartet werden."
    fi
  done
fi
