#!/bin/bash
#
# sccl_reload_resource
#
# Aufruf:
#
# sccl_reload_resource [-p <callpars>] <resource> <kurzname> <pidsig>
#
# Die Resource <resource> wird geprueft und ggf. reloaded
# Aufbau des Parameters <resource> siehe Datei resourcen
#
# Returnwerte: 0: alles OK
#              1: Fehler
#
########################################################################################
#
. $(dirname $0)/globals.settings
#
unset CALLPARS
while getopts p:x:-:? op; do
  case "$op" in
   p) CALLPARS="$CALLPARS $OPTARG";;
   ?) echo "usage: $MYPRG [-p <callpar>] <resource> <kurzname> <pidsig>"
      exit 1;;
  esac
done
#
shift $(( $OPTIND - 1))
#
if [[ $# -ne 3 ]]; then
  echo "usage: $MYPRG [-p <startpar>] <resource> <kurzname> <pidsig>"
  exit 1
fi
#
RES="$1"
PKGNAME="$2"
PIDSIG="$3"
#
A=${1// /\\ }
eval set ${A//:/ }
#
RESTYP=$1
shift
#
case $RESTYP in
########################################################################################
# IP-Adresse ignorieren
#
  IP)
    exit 0 
  ;;
########################################################################################
# Prozess ignorieren
#
  !PROC)
    exit 0
  ;;
########################################################################################
# Prozess ignorieren
#
  PROC)
    exit 0
  ;;
########################################################################################
# LOCK: ignorieren
#
  LOCK)
    exit 0
  ;;
########################################################################################
# Filesystem ignorieren
#
  FS)
    exit 0 
  ;;
########################################################################################
# Filesystem-Gruppe ignorieren
#
  FSG)
    exit 0 
  ;;
########################################################################################
# NFS Filesystem ignorieren
#
  NFS)
    exit 0 
  ;;
########################################################################################
# NFSG Filesystemgruppe ignorieren
#
  NFSG)
    exit 0 
  ;;
########################################################################################
# SubResource
#
  RS)
    if ! ./sccl_reload_package $1 $PIDSIG; then
      echo "Das Unterpaket $1 konnte nicht reloaded werden."
      exit 1
    fi
  ;;
########################################################################################
# Programm reloaden
#
  PRG)
    if [[ -z "$1" ]]; then
      STARTSTOPPRG=$STARTSTOPDIR/${PKGNAME}_startstop
    elif [[ "$1" == */* ]]; then
      STARTSTOPPRG=$1
    else
      STARTSTOPPRG=$STARTSTOPDIR/$1
    fi
    if $STARTSTOPPRG reload $CALLPARS; then
      exit 0
    else
      exit 1
    fi
  ;;
########################################################################################
# Programm mit Parametern reloaden
#
  PRGP)
    if [[ -z "$1" ]]; then
      STARTSTOPPRG=$STARTSTOPDIR/${PKGNAME}_startstop
    elif [[ "$1" == */* ]]; then
      STARTSTOPPRG=$1
    else
      STARTSTOPPRG=$STARTSTOPDIR/$1
    fi
    shift
    if $STARTSTOPPRG reload $CALLPARS "$@"; then
      exit 0
    else
      exit 1 
    fi
  ;;
########################################################################################
# Pakete pruefen ignorieren
#
  TST)
    exit 0
  ;;
########################################################################################
# Pakete lokal pruefen ignorieren
#
  STST)
    exit 0 
  ;;
########################################################################################
# Paket testen ignorieren
#
  CPKG)
    exit 0
  ;;
########################################################################################
# Pakete testen ignorieren
#
  CPKGO)
    exit 0
  ;;
########################################################################################
# Paketestart testen ignorieren
#
  CPKGW)
    exit 0
  ;;
########################################################################################
# Paket testen ignorieren
#
  PKG)
    exit 0
  ;;
########################################################################################
# Ausschlusspaket auf gleichem Knoten testen ignorieren
#
  !PKG)
    exit 0
  ;;
########################################################################################
# Ausschlusspaket im Cluster testen ignorieren
#
  !CPKG)
    exit 0
  ;;
########################################################################################
# Restart von aktiven Paketen ignorieren
#
  RST)
    exit 0
  ;;
########################################################################################
# wird nur beim Stoppen geprüft
#
  MINPKGS)
    exit 0
  ;;
########################################################################################
# wird nur beim Stoppen geprüft
#
  CSRV)
    exit 0
  ;;
########################################################################################
# Paket als laufend markieren ignorieren
#
  SETSTATE)
    exit 0
  ;;
########################################################################################
# Paket wieder stoppen aber "OK" liefern ignorieren
#
  TEARDOWN)
    exit 0
  ;;
########################################################################################
  *)
    echo "Ungueltiger Resourcetyp $RESTYP in $RES"
    echo "$RESTYP - unknown resourcetype" >"$LOCKDIR/$PKGNAME$LASTERROREXTENSION"
    exit 1
  ;;
esac
