Le RGM passant à la méthode Validate une série d'arguments différente de celle transmise aux autres méthodes de rappel, Validate requiert une fonction d'analyse des arguments différente de celle des autres méthodes. Reportez-vous à la page de manuel rt_callbacks(1HA) pour obtenir plus d'informations sur les arguments passés à Validate et aux autres méthodes de rappel. L'exemple de code suivant illustre la fonction parse_args() de Validate .
######################################################################### # Analyse les arguments de Validate. # 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 de ressources dans lequel la # ressource est configurée. RESOURCEGROUP_NAME=$OPTARG ;; T) # Nom du type de ressource. RESOURCETYPE_NAME=$OPTARG ;; r) # La méthode n'accède à aucune propriété # définie au niveau système, d'où l'opération ineffective ;; g) # La méthode n'accède à aucune propriété de # groupe de ressources, d'où l'opération ineffective ;; c) # Indique que la méthode Validate est appelée lors # de la création de la ressource, l'indicateur est donc ineffectif. ;; u) # Indique la mise à jour d'une propriété lorsque la # ressource existe déjà. Si la mise à jour concerne la # propriété Confdir, alors Confdir doit apparaître dans les # arguments de ligne de commande. Sinon, la méthode doit # spécifiquement le rechercher avec scha_resource_get. UPDATE_PROPERTY=1 ;; x) # Liste de propriétés d'extension. Séparer les paires 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 Confdir est trouvée sur la ligne # de commande, enregistrer 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() pour d'autres méthodes, cette fonction fournit 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 la ressource qui est passée par le RGM.
L'indicateur r (qui indique une propriété définie par le système), l'indicateur g (qui indique une propriété de groupe de ressource) et l'indicateur c (qui indique que la validation est effectuée pendant la création de la ressource) sont ignorés, car cette méthode est appelée pour valider une propriété d'extension lorsque la ressource est mise à jour.
L'indicateur u définit la variable de shell UPDATE_PROPERTY à 1 (TRUE). L'indicateur x capture les noms et valeurs des propriétés qui sont 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 définie sur 1 (TRUE).