#!/bin/bash
#
# sccl_start Startet ein Paket im Script-Cluster
#
# Aufruf:
#
# sccl_start [--force] [-x <extrapars>] [-i <initignore>] <paketname> [<node>]
#
# Das Paket <paketname> wird auf dem Knoten <node> gestartet, wenn angegeben,
# sonst auf dem Knoten, auf dem das Skript sccl_start laeuft.
#
########################################################################################
#
if [[ "$1" == "--force" ]]
 then
  FORCE="--force"
  shift
else
  FORCE=""
fi
#
unset SCCLINITIGNORE
#
while getopts i:x:? op
 do
  case "$op" in
   i) SCCLINITIGNORE="$OPTARG";;
   x) X="-x $OPTARG";;
   ?) echo "usage: `basename $0` [-x <extrapars>] [-i <initignore>] <package> [<node>]"
      exit 1;;
  esac
done
#
shift $(( $OPTIND - 1))
#
# ist [<node>] angegeben? wenn ja, dann sccl_start auf $2 ausfuehren
if [[ $# -lt 1 ]]
 then
  echo "usage: $0 [--force] <paketname> [<node>]"
  exit 1
fi
#
. `dirname $0`/globals.functions
#
if [[ ! -f $PACKAGES ]]
 then
  exit 1
fi
#
if [[ -f $LOCKDIR/node.STOPPED ]]
 then
  echo "Der Knoten $THISHOSTNAME ist heruntergefahren"
  exit 1
fi
if [[ -f $LOCKDIR/node.DISABLED ]]
 then
  echo "Der Knoten $THISHOSTNAME ist disabled"
  exit 1
fi

NODE=`echo $2 | tr '[:upper:]' '[:lower:]'`
if [[ "$SCCLINITIGNORE" = "$1:$THISHOSTNAME" ]]
 then
  echo "ignoring starting loop."
  exit 0
fi
#
if [[ `id -u` != 0 && -z "$2" ]]
 then
  callnode $THISHOSTNAME "sccl_start.s3w?paket=$1&force=$FORCE"
elif [[ $# -ge 2 && "$NODE" != "$THISHOSTNAME" && "$NODE" != "$THISFQDN" ]]
 then
  callnode $2 "sccl_start.s3w?paket=$1&force=$FORCE&initignore=${SCCLINITIGNORE:-$1:$THISHOSTNAME}"
else
  export THISINITIGNORE="$1:$THISHOSTNAME"
  export SCCLINITIGNORE="${SCCLINITIGNORE:-$THISINITIGNORE}"
  #
  PAKET=$1
  if ! grep '^'$1'[[:blank:]]' $PACKAGES | egrep -q "[,[:blank:]]$THISHOSTNAME[,[:blank:]]|[,[:blank:]]$THISHOSTNAME\$|[,[:blank:]]$THISFQDN[,[:blank:]]|[,[:blank:]]$THISFQDN\$"
   then
    echo "$PAKET darf auf diesem Knoten nicht laufen!"
    exit 1
  fi
#
  if ./sccl_start_package $FORCE $X $PAKET
   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 "Start"         "_"
    fi
    echo "Das Paket $PAKET wurde auf $THISHOSTNAME gestartet."
  elif [[ $? -ne 1 ]]
   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 (Start)" "_"
    fi
    echo "Das Paket $PAKET konnte nicht gestartet werden."
    exit 2
  else
    exit 0
  fi
fi
