Skip to main content
Hay disponible una nueva versión de este producto.
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Estilo Java

Colaboradores

Un complemento personalizado de Java interactúa directamente con una aplicación como base de datos, instancia, etc.

Limitaciones

Existen ciertas limitaciones que debe tener en cuenta al desarrollar un plug-in utilizando el lenguaje de programación Java.

Característica de plug-in Plugin de Java

Complejidad

De bajo a mediano

Huella de la memoria

Hasta 10-20 MB

Dependencias con otras bibliotecas

Bibliotecas para la comunicación de aplicaciones

Número de subprocesos

1

Tiempo de ejecución de subprocesos

Menos de una hora

Motivo de las limitaciones de Java

El objetivo del agente SnapCenter es garantizar una integración de aplicaciones sólida, segura y continua. Al admitir plug-ins de Java, es posible que los plug-ins introduzcan fugas de memoria y otros problemas no deseados. Esas cuestiones son difíciles de abordar, especialmente cuando el objetivo es mantener las cosas fáciles de usar. Si la complejidad de un complemento no es demasiado compleja, es mucho menos probable que los desarrolladores hubieran introducido los errores. El peligro del plugin de Java es que lo son Se está ejecutando en la misma JVM que el propio agente de SnapCenter. Cuando el plug-in se bloquea o pierde memoria, también puede afectar negativamente al agente.

Métodos admitidos

Método Obligatorio Descripción ¿Cuándo y por quién?

Versión

Necesita obtener la versión del plugin.

Por el servidor o agente de SnapCenter para solicitar la versión de el plugin.

Modo de inactividad

Necesita realizar una pausa en la aplicación. En la mayoría de los casos, esto implica poner la aplicación en un estado donde SnapCenter Server puede crear un backup (por ejemplo, una copia Snapshot).

Antes de que el servidor de SnapCenter cree una copia Snapshot o. realiza una copia de seguridad en general.

Inactivación

Necesita realizar una reanudación de la aplicación. En la mayoría de los casos, esto significa volver a poner la aplicación en un estado de funcionamiento normal.

Después de que el servidor de SnapCenter haya creado una copia snapshot o haya creado una copia snapshot realización de una copia de seguridad en general.

Limpieza

No

Responsable de la limpieza de cualquier cosa que el plug-in necesite limpiar.

Cuando termina un flujo de trabajo en el servidor SnapCenter (correctamente o con un error).

ClonPree

No

Debe realizar las acciones que deben realizarse antes de realizar una operación de clonado.

Cuando un usuario activa una acción "clonVol" o "clonLun" y utiliza el asistente de clonación integrado (GUI/CLI).

ClonPost

No

Debe realizar las acciones que deben realizarse después de realizar una operación de clonado.

Cuando un usuario activa una acción "clonVol" o "clonLun" y utiliza el asistente de clonación integrado (GUI/CLI).

RestauradoPre

No

Debe ejecutar acciones que deben realizarse antes de solicitar la operación de restauración.

Cuando un usuario activa una operación de restauración.

Restaurar

No

Responsable de la restauración/recuperación de una aplicación.

Cuando un usuario activa una operación de restauración.

Versión de appVersion

No

Para recuperar la versión de la aplicación que gestiona el plugin.

Como parte de la recogida de datos de ASUP en cada flujo de trabajo, como Backup/Restore/Clone.

Tutorial

En esta sección se describe cómo crear un complemento personalizado mediante el lenguaje de programación Java.

