Guide du développeur de services de données Sun Cluster pour SE Solaris

Fonction d'analyse de la méthode Validation

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