Diese Methode überprüft das Vorhandensein des Verzeichnisses, auf das die Confdir-Eigenschaft zeigt. RGM ruft diese Methode auf, wenn der Datendienst erstellt wird und wenn der Cluster-Verwalter Datendiensteigenschaften aktualisiert. Die Monitor_check-Methode ruft diese Methode immer dann auf, wenn der Fehler-Monitor ein Failover des Datendienstes auf einen neuen Knoten ausführt.
#!/bin/ksh # # Validate-Methode für HA-DNS. # Diese Methode validiert die Confdir-Eigenschaft der Ressource. Die Validate- # Methode wird in zwei Szenarios aufgerufen: Beim Erstellen der Ressource und beim # Aktualisieren einer Ressourceneigenschaft. Beim Erstellen der Ressource # wird diese Methode mit dem -c-Flag aufgerufen, und alle systemdefinierten # und Erweiterungseigenschaften werden als Befehlszeilenargumente übergeben. # Beim Aktualisieren einer Ressourceneigenschaft wird die Validate-Methode mit # dem -u-Flag aufgerufen, und nur das Eigenschafts-/Wertepaar der zu aktualisierenden # Eigenschaft wird als Befehlszeilenargument übergeben. # # Bsp.: Wenn die Ressource erstellt wird, lauten die Befehlsargumente # # dns_validate -c -R <..> -G <...> -T <..> -r <sysdef-prop=value>... # -x <extension-prop=value>.... -g <resourcegroup-prop=value>.... # # Wenn die Ressourceneigenschaft aktualisiert wird # # dns_validate -u -R <..> -G <...> -T <..> -r <sys-prop_being_updated=value> # ODER # dns_validate -u -R <..> -G <...> -T <..> -x <extn-prop_being_updated=value> #pragma ident “@(#)dns_validate 1.1 00/05/24 SMI” ############################################################################### # Programmargumente 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 Ressourcengruppeneigenschaften # zu, so dass diese Option nicht besteht. ;; c) # Gibt an, dass die Validate-Methode aufgerufen wird, während # die Ressource erstellt wird, so dass dieses Flag nicht als # Option besteht. ;; u) # Gibt die Aktualisierung einer Eigenschaft an, wenn die # Ressource bereits vorhanden ist. Wenn die Confdir-Eigenschaft # aktualisiert wird, muss Confdir in den Befehlszeilenargumenten # stehen. Andernfalls muss die Methode eigens unter Verwendung von # scha_resource_get danach suchen. UPDATE_PROPERTY=1 ;; x) # Erweiterungseigenschaftsliste. Eigenschafts- und Wertepaare # werden mit “=” als Trennzeichen voneinander getrennt. PROPERTY=`echo $OPTARG | awk -F= `{print $1}'` VAL=`echo $OPTARG | awk -F= `{print $2}'` # Wenn die Confdir-Erweiterungseigenschaft in der Befehlszeile # steht, deren 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 } ############################################################################### # MAIN # ############################################################################## export PATH=/bin:/usr/bin:/usr/cluster/bin:/usr/sbin:/usr/proc/bin:$PATH # syslog-Funktion abrufen, mit der Meldungen protokolliert werden. SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY` # Den Wert von CONFDIR auf Null einstellen. Später ruft diese Methode # den Wert der Confdir-Eigenschaft von der Befehlszeile aus oder mithilfe # von scha_resource_get ab. CONFDIR=”” UPDATE_PROPERTY=0 CONFDIR_FOUND=0 # Argumente analysieren, die für diese Methode übergeben wurden. parse_args “$@” # Wenn die Validate-Methode wegen Aktualisierung von Eigenschaften # aufgerufen wird, versuchen, den Wert der Confdir-Erweiterungseigenschaft von der # Befehlszeile aus abzurufen. Andernfalls den Wert von Confdir mithilfe von # scha_resource_get abrufen. if ( (( $UPDATE_PROPERTY == 1 )) && (( CONFDIR_FOUND == 0 )) ); then config_info=`scha_resource_get -O Extension -R $RESOURCE_NAME \ -G $RESOURCEGROUP_NAME Confdir` CONFDIR=`echo $config_info | awk `{print $2}'` fi # Überprüfen, ob die Confdir-Eigenschaft einen Wert hat. Andernfalls tritt ein # Fehlschlag ein, und es wird mit Status 1 beendet. if [[ -z $CONFDIR ]]; then logger -p ${SYSLOG_FACILITY}.err \ “${ARGV0} Validate-Methode für Ressource “$RESOURCE_NAME “ fehlgeschlagen” exit 1 fi # Jetzt den aktuellen Confdir-Eigenschaftswert validieren. # Überprüfen, ob der Zugriff auf $CONFDIR möglich ist. if [ ! -d $CONFDIR ]; then logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG]\ “${ARGV0} Verzeichnis $CONFDIR fehlt oder nicht eingehängt” exit 1 fi # Überprüfen, ob die named.conf-Datei im Confdir-Verzeichnis vorhanden ist. if [ ! -s $CONFDIR/named.conf ]; then logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \ “${ARGV0} Datei $CONFDIR/named.conf fehlt oder ist leer” exit 1 fi # Meldung protokollieren, die angibt, dass die Validate-Methode erfolgreich war. logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \ “${ARGV0} Validate-Methode für Ressource “$RESOURCE_NAME \ “ erfolgreich beendet” exit 0 |