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
|