在 MAIN 函数中,Validate 首先将 CONFDIR 变量设置成空字符串,并将 UPDATE_PROPERTY 和 CONFDIR_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 |