#!/bin/bash
#
# sccl_start_node_bg Startet einen Knoten des Script-Clusters
#
# Aufruf:
#
# sccl_start_node_bg [-r] [--cleanstart] [<node>]
#
# Alle Pakete, die in der Datei pakete eingetragen sind und fuer die der aktuelle
# Knoten als erstes aufgelistet ist, wird das jeweilige Paket gestartet.
#
# --cleanstart: /clusterlocks bereinigen und Pakete starten,
#               wenn "node.DISABLED" nicht gesetzt (nur lokal)
#
########################################################################################
#
. $(dirname $0)/globals.settings
#
unset SAVESTATEFLAG CLEANSTART backgroundflag 
while getopts I:er-:? op; do
  case "$op" in
   r) SAVESTATEFLAG=1;;
   I) export scclinitiated="$OPTARG";;
   -) case "$OPTARG" in
       cleanstart) CLEANSTART='--cleanstart';;
       *) echo "usage: $MYPRG [-b|-B] [-r] [--cleanstart] [<node>]"
          exit 1;;
      esac;;
   *) echo "usage: $MYPRG [-b|-B] [-r] [--cleanstart] [<node>]"
      exit 1;;
  esac
done
shift $(( $OPTIND - 1))
#
if [[ -n "$CLEANSTART" ]]; then
  rm -f "$LOCKDIR"/*_lock "$LOCKDIR"/*_progress
fi
touch "$LOCKDIR/node._progress"
[[ -f "$LOCKDIR/node.STOPPED" ]] && rm "$LOCKDIR/node.STOPPED"
if [[ ! -f $PACKAGES ]]; then
  echo "Error: $PACKAGES not found" >&2
  exit 1
fi
unset SAVED
if [[ -f "$LOCKDIR"/node.DISABLED ]]; then
  echo "Die Clusterdienste sollen nicht gestartet werden."
  exit 0
elif [[ "$SAVESTATEFLAG" = 1 && -s "$LOCKDIR/savestate.LASTSTATE" ]]; then
  SAVED=" $(echo $(<"$LOCKDIR/savestate.LASTSTATE")) "
fi
for i in $(awk -v SAVED="$SAVED" '!/^#/ && (","$2"," ~ ",'$THISHOSTNAME'," || ","$2"," ~ ",'$THISFQDN'," || ($2 == "+" && SAVED ~ " "$1" ")) { print $1 }' $PACKAGES); do
  ./sccl_start_bg ${SAVESTATEFLAG:+--boot} $i THISNODE
done
[[ -f "$LOCKDIR/savestate.LASTSTATE" ]] && rm "$LOCKDIR/savestate.LASTSTATE"
[[ -f "$LOCKDIR/node._progress" ]] && rm "$LOCKDIR/node._progress"
