#!/bin/bash
#
# sccl_status - PRGs und PRGPs mit "status" aufrufen
#
# Aufruf:
#
# sccl_status [-p <prgpars>] <paketname> [<node>]
#
# alle PRGs und PRGPs des Paketes <paketname> mit "status" 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 [[ $# -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 [[ "$2" = "THISNODE" || "$NODE" = "$THISHOSTNAME" ]]; then
  if [[ ! -f $PACKAGES ]]; then
    echo "$RETERROR$PACKAGES fehlt." >&2
    exit 1
  fi
  #
  PACKAGE=$1
  #
  ./sccl_status_package $CALLPARS $PACKAGE 2>&1
  RET=$?
  if [[ $RET -ne 0 ]]; then
    if [[ -n "$RETERROR" ]]; then
      echo "${RETERROR}Bad Status"
    fi
    if [[ -n "$RETVALUE" ]]; then
      echo "RETURNVALUE 2"
    fi
    exit 1
  fi
else
  if [[ -t 1 ]]; then
    callnode $NODE "sccl_status.s3w?paket=$1&node=$NODE&callpars=$CALLPARS&scclerrorflag=-R" | tee /dev/tty | grep -Eq '^SCCL-Error|^RETURNVALUE [12]'
    [[ $? -ne 0 ]]
  else
    callnode $NODE "sccl_status.s3w?paket=$1&node=$NODE&callpars=$CALLPARS&scclerrorflag=-R" | sed '/^SCCL-Error/h;/^RETURNVALUE [12]/h;${x;/./{x;q1};x;q0}'
  fi
fi
