Este método verifica la existencia del directorio al que señala la propiedad Confdir. RGM invoca este método cuando se crea el servicio de datos y cuando el administrador del clúster actualiza las propiedades del servicio de datos. El método Monitor_check invoca este método cuando el supervisor de fallos realiza una recuperación de fallos del servicio de datos a otro nodo.
#!/bin/ksh
#
# Método Validate para HA-DNS.
# Este método valida la propiedad Confdir del recurso. El método Validate
# se invoca en dos situaciones: cuando el recurso se está creando y cuando
# se está actualizando una propiedad de recurso. Cuando el recurso se está
# creando, este método se invoca con el indicador -c y todas las propiedades
# definidas por el sistema y de extensión se pasan como argumentos de línea
# de comandos. Cuando se está actualizando una propiedad de recurso, el método
# Validate se invoca con el indicador -u, y sólo el par propiedad-valor de la
# propiedad que se está actualizando se pasa como argumento de línea de comandos.
#
# ej.: cuando el recurso se está creando, los argumentos de comandos serán
#
# dns_validate -c -R <..> -G <...> -T <..> -r <prop-def-sis=valor>...
# -x <prop-extensión=valor>.... -g <prop-grupo-recurso=valor>....
#
# cuando la propiedad de recurso se está actualizando
#
# dns_validate -u -R <..> -G <...> -T <..> -r <prop-sis_actualizando=valor>
# O
# dns_validate -u -R <..> -G <...> -T <..> -x <prop-exten_actualizando=valor>
#
#pragma ident “@(#)dns_validate 1.1 00/05/24 SMI”
###############################################################################
# Analizar argumentos de programa.
#
function parse_args # [args ...]
{
typeset opt
while getopts `cur:x:g:R:T:G:' opt
do
case “$opt” in
R)
# Nombre del recurso de DNS.
RESOURCE_NAME=$OPTARG
;;
G)
# Nombre del grupo de recursos en el que se ha
# configurado el recurso.
RESOURCEGROUP_NAME=$OPTARG
;;
T)
# Nombre del tipo de recurso.
RESOURCETYPE_NAME=$OPTARG
;;
r)
# El método no está accediendo a ninguna propiedad
# definida por el sistema, por lo que no tiene ninguna
# operación.
;;
g)
# El método no está accediendo a ninguna propiedad de
# grupo de recursos, por lo que no tiene operación.
;;
c)
# Indica que se está invocando el método Validate mientras
# se crea el recurso, por lo que el indicador
# no tiene ninguna operación.
;;
u)
# Indica la actualización de una propiedad cuando el recurso
# ya existe. Si la actualización es de la propiedad Confdir,
# Confdir debería aparecer en los argumentos de línea de
# comandos. En caso contrario, el método debe buscarlo
# específicamente con scha_resource_get.
UPDATE_PROPERTY=1
;;
x)
# Lista de propiedades de extensión. Separar los pares de
# propiedad valor con “=” como separador.
PROPERTY=`echo $OPTARG | awk -F= `{print $1}'`
VAL=`echo $OPTARG | awk -F= `{print $2}'`
# Si la propiedad de extensión Confdir se encuentra en la
# línea de comandos, anotar su valor.
if [ $PROPERTY == “Confdir” ];
then
CONFDIR=$VAL
CONFDIR_FOUND=1
fi
;;
*)
logger -p ${SYSLOG_FACILITY}.err \
-t [$SYSLOG_TAG] \
“ERROR: Opción $OPTARG desconocida”
exit 1
;;
esac
done
}
###############################################################################
# MAIN
#
##############################################################################
export PATH=/bin:/usr/bin:/usr/cluster/bin:/usr/sbin:/usr/proc/bin:$PATH
# Obtener el recurso syslog que hay que usar para registrar mensajes.
SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY`
# Establecer el valor de CONFDIR en null. Más tarde, este método recupera el
# valor de la propiedad Confdir de la línea de comandos o con scha_resource_get.
CONFDIR=””
UPDATE_PROPERTY=0
CONFDIR_FOUND=0
# Analizar los argumentos que se han pasado a este método.
parse_args “$@”
# Si el método Validate se invoca por una actualización de propiedades
# intentar recuperar el valor de la propiedad de extensión Confdir de línea de
# comandos. Si no, obtener el valor de Confdir con 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
# Verificar que la propiedad Confdir tiene un valor. En caso contrario,
# hay un fallo y sale con estado 1.
if [[ -z $CONFDIR ]]; then
logger -p ${SYSLOG_FACILITY}.err \
“${ARGV0} Método de validar el recurso
“$RESOURCE_NAME “ no satisfactorio”
exit 1
fi
# Validar ahora el valor real de la propiedad Confdir.
# Comprobar si $CONFDIR es accesible.
if [ ! -d $CONFDIR ]; then
logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG]\
“${ARGV0} Directorio $CONFDIR falta o no está montado”
exit 1
fi
# Comprobar que el archivo named.conf esté presente en el directorio Confdir.
if [ ! -s $CONFDIR/named.conf ]; then
logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG]
\
“${ARGV0} El archivo $CONFDIR/named.conf falta o está vacío”
exit 1
fi
# Registrar un mensaje que indique que el método Validate ha sido satisfactorio.
logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \
“${ARGV0} Método de validar para el recurso
“$RESOURCE_NAME \ se ha completado
“satisfactoriamente”
exit 0
|