#!/bin/bash
#
# sccl_reload - PRGs und PRGPs mit "reload" aufrufen
#
# Aufruf:
#
# sccl_reload [-p <prgpars>] <paketname> [<node>]
#
# alle PRGs und PRGPs des Paketes <paketname> mit "reload" aufrufen
#
########################################################################################
#
. $(dirname $0)/globals.settings
#
unset RETVALUE RETERROR CALLPARS
while getopts p:rR? op; do
  case "$op" in
   p) STOPPARS="$STOPPARS $OPTARG"
      for i in $OPTARG; do
        CALLPARS="$CALLPARS -p $i"
      done;;
   r) RETVALUE=1;;
   R) RETERROR='SCCL-Error: '
      unset RETVALUE;;
   *) echo "usage: $MYPRG [-p <prgpars>] [-r] <package> [<node>]"
      exit 1;;
  esac
done
shift $(( $OPTIND - 1))
#
if [[ $# -lt 1 ]]; then
  echo "usage: $MYPRG [-p <prgpars>] [-r] <package> [<node>]"
  if [[ -n "$RETERROR" ]]; then
    echo "${RETERROR}Fehlerhafter Aufruf"
  fi
  exit 1
fi
#
if [[ "$2" = "THISNODE" ]]; then
  if [[ ! -f $PACKAGES ]]; then
    echo "${RETERROR}$PACKAGES fehlt." >&2
    exit 1
  fi
  LOGFILE=$SCCLLOGBASE/$SCCLLOGNAME${1}_reload.log
  #
  PACKAGE=$1
  STARTTIME=`starttime $PACKAGE`
  #
  set -o pipefail
  ./sccl_reload_package $CALLPARS $PACKAGE 2>&1 | tee "$LOGFILE"
  RET=$?
  if [[ $RET -eq 0 ]]; then
    echo "Bei Paket '$PACKAGE' auf $THISHOSTNAME wurde reload ausgeführt."
  else
    echo "${RETERROR}Bei Paket '$PACKAGE' konnte reload nicht ausgeführt werden."
    if [[ -n "$RETVALUE" ]]; then
      echo "RETURNVALUE 1"
    fi
    exit 1
  fi
else
  if [[ $# -ge 2 ]]; then
    NODE=$(tr '[:upper:]' '[:lower:]' <<<$2)
  else
    if NODE=`sccl_get_actnode $1`; then
      if [[ $NODE == *" "* ]]; then
        echo "${RETERROR}Das Paket $1 laeuft mehrfach im Cluster, der Knoten muss angegeben werden."
        exit 1
      fi
    else
      echo "${RETERROR}Das Paket $1 ist im Cluster nicht aktiv."
      exit 1
    fi
  fi
  if [[ -t 1 ]]; then
    callnode $NODE "sccl_reload.s3w?paket=$1&node=$NODE&callpars=$CALLPARS&initiated=${scclinitiated:-$THISHOSTNAME}&scclerrorflag=-R" | tee /dev/tty | grep -Eq '^SCCL-Error|^RETURNVALUE [12]'
    [[ $? -ne 0 ]]
  else
    callnode $NODE "sccl_reload.s3w?paket=$1&node=$NODE&callpars=$CALLPARS&initiated=${scclinitiated:-$THISHOSTNAME}&scclerrorflag=-R" | sed '/^SCCL-Error/h;/^RETURNVALUE [12]/h;${x;/./{x;q1};x;q0}'
  fi
fi
