Cette méthode vérifie l'existence du répertoire spécifié par la propriété Confdir. Le RGM appelle cette méthode lorsque l'administrateur du cluster crée le service de données et met à jour ses propriétés. La méthode Monitor_check appelle cette méthode chaque fois que le système de détection des pannes bascule le service de données vers un nouveau nœud.
#!/bin/ksh
# Méthode Validate de HA-DNS.
# Cette méthode valide la propriété Confdir de la ressource. La méthode Validate
# est appelée à la création et à la mise à jour de la ressource.
# A la création de la ressource, cette méthode est appelée avec
# l'indicateur -c. En outre, toutes les propriétés définies par le système
# et d'extension sont passées en tant qu'arguments de la ligne de
# commande. Lorsqu'une propriété de ressource est mise à jour, la méthode Validate est appelée avec l'indicateur -u, et seule
# la paire propriété/valeur de la propriété mise à jour est passée en tant
# qu'argument de la ligne de commande.
#
# exemple : si la ressource est en cours de création, les arguments de la ligne de commande sont
#
# dns_validate -c -R <..> -G <...> -T <..> -r <sysdef-prop=value>...
# -x <extension-prop=value>.... -g <resourcegroup-prop=value>....
#
# Si la propriété de ressource est en cours de mise à jour, les arguments sont
#
# dns_validate -u -R <..> -G <...> -T <..> -r <sys-prop_being_updated=value>
# OU
# dns_validate -u -R <..> -G <...> -T <..> -x <extn-prop_being_updated=value>
#pragma ident “@(#)dns_validate 1.1 00/05/24 SMI”
###############################################################################
# Analysez les arguments du programme.
#
function parse_args # [args ...]
{
typeset opt
while getopts `cur:x:g:R:T:G:' opt
do
case “$opt” in
R)
# Nom de la ressource DNS.
RESOURCE_NAME=$OPTARG
;;
G)
# Nom du groupe de ressources dans lequel la ressource
# est configurée.
RESOURCEGROUP_NAME=$OPTARG
;;
T)
# Nom du type de ressources.
RESOURCETYPE_NAME=$OPTARG
;;
r)
# La méthode n'accède à aucune propriété définie par le
# système, il s'agit donc d'un no-op.
;;
g)
# la méthode n'accède à aucune propriété de groupe de
# ressources, il s'agit donc d'un no-op.
;;
c)
# Indique que la méthode Validate est appelée tandis que
# la ressource est en cours de création. Cet indicateur est donc un no-op.
;;
u)
# Indique la mise à jour d'une propriété lorsque la ressource
# existe déjà. Si la mise à jour concerne la propriété
# Confdir, celle-ci doit apparaître dans les arguments de la ligne de
# commande. Dans le cas contraire, la méthode doit rechercher
# spécifiquement cette propriété à l'aide de scha_resource_get.
UPDATE_PROPERTY=1
;;
x)
# Liste des propriétés d'extension. Séparez les paires
# propriété/valeur en utilisant le séparateur “=”.
PROPERTY=`echo $OPTARG | awk -F= `{print $1}'`
VAL=echo $OPTARG | awk -F= `{print $2}'`
# Si la propriété d'extension onfdir figure sur la ligne de
# commande, notez sa valeur.
if [ $PROPERTY == “Confdir” ];
then
CONFDIR=$VAL
CONFDIR_FOUND=1
fi
;;
*)
logger -p ${SYSLOG_FACILITY}.err \
-t [$SYSLOG_TAG] \
“ERROR: Option $OPTARG unknown”
exit 1
;;
esac
done
}
###############################################################################
# MAIN
#
##############################################################################
export PATH=/bin:/usr/bin:/usr/cluster/bin:/usr/sbin:/usr/proc/bin:$PATH
# Obtenez la fonction syslog à utiliser pour consigner les messages.
SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY`
# Définissez la valeur de CONFDIR comme étant Null. Ultérieurement, cette méthode recherche et extrait la valeur
# de la propriété Confdir de la ligne de commande ou à l'aide de scha_resource_get.
CONFDIR=””
UPDATE_PROPERTY=0
CONFDIR_FOUND=0
# Analysez les arguments qui ont été transmis à cette méthode.
parse_args “$@”
# Si la méthode de Validation est appelée du fait de la mise à jour des propriétés,
# essayez de récupérer la valeur de la propriété d'extension Confdir à partir de la ligne de commande.
# Sinon, obtenez la valeur de Confdir avec scha_resource_get.
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
# Vérifiez que la propriété Confdir possède une valeur. Si elle n'en a pas, il en
# résulte un échec et une sortie avec l'état 1.
if [[ -z $CONFDIR ]]; then
logger -p ${SYSLOG_FACILITY}.err \
“${ARGV0} Validate method for resource “$RESOURCE_NAME “ failed”
exit 1
fi
# Validez désormais la valeur réelle de la propriété Confdir.
# Vérifiez que $CONFDIR est accessible.
if [ ! -d $CONFDIR ]; then
logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
“${ARGV0} Directory $CONFDIR missing or not mounted”
exit 1
fi
# Vérifiez que le fichier named.conf figure dans le répertoire Confdir.
if [ ! -s $CONFDIR/named.conf ]; then
logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \
“${ARGV0} File $CONFDIR/named.conf is missing or empty”
exit 1
fi
# Consignez un message indiquant que la méthode Validate a réussi.
logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \
“${ARGV0} Validate method for resource “$RESOURCE_NAME \
“ completed successfully”
exit 0
|