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 órdenes. 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 órdenes. # # ej.: cuando el recurso se está creando, los argumentos de órdenes serán # # dns_validate -c -R <..> -G <...> -T <..> -r <prop-def-sis=valor>... # -x <extension-prop=value>.... -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 BIEN # 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 # órdenes. 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 órdenes, 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 órdenes 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 # órdenes. 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” exit 0 |