Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Validate-Methode

Der Zweck der Validate-Rückrufmethode einer Ressourcentypimplementierung besteht darin, zu prüfen, ob die vorgeschlagenen Ressourceneinstellungen (wie von den vorgeschlagenen Eigenschaftseinstellungen in der Ressource angegeben) für den Ressourcentyp akzeptabel sind.

Die Validate-Methode einer Ressourcentypimplementierung wird unter den folgenden beiden Bedingungen vom Resource Group Manager (RGM) aufgerufen:

Diese beiden Szenarien können durch die Befehlszeilenoption -c (create) oder -u (update) unterschieden werden, die an die Validate-Methode der Ressource übergeben wird.

Die Validate-Methode wird an jedem Knoten eines Knotensatzes aufgerufen, wobei der Knotensatz durch den Wert der Ressourcentypeigenschaft Init_nodes definiert ist. Wenn Init_nodes auf RG_PRIMARIES gesetzt ist, wird Validate an jedem Knoten aufgerufen, der als Host der Ressourcengruppe dienen kann, die die Ressource enthält. Wenn Init_nodes auf RT_INSTALLED_NODES gesetzt ist, wird Validate an jedem Knoten aufgerufen, an dem die Ressourcentyp-Software installiert ist, in der Regel alle Knoten im Cluster.

Der Standardwert von Init_nodes lautet RG_PRIMARIES (siehe Online-Dokumentation zu rt_reg(4)). An dem Punkt, an dem die Validate-Methode aufgerufen wird, hat der RGM die Ressource noch nicht aufgerufen (im Falle eines Erstellungsrückrufs) oder die aktualisierten Werte der Eigenschaften noch nicht angewendet, die aktualisiert werden (im Falle eines Aktualisierungsrückrufs).


Hinweis –

Wenn Sie lokale Dateisysteme verwenden, die vom Ressourcentyp HAStoragePlus verwaltet werden, verwenden Sie die scds_hasp_check()-Funktion, um den Zustand dieses Ressourcentyps zu prüfen. Diese Informationen werden aus dem Zustand (online oder anderweitig) aller SUNW.HAStoragePlus-Ressourcen abgerufen, von denen die Ressource abhängt, und zwar unter Verwendung der für die Ressource definierten Systemeigenschaften Resource_dependencies oder Resource_dependencies_weak. In der Online-Dokumentation unter scds_hasp_check(3HA) finden Sie eine vollständige Liste mit Statuscodes, die von der scds_hasp_check ()-Funktion zurückgegeben werden.


Die DSDL-Funktion scds_initialize() geht mit diesen Situationen wie folgt um:

Angenommen, die Funktion, mit der die Validierung der Ressourceneigenschaften implementiert wird, heißt svc_validate() und verwendet die scds_get_Name()-Familie der Funktionen, um die zu validierende Eigenschaft zu prüfen. Angenommen, eine annehmbare Ressourceneinstellung wird von dieser Funktion durch einen Rückgabecode von 0 dargestellt, dann kann die Validate -Methode des Ressourcentyps vom folgenden Codefragment dargestellt werden:

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);
}

Die Validierungsfunktion sollte auch den Grund für das Fehlschlagen der Ressourcenvalidierung protokollieren. Indem Sie jedoch dieses Detail auslassen (Kapitel 8, Beispielressourcentyp-Implementierung mit DSDL enthält eine realistischere Behandlung einer Validierungsfunktion), können Sie eine einfachere svc_validate()-Beispielfunktion wie folgt implementieren:

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 */
}

Deshalb müssen Sie sich nur mit der Implementierung der svc_validate()-Funktion beschäftigen.