#!/bin/bash
#
# sccl_start_node Startet einen Knoten des Script-Clusters
#
# Aufruf:
#
# sccl_start_node [-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.functions
#
if [[ ! -f $PACKAGES ]]
 then
  exit 1
fi
#
unset SAVESTATEFLAG CLEANSTART clean
while getopts er-:? op
 do
  case "$op" in
   r) SAVESTATEFLAG=1;;
   -) case "$OPTARG" in
       cleanstart) CLEANSTART=1
                   clean='--cleanstart';;
       *) echo "usage: `basename $0` [-r] [--cleanstart] [<node>]"
          exit 1;;
      esac;;
   *) echo "usage: `basename $0` [-r] [--cleanstart] [<node>]"
      exit 1;;
  esac
done
shift $(( $OPTIND - 1))
#
if [[ $# -gt 0 ]]
 then
  callnode $1 "sccl_start_node.s3w?clean=$clean"
else
  [[ -f "$LOCKDIR/node.STOPPED" ]] && rm $LOCKDIR/node.STOPPED
  if [[ "$CLEANSTART" = 1 ]]
   then
    rm "$LOCKDIR"/*
  fi
  if [[ -f "$LOCKDIR"/node.DISABLED ]]
   then
    echo "Die Clusterdienste sollen nicht gestartet werden."
    exit 0
  elif [[ "$SAVESTATEFLAG" = 1 && -s "$LOCKDIR/savestate.LASTSTATE" ]]
   then
    cat "$LOCKDIR/savestate.LASTSTATE" | while read p
     do
      if grep -q "^$p[[:blank:]][+][[:blank:]]" $PACKAGES
       then
        ./sccl_start $p
      fi
    done
  fi
  for i in `awk '!/^#/ && (","$2"," ~ ",'$THISHOSTNAME'," || ","$2"," == ",'$THISFQDN',") { print $1 }' $PACKAGES`
   do
    ./sccl_start $i
  done
  [[ -f "$LOCKDIR/savestate.LASTSTATE" ]] && rm "$LOCKDIR/savestate.LASTSTATE"
fi
