在 Validate 的 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_FOUND == 1) 上找到 Confdir,則 CONFDIR 的值將來自 parse_args() 函式,而非來自 scha_resource_get ()。
然後 Validate 方法將使用 CONFIG_DIR 的值來驗證目錄是否可存取。 如果目錄是不可存取的,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 將執行最終檢查來驗證 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 |