Le RGM transmet à la méthode de Validate un ensemble de paramètres différent de celui des autres méthodes de rappel, de telle manière que Validate a besoin d'une autre fonction d'analyse des arguments que les autres méthodes. Reportez-vous à la page man rt_callbacks(1HA) pour de plus amples informations sur les paramètres transmis à Validate et aux autres méthodes de rappel. L'exemple suivant montre la fonction parse_args() de Validate.
######################################################################### #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 RESOURCE_NAME=$OPTARG ;; G) # Nom du groupe dans lequel est configurée # la ressource. RESOURCEGROUP_NAME=$OPTARG ;; T) # Nom du type de ressource. RESOURCETYPE_NAME=$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 Validate 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é Confdir, alors Confdir 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. PROPERTY=`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 CONFDIR=$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 Confdir 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).