Guide des développeurs pour les services de données Sun Cluster pour SE Solaris

Méthode Validate

La méthode de validation de l'implémentation d'un type de ressources est appelée par le RGM sous l'une des conditions suivantes :

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 membre d'un jeu de nœuds 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ée sur chaque nœud pouvant héberger (en tant que primaire) le groupe contenant la ressource. Si INIT_NODES a la valeur RT_INSTALLED_NODES , Validate est appelée sur chaque nœud où est installé le logiciel du type de ressource, généralement tous les nœuds du cluster. La valeur par défaut de INIT_NODES est RG_PRIMARIES (reportez-vous à rt_reg(4)). Au moment où la méthode Validate 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 Validate pour la mise en œuvre 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 utilisez 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 œuvre 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 Validate du type de ressource peut donc ê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);   /* Erreur d'initialisation */
   }
   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 œuvre 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);   /* Paramètre de propriété de ressource invalide */
   }
   return (0);   /* Paramètre acceptable */
}

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