Configuración de eclipse

  1. Cree un nuevo proyecto Java "TutorialPlugin" en Eclipse

  2. Haga clic en Finalizar

  3. Haga clic con el botón derecho del ratón en nuevo proyectoPropiedadesJava Build PathBibliotecasAñadir tarros externos

  4. Desplácese a la carpeta ../lib/ del agente anfitrión y seleccione Jarras scAgent-5.0-core.jar y common-5.0.jar

  5. Seleccione el proyecto y haga clic con el botón derecho del ratón en la carpeta srcNuevopaquete y cree un nuevo paquete con el nombre com.netapp.snapcreator.agent.plugin.TutorialPlugin

  6. Haga clic con el botón derecho del ratón en el nuevo paquete y seleccione Nuevo → clase Java.

    1. Introduzca el nombre como TutorialPlugin.

    2. Haga clic en el botón de exploración de la superclase y busque "*AbstractPlugin". Sólo debe aparecer un resultado:

       "AbstractPlugin - com.netapp.snapcreator.agent.nextgen.plugin".
      .. Haga clic en *Finalizar*.
      .. Clase Java:
      package com.netapp.snapcreator.agent.plugin.TutorialPlugin;
      import
      com.netapp.snapcreator.agent.nextgen.common.result.Describe
      Result;
      import
      com.netapp.snapcreator.agent.nextgen.common.result.Result;
      import
      com.netapp.snapcreator.agent.nextgen.common.result.VersionR
      esult;
      import
      com.netapp.snapcreator.agent.nextgen.context.Context;
      import
      com.netapp.snapcreator.agent.nextgen.plugin.AbstractPlugin;
      public class TutorialPlugin extends AbstractPlugin {
        @Override
        public DescribeResult describe(Context context) {
          // TODO Auto-generated method stub
          return null;
        }
        @Override
        public Result quiesce(Context context) {
          // TODO Auto-generated method stub
          return null;
        }
        @Override
        public Result unquiesce(Context context) {
          // TODO Auto-generated method stub
          return null;
        }
        @Override
        public VersionResult version() {
          // TODO Auto-generated method stub
          return null;
        }
      }

Implementación de los métodos necesarios

La función de inactividad, la reanudación y la versión son métodos obligatorios que cada plugin de Java personalizado debe implementar.

A continuación, se muestra un método de versión para obtener la versión del plugin.

@Override
public VersionResult version() {
    VersionResult versionResult = VersionResult.builder()
                                            .withMajor(1)
                                            .withMinor(0)
                                            .withPatch(0)
                                            .withBuild(0)
                                            .build();
    return versionResult;
}
Below is the implementation of quiesce and unquiesce method. These will be interacting with   the application, which is being protected by SnapCenter Server. As this is just a tutorial, the
application part is not explained, and the focus is more on the functionality that SnapCenter   Agent provides the following to the plug-in developers:
@Override
  public Result quiesce(Context context) {
    final Logger logger = context.getLogger();
    /*
      * TODO: Add application interaction here
    */
logger.error("Something bad happened.");
logger.info("Successfully handled application");
    Result result = Result.builder()
                    .withExitCode(0)
                    .withMessages(logger.getMessages())
                    .build();
    return result;
}

El método se pasa en un objeto de contexto. Contiene varios asistentes, por ejemplo, un registrador y un almacén de contexto, así como información sobre la operación actual (Workflow-ID, Job-ID). Podemos obtener el registrador llamando al registrador de registros final = context.getLogger();. El objeto logger proporciona métodos similares conocidos por otros marcos de registro, por ejemplo, logback. En el objeto Result, también puede especificar el código de salida. En este ejemplo, se devuelve cero, ya que no hubo ningún problema. Otros códigos de salida pueden asignar a diferentes situaciones de fallo.

Utilizando el objeto Resultado

El objeto Result contiene los parámetros siguientes:

Parámetro Predeterminado Descripción

Gestión de

Vacío gestión de

Este parámetro se puede utilizar para enviar parámetros de configuración al servidor. TI pueden ser parámetros que el plugin desea actualizar. Si este cambio es Realmente se refleja en la configuración del servidor de SnapCenter depende de El parámetro APP_CONF_PERSISTENCY=Y o N en la configuración.

ExitCode

0

Indica el estado de la operación. Un “0” significa que la operación era se ha ejecutado correctamente. Otros valores indican errores o advertencias.

Apedrear

Vacío Lista

Se puede utilizar para transmitir mensajes stdout de vuelta a la SnapCenter Servidor.

