此方法检验 Confdir 特性指定的目录是否存在。 当创建数据服务以及群集管理员更新数据服务特性时,RGM 都将调用此方法。 每当缺省监视器未能将数据服务转移到新节点时,Monitor_check 方法将调用此方法。
#!/bin/ksh # Validate method for HA-DNS. # This method validates the Confdir property of the resource. The Validate # method gets called in two scenarios. When the resource is being created and # when a resource property is getting updated. When the resource is being # created, this method gets called with the -c flag and all the system-defined # and extension properties are passed as command-line arguments. When a resource # property is being updated, the Validate method gets called with the -u flag, # and only the property/value pair of the property being updated is passed as a # command-line argument. # # ex: When the resource is being created command args will be # # dns_validate -c -R <..> -G <...> -T <..> -r <sysdef-prop=value>... # -x <extension-prop=value>.... -g <resourcegroup-prop=value>.... # # when the resource property is being updated # # dns_validate -u -R <..> -G <...> -T <..> -r <sys-prop_being_updated=value> # OR # dns_validate -u -R <..> -G <...> -T <..> -x <extn-prop_being_updated=value> #pragma ident “@(#)dns_validate 1.1 00/05/24 SMI” ############################################################################### # Parse program arguments. # function parse_args # [args ...] { typeset opt while getopts `cur:x:g:R:T:G:' opt do case “$opt” in R) # Name of the DNS resource. RESOURCE_NAME=$OPTARG ;; G) # Name of the resource group in which the resource is # configured. RESOURCEGROUP_NAME=$OPTARG ;; T) # Name of the resource type. RESOURCETYPE_NAME=$OPTARG ;; r) #The method is not accessing any system defined #properties, so this is a no-op. ;; g) # The method is not accessing any resource group # properties, so this is a no-op. ;; c) # Indicates the Validate method is being called while # creating the resource, so this flag is a no-op. ;; u) # Indicates the updating of a property when the # resource already exists. If the update is to the # Confdir property then Confdir should appear in the # command-line arguments. If it does not, the method must # look for it specifically using scha_resource_get. UPDATE_PROPERTY=1 ;; x) # Extension property list. Separate the property and # value pairs using “=” as the separator. PROPERTY=`echo $OPTARG | awk -F= `{print $1}'` VAL=echo $OPTARG | awk -F= `{print $2}'` # If the Confdir extension property is found on the # command line, note its value. 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 # Obtain the syslog facility to use to log messages. SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY` # Set the Value of CONFDIR to null. Later, this method retrieves the value # of the Confdir property from the command line or using scha_resource_get. CONFDIR=”” UPDATE_PROPERTY=0 CONFDIR_FOUND=0 # Parse the arguments that have been passed to this method. parse_args “$@” # If the validate method is being called due to the updating of properties # try to retrieve the value of the Confdir extension property from the command # line. Otherwise, obtain the value of Confdir using 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 # Verify that the Confdir property has a value. If not there is a failure # and exit with status 1. if [[ -z $CONFDIR ]]; then logger -p ${SYSLOG_FACILITY}.err \ “${ARGV0} Validate method for resource “$RESOURCE_NAME “ failed” exit 1 fi # Now validate the actual Confdir property value. # Check if $CONFDIR is accessible. if [ ! -d $CONFDIR ]; then logger -p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \ “${ARGV0} Directory $CONFDIR missing or not mounted” exit 1 fi # Check that the named.conf file is present in the Confdir directory. 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 # Log a message indicating that the Validate method was successful. logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \ “${ARGV0} Validate method for resource “$RESOURCE_NAME \ “ completed successfully” exit 0 |