#!/bin/bash
#
# sccl_start Startet ein Paket im Script-Cluster
#
# Aufruf:
#
# sccl_start [--simulate] [--force] [--norst] [-p <startpars>] [-x <envvars>] <paketname> [<node>]
#
#    --simulate: Start nur simulieren
#    --force: Platten werden gemountet, auch wenn noch Lockdateien von andren Knoten vorhanden sind
#    -p <p> : bei PRG und PRGP Parameter <p> mit übergeben
#    -x <x> : setzen von Variablen in sccl_start_res (-x "VAR=val")
# Das Paket <paketname> wird auf dem Knoten <node> gestartet, wenn angegeben,
# sonst auf dem einzigen Knoten, auf dem das Paket gestartet werden darf
# oder bei MULTI auf dem Kntoen, auf dem das Skript sccl_start ausgefuehrt wird.
#
########################################################################################
#
. $(dirname $0)/globals.settings
#
while getopts x:p:-:? op; do
  case "$op" in
   x) ;;
   p) ;;
   -) case "$OPTARG" in
       force) ;;
       simulate) ;;
       norst) ;;
       *)     echo "usage: $MYPRG [--simulate] [--force] [--norst] [-p <startpars>] [-x <envvars>] <package> [<node>]"
              exit 1;;
      esac;;
   ?) echo "usage: $MYPRG [--simulate] [--force] [--norst] [-p <startpars>] [-x <envvars>] <package> [<node>]"
      exit 1;;
  esac
done
#
if [[ $# -lt $OPTIND ]]; then
  echo "usage: $MYPRG [--simulate] [--force] [--norst] [-p <startpars>] [-x <envvars>] <package> [<node>]"
  if [[ -n "$RETERROR" ]]; then
    echo "SCCL-Error: Fehlerhafter Aufruf"
  fi
  exit 1
fi
#
PIDSIG="$(date '+%s')$$$THISHOSTNAME"
paket="$1"
#
killstart ()
{ node=$(head -1 "$LOCKDIR/${paket}_start_progress" | cut -d ' ' -f 2)
  if [[ "$node" = "$THISHOSTNAME" ]]; then
    if callnode $node "sccl_node.s2w" | grep -q "$THISHOSTNAME"; then
      callnode $node "sccl_kill.s3w?paket=$paket&pidsig=$PIDSIG"
    elif [[ -r /etc/sccl/localadminpwd.dat ]]; then
      ./sccl_kill_package $paket $PIDSIG
    fi
  else
    callnode $node "sccl_kill.s3w?paket=$paket&pidsig=$PIDSIG"
  fi
}
#
trap 'killstart' 2 3 6
#
./sccl_start_bg -P $PIDSIG "$@" &
wait $!
