Cette méthode vérifie l'existence du répertoire spécifié par la propriété Rép_conf. Le gestionnaire 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 Contrôle_détecteur appelle cette méthode chaque fois que le système de détection des pannes bascule le service de données vers un nouveau noeud.
#!/bin/ksh # # Méthode Validation de HA-DNS. # Cette méthode valide la propriété Rép_conf de la ressource. La méthode Validation # est appelée à la création et à la mise à jour de la ressource. À 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 # Validation 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. NOM_RESSOURCE=$OPTARG ;; G) # Nom du groupe de ressources dans lequel la ressource # est configurée. NOM_GROUPE_RESSOURCES=$OPTARG ;; T) # Nom du type de ressources. NOM_TYPE_RESSOURCES=$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 de validation 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é Rép_conf, # Rép_conf 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 Rép_conf 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 RÉP_CONF comme étant Null. Ultérieurement, cette méthode # recherche et extra it la valeur de la propriété Rép_conf de la ligne de commande # ou à l'aide de scha_resource_get. RÉP_CONF=”” PROPRIÉTÉ_ACTUALISATION=0 REP_CONF_TROUVÉ=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 Rép_conf à partir de la # ligne de commande. # Sinon, obtenez la valeur de Rép_conf 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é Rép_conf 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é Rép_conf. # 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 Rép_conf. 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 de validation a réussi. logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \ “${ARGV0} Validate method for resource “$RESOURCE_NAME \ “ completed successfully” exit 0 |