Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Analysefunktion der Validate-Methode

Da RGM der Validate-Methode einen anderen Satz Argumente übergibt als die anderen Rückmeldemethoden, benötigt Validate eine andere Funktion für die Analyseargumente als die anderen Methoden. In der Online-Dokumentation zu rt_callbacks(1HA) finden Sie weitere Informationen über die Argumente, die an Validate und die anderen Rückmeldemethoden übergeben werden. Folgendes Codebeispiel zeigt die Validate parse_args()-Funktion.

#########################################################################
# 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
}

Wie im Falle der parse_args()-Funktion für andere Methoden, bietet diese Funktion das Flag (R) zum Erfassen des Ressourcennamens, (G) zum Erfassen des Ressourcengruppennamens und (T) zum Erfassen des Ressourcentyps, der von RGM übergeben wird.

Das r-Flag (das auf eine systemdefinierte Eigenschaft verweist), das g-Flag (das auf eine Ressourcengruppeneigenschaft verweist) und das c-Flag (das angibt, ob die Validierung während der Ressourcenerstellung stattfindet) werden ignoriert. Sie werden ignoriert, weil diese Methode zum Validieren einer Erweiterungseigenschaft aufgerufen wird, wenn die Ressource aktualisiert wird.

Das u-Flag stellt den Wert der UPDATE_PROPERTY-Shell-Variablen auf 1 (TRUE) ein. Das x-Flag erfasst die Namen und Werte der Eigenschaften, die aktualisiert werden. Wenn es sich bei Confdir um eine der aktualisierten Eigenschaften handelt, wird ihr Wert in die CONFDIR-Shell-Variable eingefügt und die Variable CONFDIR_FOUND auf 1 (TRUE) gesetzt.