在其 MAIN 函数中,Validate 首先将 CONFDIR 变量设置为空字符串,并将 UPDATE_PROPERTY 和 CONFDIR_FOUND 设置为 0。
CONFDIR="" UPDATE_PROPERTY=0 CONFDIR_FOUND=0
Validate 调用 parse_args() 解析由 RGM 传递的参数。
parse_args “$@”
Validate 检查 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
特别地,上述代码检查是否因更新而调用 Validate ($UPDATE_PROPERTY == 1) 以及是否未在命令行中找到该属性 (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
如果通过了最终检查,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