在其 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 將執行最終檢查來驗證 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