Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

验证 Confdir

MAIN 函数中,Validate 首先将 CONFDIR 变量设置成空字符串,并将 UPDATE_PROPERTYCONFDIR_FOUND 设置成 0。


CONFDIR=""
UPDATE_PROPERTY=0
CONFDIR_FOUND=0

然后,Validate 将调用 parse_args() 分析 RGM 传送的变量。


parse_args “$@”

Validate 随后将检查特性更新后是否调用了 Validate,并检查 Confdir 扩展特性是否位于命令行上。 接下来,Validate 将检验 Confdir 特性是否具有值,如果没有,将在失败状态下退出并记录一条错误消息。


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


注意:

具体地说,上述代码将检查更新后 ($UPDATE_PROPERTY == 1) 是否调用了 Validate,并检查该特性是否位于命令行上,如果在命令行上 (CONFDIR_FOUND == 0),它将使用 scha_resource_get() 检索 Confdir 的现有值。 如果发现 Confdir 位于命令行上 (CONFDIR_FOUND == 1),则 CONFDIR 的值由 parse_args() 函数确定,而不是由 scha_resource_get() 确定。


然后,Validate 方法将使用 CONFDIR 的值检验该目录是否可以存取。 如果不可以存取,Validate 将记录一条错误消息并在错误状态下退出。


# 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

在验证 Confdir 特性的更新之前,Validate 将执行 final 检查来检验 named.conf 文件是否存在。 如果不存在,该方法将记录一条错误消息并在错误状态下退出。


# 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

如果该 final 检查通过,Validate 将记录一条表明检查成功的消息并在成功状态下退出。


# Log a message indicating that the Validate method was successful.
logger -p ${SYSLOG_FACILITY}.err \
   -t [$SYSLOG_TAG] \
   "${ARGV0} Validate method for resource "$RESOURCE_NAME \
   " completed successfully"

exit 0