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

驗證 Confdir

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