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

Método Validate

La finalidad del método de rellamada Validate de un tipo de recurso es comprobar que la configuración de recursos propuesta (especificada por la configuración de propiedades propuesta en el recuso) es válida para ese tipo de recurso.

El Gestor de grupos de recursos (RGM) llama al método Validate de una implementación de tipo de recurso si se produce una de las dos situaciones siguientes:

Estas dos situaciones pueden distinguirse por la presencia de la opción de línea de comandos -c (crear) o -u (actualizar), que se pasa al método Validate del recurso.

El método Validate se invoca en cada nodo del conjunto de nodos definido por el valor de la propiedad de tipo de recurso Init_nodes. Si Init_nodes se establece en RG_PRIMARIES , se llama al método Validate en cada nodo que pueda albergar el grupo de recursos (o ser el nodo principal del grupo) que contenga a su vez el recurso. Si Init_nodes se establece en RT_INSTALLED_NODES, se llama al método Validate en cada nodo en el que esté instalado el software del tipo de recurso, normalmente, todos los nodos del clúster.

El valor predeterminado de Init_nodes es RG_PRIMARIES (consulte la página de comando man rt_reg(4)). Al llamar al método Validate, RGM aún no ha creado el recurso (en caso de una rellamada de creación) o no ha aplicado aún los valores actualizados de las propiedades (en caso de una rellamada de actualización)


Nota –

Si utiliza sistemas de archivos locales administrados por el tipo de recurso HAStoragePlus, puede utilizar la función scds_hasp_check() para comprobar el estado del tipo de recurso. Esta información se obtiene del estado (en línea o no) de todos los recursos de SUNW.HAStoragePlus de los que depende el recurso usando las propiedades de sistema Resource_dependencies o Resource_dependencies_weak definidas para el recurso. Consulte la página de comando man scds_hasp_check(3HA) para obtener una lista completa de los códigos de estado devueltos por la función scds_hasp_check ().


La función DSDL scds_initialize() administra estas situaciones de la siguiente forma:

Suponga que la función que implementa la validación de las propiedades del recurso se denomina svc_validate() y que utiliza la familia de funciones scds_get_name() para consultar la propiedad que se va a validar. Suponiendo que el código de devolución 0 representa una configuración válida del recurso desde esta función, el siguiente código puede representar, por lo tanto, el método Validate del tipo de recurso:

int
main(int argc, char *argv[])
{
   scds_handle_t handle;
   int rc;

   if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
   return (1);   /* Initialization Error */
   }
   rc = svc_validate(handle);
   scds_close(&handle);
   return (rc);
}

La función de validación debería registrar el motivo por el que ha fallado la validación del recurso. Sin embargo, si descartamos ese detalle (el Capítulo 8, Ejemplo de implementación del tipo de recurso con DSDL describe de forma más realista la función de validación), puede implementar una función svc_validate() de ejemplo más sencilla de la siguiente forma:

int
svc_validate(scds_handle_t handle)
{
   scha_str_array_t *confdirs;
   struct stat    statbuf;
   confdirs = scds_get_confdir_list(handle);
   if (stat(confdirs->str_array[0], &statbuf) == -1) {
   return (1);   /* Invalid resource property setting */
   }
   return (0);   /* Acceptable setting */
}

Por consiguiente, debe centrarse únicamente en la implementación de la función svc_validate().