Sun Cluster: Guía del desarrollador de los servicios de datos del sistema operativo Solaris

Función de análisis del método Validate

Como el método pasa al método Validate un conjunto de argumentos diferentes al de los otros métodos de rellamada, Validate require una función distinta para analizar los argumentos. Consulte la página de comando man rt_callbacks(1HA) para obtener más información sobre los argumentos que se pasan a Validate y a los otros métodos de rellamada. El siguiente código de ejemplo muestra la función parse_args() de Validate .

#########################################################################
# Parse Validate arguments.
#
function parse_args # [args...]
{

   typeset opt
   while getopts 'cur:x:g:R:T:G:' opt
   do
         case "$opt" in
         R)
                  # Name of the DNS resource.
                  RESOURCE_NAME=$OPTARG
                  ;;
         G)
                  # Name of the resource group in which the resource is
                  # configured.
                  RESOURCEGROUP_NAME=$OPTARG
                  ;;
         T)
                  # Name of the resource type.
                  RESOURCETYPE_NAME=$OPTARG
                  ;;
         r)
                  # The method is not accessing any system defined
                  # properties so this is a no-op
                  ;;
         g)
                  # The method is not accessing any resource group
                  # properties, so this is a no-op
                  ;;
         c)
                  # Indicates the Validate method is being called while
                  # creating the resource, so this flag is a no-op.
                  ;;
         u)
                  # Indicates the updating of a property when the
                  # resource already exists. If the update is to the
                  # Confdir property then Confdir should appear in the
                  # command-line arguments. If it does not, the method must
                  # look for it specifically using scha_resource_get.
                  UPDATE_PROPERTY=1
                  ;;
         x)
                  # Extension property list. Separate the property and
                  # value pairs using "=" as the separator.
                  PROPERTY=`echo $OPTARG | awk -F= '{print $1}'`
                  VAL=`echo $OPTARG | awk -F= '{print $2}'`
                  # If the Confdir extension property is found on the
                  # command line, note its value.
                  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
}

Al igual que la función parse_args() de los otros métodos, esta función proporciona los indicadores (R) para capturar el nombre del recurso, ( G) para capturar el nombre del grupo de recursos y (T) para capturar el tipo de recurso transferido por RGM.

Se omitirán los indicadores r (que distingue una propiedad definida por el sistema), g (que distingue una propiedad del grupo de recursos) y c (que señala que se está produciendo la validación durante la creación del recurso). Se omiten porque se está llamando a este método para validar la propiedad de extensión durante la actualización del recurso.

El indicador u establece el valor de la variable del shell UPDATE_PROPERTY en 1 (TRUE). El indicador x captura el nombre y los valores de las propiedades que se están actualizando. Si Confdir es una de las propiedades que se están actualizando, su valor se incluye en la variables de shell CONFDIR y la variable CONFDIR_FOUND se establece en 1 (TRUE).