#!/bin/bash
#
# sccl_stop stoppt ein Paket im Script-Cluster
#
# Aufruf:
#
# sccl_stop [--force|--clear|--tstkill] [--clusterstop] <paketname> [<node>]
#
# Das Paket <paketname> wird auf dem Knoten <node> gestoppt.
# ist --force angegeben, dann werden alle Resourcen des Paketes auf
# dem angegebenen <node> beendet. Andernfalls wird der aktive
# Knoten bestimmt.
#
########################################################################################
#echo $0 $*
#
. `dirname $0`/globals.functions
#
if [[ ! -f $PACKAGES ]]
 then
  exit 1
fi
#
########################################################################################
# ist [--force] angegeben?
if [[ "$1" = "--force" ]]
 then
  FORCE=$1
  shift
else
  FORCE=""
fi
#
if [[ "$1" = "--clear" || "$1" = "--tstkill" ]]
 then
  CLEAR=$1
  shift
fi
#
if [[ "$1" = "--clusterstop" ]]
 then
  CLUSTERSTOP=--clusterstop
  shift
fi
#
#
if [[ -z "$FORCE" ]]
 then
  if ! grep -q '^'$1'[[:blank:]]' $PACKAGES
   then
    echo "$1 ist kein Paket."
    exit 1
  fi
fi
#
if [[ $# -lt 1 ]]
 then
  echo "usage: $0 [--force|--clear|--tstkill] [--clusterstop] <paketname> [<node>]"
  exit 1
fi
#
if [[ $# -ge 2 ]]
 then
  NODE=`echo $2 | tr '[:upper:]' '[:lower:]'`
else
  if NODE=`sccl_get_aktnode $1`
   then
    if echo $NODE | grep -q " "
     then
      echo "Das Paket $1 laeuft mehrfach im Cluster, der Knoten muss angegeben werden."
      exit 1
    fi
  else
    echo "Das Paket $1 ist im Cluster nicht aktiv."
    if [[ "$FORCE" = "--force" || "$CLEAR" = "--clear" ]]
     then
      echo "Der Node muss mit angegeben werden: $0 $FORCE$CLEAR $1 <node>"
    fi
    exit 1
  fi
fi
#
if [[ `id -u` != 0 ]]
 then
  callnode $NODE "sccl_stop.s3w?force=$FORCE&clear=$CLEAR&paket=$1&node=$NODE"
elif [[ "$2" != "THISNODE" && $NODE != $THISHOSTNAME && $NODE != $THISFQDN ]]
 then
  callnode $NODE "sccl_stop.s3w?force=$FORCE&clear=$CLEAR&paket=$1&node=$NODE"
else
  PAKET=$1
  STARTTIME=`starttime $PAKET`
  #
  ./sccl_stop_package $FORCE $CLEAR $CLUSTERSTOP $PAKET
  RET=$?
   if [[ $RET -eq 0 ]]
   then
    if [[ ! -z "$STARTTIME" ]]
     then
      echo
      if [[  ! "$ULS" = "" ]]
      then
         DATETIME=`date '+%Y-%m-%d %H:%M:%S'`
         #                                            Sektion  Teststep        Detail       Date Time Wert            Einheit
         send_test_value -h DOMAIN:$THISHOSTNAME:SCCL $CLUSTER Packages:$PAKET Server       $DATETIME $THISHOSTNAME   "_"
         send_test_value -h DOMAIN:$THISHOSTNAME:SCCL $CLUSTER Packages:$PAKET "start-stop" $DATETIME "Stop"          "_"
      fi
    fi
    echo "Das Paket $PAKET wurde auf $THISHOSTNAME gestoppt."
  else
    if [[ $RET -eq 2 ]]
     then
      echo "Das Paket ist noch als Unterpaket aktiv."
    else
      if [[ ! -z "$STARTTIME" ]]
       then
        echo
        if [[ ! "$ULS" = "" ]]
        then
           DATETIME=`date '+%Y-%m-%d %H:%M:%S'`
           #                                            Sektion  Teststep        Detail       Date Time Wert            Einheit
           send_test_value -h DOMAIN:$THISHOSTNAME:SCCL $CLUSTER Packages:$PAKET Server       $DATETIME $THISHOSTNAME   "_"
           send_test_value -h DOMAIN:$THISHOSTNAME:SCCL $CLUSTER Packages:$PAKET "start-stop" $DATETIME "ERROR (Stop)"  "_"
        fi
      fi
      echo "Das Paket $PAKET konnte nicht gestoppt werden."
    fi
    exit 2
  fi
fi
