Guide du développeur de services de données Sun Cluster pour SE Solaris

Méthode Validate

L'objectif de la méthode de rappel Validate de la mise en oeuvre d'un type de ressource est de vérifier que les paramètres de ressource proposés (tels que spécifiés par les paramètres de propriété proposés pour la ressource) sont acceptables pour le type de ressource.

La méthode Validate de mise en oeuvre d'un type de ressource est appelée par le gestionnaire RGM (Resource Group Manager) dans l'un des deux cas suivants :

Ces deux scénarios se distinguent par la présence de l'option de ligne de commande -c (création) ou -u (mise à jour) transmise à la méthode Validate de la ressource.

La méthode Validate est appelée sur chaque élément d'un jeu de noeuds défini par la valeur de la propriété Init_nodes du type de ressource. Si Init_nodes a la valeur RG_PRIMARIES , Validate est appelé sur chaque noeud pouvant héberger (en tant que primaire) le groupe contenant la ressource. Si Init_nodes a la valeur RT_INSTALLED_NODES, Validate est appelé sur chaque noeud où est installé le logiciel de type de ressource, généralement tous les noeuds du cluster.

La valeur par défaut de Init_nodes est RG_PRIMARIES (voir la page de manuel rt_reg(4)). Au moment où la méthode Validate est appelée, le gestionnaire RGM n'a pas encore créé la ressource (dans le cas d'un rappel de création) ou n'a pas encore appliqué les valeurs mises à jour des propriétés actualisées (dans le cas d'un rappel de mise à jour).


Remarque –

Si vous utilisez des systèmes de fichiers locaux gérés par le type de ressource HAStoragePlus, vous utilisez la fonction scds_hasp_check() pour vérifier l'état de ce type de ressource. Ces informations sont obtenues à partir de l'état (en ligne ou autre) de toutes les ressources SUNW.HAStoragePlus dont dépend la ressource, à l'aide des propriétés système Resource_dependencies ou Resource_dependencies_weak définies pour cette ressource. Reportez-vous à la page de manuel scds_hasp_check(3HA) pour obtenir une liste complète des codes d'état renvoyés par la fonction scds_hasp_check ().


La fonction DSDL scds_initialize() gère ces situations de la manière suivante :

Supposons que la fonction qui met en oeuvre la validation des propriétés d'une ressource s'appelle svc_validate(), et qu'elle utilise la famille de fonctions scds_get_name() pour examiner la propriété qu'elle doit valider. En admettant qu'un paramètre de ressource acceptable soit représenté par un code de retour 0 émis par cette fonction, la méthode Validate du type de ressource peut alors être représentée par le fragment de code suivant :

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

La fonction de validation doit également consigner le motif de l'échec de la validation de la ressource. Toutefois, pour aller à l'essentiel (vous trouverez au Chapitre 8, Mise en oeuvre du type de ressource DSDL modèle des informations plus réalistes sur la fonction de validation), un exemple plus simple de la fonction svc_validate() peut être mis en oeuvre de la manière suivante :

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

Vous ne devez donc vous préoccuper que de la mise en oeuvre de la fonction svc_validate().