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).