#!/bin/bash
#
# sccl_get_nextnode bestimmt zu einer Resource den naechsten erlaubten Knoten, der
# nach dem angegebenen Knoten im Script-Cluster konfiguriert ist
#
# Aufruf:
#
# sccl_get_nextnode [-f] [-x <node>] <resource> [<knoten>]
#
# Die Resource <resource> wird im Scritpcluster gesucht und der naechste erlaubte
# Knoten nach <knoten> wird zurueckgeliefert. Ist <knoten> nicht angegeben, dann
# wird $THISHOSTNAME als knoten verwendet.
#
########################################################################################
#
. $(dirname $0)/globals.settings
#
unset FIRSTFLAG XNODE
while getopts 'fx:?' op; do
  case "$op" in
    f) FIRSTFLAG=1;;
    x) XNODE="$OPTARG";;
    ?) echo "usage: $MYPRG [-f] [-x <node>] <resource> [<knoten>]"
       exit 1;;
  esac
done
shift $(( $OPTIND - 1))
#
PACKAGE=$1
OLDNODE=${2:-$THISHOSTNAME}
#
if [[ -f $PACKAGES ]]; then
  NODES=$(sed -n "s/,/ /g;s/^$PACKAGE[[:blank:]]\\(.*\\)/ \\1 /p" $PACKAGES)
  if [[ -n "$XNODE" ]]; then
    NODES=$(sed "s/[[:blank:]]$XNODE[[:blank:]]/ /g" <<<"$NODES")
  fi
  NEWNODE=$(sed -n "s/.*[[:blank:]]$OLDNODE[[:blank:]][[:blank:]]*\\([^[:blank:]]*\\)[[:blank:]].*/\\1/p" <<<"$NODES")
  if [[ -z "$NEWNODE" && -n "$FIRSTFLAG" ]]; then
    NODES=$(sed "s/[[:blank:]]$OLDNODE[[:blank:]]/ /g" <<<"$NODES")
    NEWNODE=$(sed -n 's/[[:blank:]]*\([^[:blank:]]*\)[[:blank:]].*/\1/p' <<<"$NODES")
  fi
  if [[ -n "$NEWNODE" ]]; then
    echo "$NEWNODE"
    exit 0
  fi
fi
exit 1