Stderr

Vacío Lista

Se puede utilizar para transmitir mensajes stderr de vuelta a la SnapCenter Servidor.

Mensajes

Vacío Lista

Esta lista contiene todos los mensajes a los que un plugin desea volver servidor. El servidor SnapCenter muestra esos mensajes en la CLI o en la GUI.

El agente de SnapCenter proporciona constructores ("Patrón de creación") para todos sus tipos de resultados. Esto hace que su uso sea muy sencillo:

Result result = Result.builder()
                    .withExitCode(0)
                    .withStdout(stdout)
                    .withStderr(stderr)
                    .withConfig(config)
                    .withMessages(logger.getMessages())
                    .build()

Por ejemplo, establezca el código de salida en 0, establezca las listas para stdout y stderr, defina los parámetros de configuración y también agregue los mensajes de registro que se enviarán de nuevo al servidor. Si no necesita todos los parámetros, envíe sólo los que necesite. Como cada parámetro tiene un valor predeterminado, si quita .witEExitCode(0) del código siguiente, el resultado no se verá afectado:

Result result = Result.builder()
                      .withExitCode(0)
                      .withMessages(logger.getMessages())
                      .build();

VersionResult

VersionResult informa a SnapCenter Server de la versión del plugin. Como también hereda De result, contiene los parámetros config, ExitCode, stdout, stderr y messages.

Parámetro Predeterminado Descripción

Importante

0

Campo de versión principal del plugin.

Menor

0

Campo de versión secundaria del plugin.

Parche

0

Campo de versión de revisión del plugin.

Cree

0

Cree el campo de versión del plugin.

Por ejemplo:

VersionResult result = VersionResult.builder()
                                  .withMajor(1)
                                  .withMinor(0)
                                  .withPatch(0)
                                  .withBuild(0)
                                  .build();

Uso del objeto de contexto

El objeto Context proporciona los siguientes métodos:

Método de contexto Específico

Cadena GetWorkflowId();

Devuelve el identificador de flujo de trabajo que está utilizando el servidor SnapCenter para el flujo de trabajo actual.

Config getconfig();

Devuelve la configuración que se envía desde el servidor SnapCenter al Agente.

ID del flujo de trabajo

El workflow-ID es el identificador que el servidor SnapCenter utiliza para hacer referencia a una ejecución específica flujo de trabajo.

Gestión de

Este objeto contiene (la mayoría) de los parámetros que un usuario puede definir en la configuración del Servidor SnapCenter. Sin embargo, debido a razones de seguridad, algunos de esos parámetros pueden obtener filtrado en el servidor. A continuación encontrará un ejemplo de cómo acceder a la configuración y recuperar un parámetro:

final Config config = context.getConfig();
String myParameter =
config.getParameter("PLUGIN_MANDATORY_PARAMETER");

'// MyParameter' ahora contiene el parámetro leído de la configuración en el servidor SnapCenter Si una clave de parámetro de configuración no existe, devolverá una cadena vacía ('').

Exportando el plugin

Debe exportar el plugin para instalarlo en el host de SnapCenter.

En Eclipse, realice las siguientes tareas:

  1. Haga clic con el botón derecho en el paquete base del plugin (en nuestro ejemplo) com.netapp.snapcreator.agent.plugin.TutorialPlugin).

  2. Seleccione ExportarJavaArchivo Jar

  3. Haga clic en Siguiente.

  4. En la siguiente ventana, especifique la ruta del archivo jar de destino: tutorial_plugin.jar La clase base del plugin se llama TutorialPlugin.class, el plugin se debe agregar a una carpeta con el mismo nombre.

Si el plugin depende de bibliotecas adicionales, puede crear la siguiente carpeta: Lib/

Puede agregar archivos JAR en los que depende el plugin (por ejemplo, un controlador de base de datos). Cuando SnapCenter carga el plugin, asocia automáticamente todos los archivos jar de esta carpeta con él y. los agrega a la classpath.