Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Analysefunktion der Validate-Methode

RGM übergibt an die Validate-Methode einen anderen Satz Parameter als an die anderen Rückmeldemethoden. Daher benötigt Validate eine andere Funktion für die Argumentenanalyse als die anderen Methoden. In der Online-Dokumentation unter rt_callbacks(1HA) finden Sie weitere Informationen zu den an Validate und die anderen Rückmeldemethoden übergebenen Parametern. Im Folgenden wird die Validate parse_args()-Funktion gezeigt.


#########################################################################
# Validate-Argumente analysieren.
#
function parse_args # [args...]
{

   typeset opt
   while getopts 'cur:x:g:R:T:G:' opt
   do
         case "$opt" in
         R)
                  # Name der DNS-Ressource.
                  RESOURCE_NAME=$OPTARG
                  ;;
         G)
                  # Name der Ressourcengruppe, in der die
                  # Ressource konfiguriert ist.
                  RESOURCEGROUP_NAME=$OPTARG
                  ;;
         T)
                  # Name des Ressourcentyps.
                  RESOURCETYPE_NAME=$OPTARG
                  ;;
         r)
                  # Die Methode greift auf keine systemdefinierten
                  # Eigenschaften zu, so dass diese Option nicht besteht
                  ;;
         g)
                  # Die Methode greift auf keine Ressourcengruppen-
                  # eigenschaften zu, so dass diese Option nicht besteht
                  ;;
         c)
                  # Gibt an, dass die Validate-Methode bei Erstellen der Ressource
                  # aufgerufen wird, so dass dieses Flag nicht besteht.
                  ;;
         u)
                  # Gibt die Aktualisierung einer Eigenschaft an, wenn die Ressource
                  # bereits vorhanden ist. Wenn die Confdir-Eigenschaft aktualisiert wird,
                  # sollte Confdir in den Befehlszeilenargumenten stehen. Andernfalls
                  # muss die Methode ausdrücklich mit scha_resource_get danach
                  # suchen.
                  UPDATE_PROPERTY=1
                  ;;
         x)
                  # Erweiterungseigenschaftsliste. Eigenschafts- und Wertepaare mit
                  # "=" als Trennzeichen voneinander trennen.
                  PROPERTY=`echo $OPTARG | awk -F= '{print $1}'`
                  VAL=`echo $OPTARG | awk -F= '{print $2}'`
                  # Wenn die Confdir-Erweiterungseigenschaft an der Befehls-
                  # zeile gefunden wird, Wert festhalten.
                  if [ $PROPERTY == "Confdir" ]; then
                           CONFDIR=$VAL
                           CONFDIR_FOUND=1
                  fi
                  ;;
         *)
                  logger -p ${SYSLOG_FACILITY}.err \
                  -t [$SYSLOG_TAG] \
                  "FEHLER: Option $OPTARG unbekannt"
                  exit 1
                  ;;
         esac
   done
}

Genau wie die parse_args()-Funktion für andere Methoden verfügt diese Funktion über ein Flag (R) zum Erfassen des Ressourcennamens, (G) zum Erfassen des Ressourcengruppennamens und (T) zum Erfassen des Ressourcentyps, die von RGM übergeben werden.

Das r-Flag (für systemdefinierte Eigenschaften), g-Flag (für Ressourcengruppeneigenschaften) und das c-Flag (das angibt, dass die Validierung bei Ressourcenerstellung stattfindet) werden ignoriert, da diese Methode aufgerufen wird, um eine Erweiterungseigenschaft bei Aktualisierung der Ressource zu validieren.

Das u-Flag stellt den Wert der UPDATE_PROPERTY-Shell-Variablen auf 1 (TRUE) ein. Das x-Flag erfasst die Namen und Werte der aktualisierten Eigenschaften. Wenn Confdir eine der aktualisierten Eigenschaften ist, wird ihr Wert in der CONFDIR-Shell-Variablen abgelegt, und die Variable CONFDIR_FOUND wird auf 1 (TRUE) eingestellt.