Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)

驗證 Confdir

在其 MAIN 函數中,Validate 首先將 CONFDIR 變數設定為空字串,將 UPDATE_PROPERTYCONFDIR_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