Le RGM transmet à la méthode de Validation un ensemble de paramètres différent de celui des autres méthodes de rappel, de telle manière que Validation a besoin d'une autre fonction d'analyse des arguments que les autres méthodes. Reportez-vous à la page de manuel rt_callbacks(1HA) pour de plus amples informations sur les paramètres transmis à Validation et aux autres méthodes de rappel. L'exemple suivant montre la fonction Validation parse_args().
######################################################################### # Analyser les arguments Validation # function parse_args # [args...] { typeset opt while getopts 'cur:x:g:R:T:G:' opt do case "$opt" in R) # Nom de la ressource DNS NOM_RESSOURCE=$OPTARG ;; G) # Nom du groupe dans lequel est configurée # la ressource. NOM_GROUPE_RESSOURCE=$OPTARG ;; T) # Nom du type de ressource. NOM_TYPE_RESSOURCE=$OPTARG ;; r) # La méthode n'accède pas à des propriétés définies # par le système. Aucune action. ;; g) # La méthode n'accède pas à des propriétés du groupe de # ressources. Aucune action. ;; c) # Indique que la méthode de Validation est appelée lors # de la création de la ressource. Indicateur sans action. ;; u) # Indique la mise à jour d'une propriété quand la # ressource existe déjà. Si la mise à jour est adressée # à la propriété Rép_conf, alors Rép_conf doit apparaître dans # les arguments de ligne de commande. Dans le cas contraire, # la méthode doit le rechercher à l'aide de scha_resource_get. UPDATE_PROPERTY=1 ;; x) # Liste des propriétés d'extension. Séparer les couples propriété et # valeur en utilisant "=" comme séparateur. PROPRIÉTÉ=`echo $OPTARG | awk -F= '{print $1}'` VAL=`echo $OPTARG | awk -F= '{print $2}'` # Si la propriété d'extension se trouve sur la ligne de # commande, noter sa valeur. if [ $PROPERTY == "Confdir" ]; then RÉP_CONF=$VAL CONFDIR_FOUND=1 fi ;; *) logger -p ${SYSLOG_FACILITY}.err \ -t [$SYSLOG_TAG] \ "ERROR: Option $OPTARG unknown" exit 1 ;; esac done } |
Comme la fonction parse_args() des autres méthodes, cette fonction propose un indicateur (R) pour capturer le nom de la ressource, (G) pour capturer le nom du groupe de ressources et ( T) pour capturer le type de ressource transmis par le RGM.
Les indicateurs r (propriété définie par le système), g (propriété du groupe de ressources) et c (validation à la création de la ressource) sont ignorés parce que cette méthode est appelée pour valider une propriété d'extension lors de la mise à jour de la ressource.
L'indicateur u définit la variable de shell UPDATE_PROPERTY à 1 (TRUE). Le témoin x capture les noms et les valeurs des propriétés mises à jour. Si Rép_conf est l'une des propriétés mises à jour, sa valeur est placée dans la variable de shell CONFDIR et la variable CONFDIR_FOUND est réglée sur 1 (TRUE).