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

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

RGM pasa al método Validate un conjunto diferente de parámetros que los otros métodos de rellamada, por lo que Validate necesita una función para analizar argumentos diferente de la de los demás métodos. Consulte la página de comando man rt_callbacks(1HA) para obtener más información sobre los parámetros que se pasan a Validate y los demás métodos de rellamada. A continuación se muestra la función parse_args() de Validate.


#########################################################################
# Analizar argumentos de Validate.
#
function parse_args # [args...]
{

   typeset opt
   while getopts 'cur:x:g:R:T:G:' opt
   do
         case "$opt" in
         R)
                  # Nombre del recurso de DNS.
                  RESOURCE_NAME=$OPTARG
                  ;;
         G)
                  # Nombre del grupo de recursos en el que se ha configurado
                  # el recurso.
                  RESOURCEGROUP_NAME=$OPTARG
                  ;;
         T)
                  # Nombre del tipo de recurso.
                  RESOURCETYPE_NAME=$OPTARG
                  ;;
         r)
                  # El método no está accediendo a ninguna propiedad
                  # definida por el sistema, por lo que no tiene ninguna
                  # operación
                  ;;
         g)
                  # El método no está accediendo a ninguna propiedad de
                  # grupo de recursos, por lo que no tiene ninguna operación
                  ;;
         c)
                  # Indica que se está invocando el método Validate mientras
                  # se crea el recurso, por lo que el indicador no tiene ninguna
                  # operación
                  ;;
         u)
                  # Indica la actualización de una propiedad cuando el recurso
                  # ya existe. Si la actualización es de la propiedad Confdir,
                  # ésta debería aparecer en los argumentos de la línea de
                  # órdenes. En caso contrario, el método debe buscarlo
                  # específicamente con scha_resource_get.
                  UPDATE_PROPERTY=1
                  ;;
         x)
                  # Lista de propiedades de extensión. Separar los pares de
                  # propiedad y valor con "=" como separador.
                  PROPERTY=`echo $OPTARG | awk -F= '{print $1}'`
                  VAL=`echo $OPTARG | awk -F= '{print $2}'`
                  # Si la propiedad de extensión Confdir se encuentra en la
                  # línea de órdenes, anotar su valor.
                  if [ $PROPERTY == "Confdir" ]; then
                           CONFDIR=$VAL
                           CONFDIR_FOUND=1
                  fi
                  ;;
         *)
                  logger -p ${SYSLOG_FACILITY}.err \
                  -t [$SYSLOG_TAG] \
                  "ERROR: Option $OPTARG desconocida"
                  exit 1
                  ;;
         esac
   done
}

Al igual que con la función parse_args() para otros métodos, esta función proporciona un indicador (R) para capturar el nombre de recurso, (G) para capturar el nombre de grupo de recurso y (T) para capturar el tipo de recurso que ha pasado RGM.

Los indicadores r (que indica una propiedad definida por el sistema), g (que indica una propiedad de grupo de recursos) y c (que indica que la validación se produce durante la creación del recurso) se ignoran porque este método se invoca para validar una propiedad de extensión cuando el recurso se está actualizando.

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