Guide des développeurs pour les services de données Sun Cluster 3.1 10/03

Méthode de Validation

Il existe deux scénarios pour l'appel par le RGM de la méthode de Validation dans le cadre de la mise en oeuvre d'un type de ressource : 1) à la création d'une nouvelle ressource d'un type donné et 2) à la mise à jour d'une propriété de la ressource ou du groupe de ressources. 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 de Validation de la ressource.

La méthode de Validation est appelée sur chaque membre d'un jeu de noeuds défini par la valeur de la propriété NOEUDS_INIT du type de ressource. Si NOEUDS_INIT a la valeur ÉLÉMENTS_PRINCIPAUX_GR, Validation est appelée sur chaque noeud pouvant héberger (en tant que primaire) le groupe contenant la ressource. Si NOEUDS_INIT a la valeur NOEUDS_INSTALLÉS_TR , Validation est appelée sur chaque noeud où est installé le logiciel du type de ressource, généralement tous les noeuds du cluster. La valeur par défaut de NOEUDS_INIT est ÉLÉMENTS_PRINCIPAUX_GR (reportez-vous à rt_reg(4)). Au moment où la méthode de Validation est appelée, le 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 pour la propriété actualisée (dans le cas d'un rappel de mise à jour). L'objectif de la méthode de rappel de Validation pour la mise en oeuvre d'un type de ressource consiste à vérifier que les paramètres de la ressource (tels que spécifiés par les valeurs proposées pour les propriétés de la ressource) sont acceptables pour le type de ressource


Remarque :

si vous utilisez des systèmes de fichiers locaux gérés par HAStoragePlus, vous employez la commande scds_hasp_check pour vérifier l'état de la ressource HAStoragePlus. Ces informations sont obtenues à partir de l'état (en ligne ou autre) de toutes les ressources SUNW.HAStoragePlus(5) dont dépend la ressource à l'aide des propriétés système Dépendances_ressource ou Dépendances_ressource_faibles définies pour la ressource. Reportez-vous à scds_hasp_check(3HA) pour obtenir une liste complète des codes d'état renvoyés par l'appel scds_hasp_check.


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

Supposons que la fonction mettant en oeuvre la validation des propriétés d'une ressource s'appelle svc_validate() et utilise la famille de fonctions scds_get_nom() 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 de Validation du type de ressource peut donc être représentée par le fragment de code suivant :


in
tmain(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. Pour aller à l'essentiel (vous trouverez au chapitre suivant des informations plus réalistes sur la fonction de validation) un exemple 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 */
}

Le développeur du type de ressource ne doit donc se préoccuper que de la mise en oeuvre de la fonction svc_validate(). Un exemple typique de la mise en oeuvre d'un type de ressource viserait à s'assurer qu'un fichier de configuration d'application appelé app.conf existe sous la propriété Liste_rép_conf. Cette vérification peut être facilement mise en oeuvre par un appel système stat() effectué sur le nom de chemin d'accès approprié, dérivé de la propriété Liste_rép_conf.