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

Validate 方法

資源類型實作的 Validate 回呼方法用於檢查資源類型是否接受建議的資源設定 (由資源上的建議特性設定指定)。

在以下兩種情況,Resource Group Manager (RGM) 會呼叫資源類型實作的 Validate 方法︰

這兩種情況可由傳送至 Validate 資源方法的指令行選項 -c (建立) 或 -u (更新) 進行辨別。

Validate 方法在節點集合的每個節點上進行呼叫,其中節點集合由資源類型特性 Init_nodes 的值定義。如果 Init_nodes 設定為 RG_PRIMARIES,則 Validate 將在可管理 (成為主要) 包含資源資源群組的每個節點上進行呼叫。如果 Init_nodes 設定為 RT_INSTALLED_NODES,則 Validate 將在安裝了資源類型軟體的每個節點 (通常為叢集中的所有節點) 上進行呼叫。

Init_nodes 的預設值為 RG_PRIMARIES (請參閱 rt_reg(4) 線上手冊)。當呼叫 Validate 方法時,RGM 尚未建立資源 (對建立回呼而言) 或尚未套用正在更新的特性之已更新的值 (對更新回呼而言)。


備註 –

如果您使用由 HAStoragePlus 資源類型管理的本機檔案系統,則您可使用 scds_hasp_check() 函數以檢查該資源類型的狀態。此項資訊是從所有 SUNW.HAStoragePlus 資源的狀態 (線上或其他狀態) 取得,其中資源視所採用為其定義的 Resource_dependenciesResource_dependencies_weak 系統特性而定。請參閱 scds_hasp_check(3HA) 線上手冊,以取得由 scds_hasp_check() 函數傳回的狀態程式碼之完整清單。


DSDL 函數 scds_initialize() 使用以下方式處理這些狀況︰

假定實作資源類型驗證的函數名為 svc_validate(),其使用 scds_get_name() 函數系列以查看特性是否將被驗證。假定可接受的資源設定由此函數的 0 回覆碼表示,則資源類型的 Validate 方法由以下程式碼片段表示︰

int
main(int argc, char *argv[])
{
   scds_handle_t handle;
   int rc;

   if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
   return (1);   /* Initialization Error */
   }
   rc = svc_validate(handle);
   scds_close(&handle);
   return (rc);
}

驗證函數還應記錄資源驗證失敗的原因。然而,透過省去該詳細資訊 (第 8 章, DSDL 資源類型實施範例包含驗證函數更實際可行的處理),您可以實作一個較簡單的範例 svc_validate() 函數,如下所示︰

int
svc_validate(scds_handle_t handle)
{
   scha_str_array_t *confdirs;
   struct stat    statbuf;
   confdirs = scds_get_confdir_list(handle);
   if (stat(confdirs->str_array[0], &statbuf) == -1) {
   return (1);   /* Invalid resource property setting */
   }
   return (0);   /* Acceptable setting */
}

因此,您必須僅關注 svc_validate() 函數的實作。