Skip to main content
È disponibile una versione più recente di questo prodotto.
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Stile Java

Collaboratori

Un plug-in personalizzato Java interagisce direttamente con un'applicazione come database, istanze e così via.

Limitazioni

Esistono alcune limitazioni che è necessario tenere presenti durante lo sviluppo di un plug-in utilizzando il linguaggio di programmazione Java.

Caratteristica del plug-in Plug-in Java

Complessità

Da basso a medio

Impatto della memoria

Fino a 10-20 MB

Dipendenze da altre librerie

Librerie per la comunicazione applicativa

Numero di thread

1

Runtime del thread

Meno di un'ora

Motivo delle limitazioni Java

L'obiettivo dell'agente SnapCenter è garantire un'integrazione applicativa continua, sicura e solida. Grazie al supporto dei plug-in Java, è possibile che i plug-in introducano perdite di memoria e altri problemi indesiderati. Questi problemi sono difficili da affrontare, soprattutto quando l'obiettivo è quello di mantenere le cose semplici da utilizzare. Se la complessità di un plug-in non è troppo complessa, è molto meno probabile che gli sviluppatori abbiano introdotto gli errori. Il pericolo del plug-in Java è che lo sia In esecuzione nella stessa JVM dell'agente SnapCenter stesso. In caso di crash o perdita di memoria, il plug-in potrebbe avere un impatto negativo sull'Agent.

Metodi supportati

Metodo Obbligatorio Descrizione Chiamate quando e da chi?

Versione

Deve restituire la versione del plug-in.

Dal server o dall'agente SnapCenter per richiedere la versione di il plug-in.

Quiesce

Deve eseguire un quiesce sull'applicazione. Nella maggior parte dei casi, ciò significa mettere l'applicazione in uno stato in cui il server SnapCenter può creare un backup (ad esempio, una copia Snapshot).

Prima che il server SnapCenter crei una copia Snapshot o. esegue un backup in generale.

Senza richieste

Deve eseguire un'operazione senza domande sull'applicazione. Nella maggior parte dei casi, questo significa riportare l'applicazione in uno stato operativo normale.

Dopo che il server SnapCenter ha creato una copia Snapshot eseguito un backup in generale.

Pulizia

No

Responsabile della pulizia di qualsiasi elemento che il plug-in deve pulire.

Al termine di un flusso di lavoro sul server SnapCenter (con esito positivo o con errore).

ClonePre

No

Dovrebbe eseguire azioni che devono essere eseguite prima di eseguire un'operazione di clonazione.

Quando un utente attiva un'azione "cloneVol" o "cloneLun" e utilizza la procedura guidata di cloning integrata (GUI/CLI).

ClonePost

No

Dovrebbe eseguire azioni che devono avvenire dopo l'esecuzione di un'operazione di clonazione.

Quando un utente attiva un'azione "cloneVol" o "cloneLun" e utilizza la procedura guidata di cloning integrata (GUI/CLI).

RestorePre

No

Dovrebbe eseguire le azioni che devono essere eseguite prima di richiamare l'operazione di ripristino.

Quando un utente attiva un'operazione di ripristino.

Ripristinare

No

Responsabile dell'esecuzione di un ripristino/ripristino dell'applicazione.

Quando un utente attiva un'operazione di ripristino.

AppVersion

No

Per recuperare la versione dell'applicazione gestita dal plug-in.

Come parte della raccolta di dati ASUP in ogni flusso di lavoro come Backup/Restore/Clone.

Esercitazione

In questa sezione viene descritto come creare un plug-in personalizzato utilizzando il linguaggio di programmazione Java.

Configurare l'eclissi

  1. Creare un nuovo progetto Java "TutorialPlugin" in Eclipse

  2. Fare clic su fine

  3. Fare clic con il pulsante destro del mouse su nuovo progettoProprietàJava Build PathLibrerieAggiungi jar esterni

  4. Accedere alla cartella ../lib/ dell'agente host e selezionare jars scAgent-5.0-core.jar e common-5.0.jar

  5. Selezionare il progetto e fare clic con il pulsante destro del mouse sulla cartella srcNewPackage e creare un nuovo pacchetto con il nome com.netapp.snapcreator.agent.plugin.TutorialPlugin

  6. Fare clic con il pulsante destro del mouse sul nuovo pacchetto e selezionare New → Java Class.

    1. Immettere il nome come TutorialPlugin.

    2. Fare clic sul pulsante di ricerca delle superclassi e cercare "*AbstractPlugin". Dovrebbe essere visualizzato un solo risultato:

       "AbstractPlugin - com.netapp.snapcreator.agent.nextgen.plugin".
      .. Fare clic su *fine*.
      .. Classe 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;
        }
      }

Implementazione dei metodi richiesti

Quiesce, unquiesce e version sono metodi obbligatori che ogni plug-in Java personalizzato deve implementare.

Di seguito viene riportato un metodo di versione per restituire la versione del plug-in.

@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;
}

Il metodo viene passato in un oggetto di contesto. Contiene più assistenti, ad esempio un Logger e un archivio di contesto, nonché le informazioni sull'operazione corrente (workflow-ID, job-ID). Possiamo ottenere il logger chiamando il logger finale = Context.GetLogger();. L'oggetto logger fornisce metodi simili noti da altri framework di logging, ad esempio logback. Nell'oggetto risultato, è anche possibile specificare il codice di uscita. In questo esempio, viene restituito zero, poiché non si è verificato alcun problema. Altri codici di uscita possono essere associati a diversi scenari di guasto.

Utilizzo dell'oggetto risultato

L'oggetto Result contiene i seguenti parametri:

Parametro Predefinito Descrizione

Config

Vuoto config

Questo parametro può essere utilizzato per inviare nuovamente i parametri di configurazione al server. IT possono essere parametri che il plug-in desidera aggiornare. Se questo cambiamento è La configurazione sul server SnapCenter dipende da IL parametro APP_CONF_PERSISTENCY=Y o N nella configurazione.

ExitCode

0

Indica lo stato dell'operazione. "0" indica che l'operazione è stata eseguita eseguito correttamente. Altri valori indicano errori o avvisi.

Stdout

Vuoto Elenco

Questa funzione può essere utilizzata per trasmettere messaggi stdout a SnapCenter Server.

Stderr

Vuoto Elenco

Questa funzione può essere utilizzata per ritrasmettere i messaggi stderr a SnapCenter Server.

Messaggi

Vuoto Elenco

Questo elenco contiene tutti i messaggi che un plug-in desidera restituire a server. Il server SnapCenter visualizza questi messaggi nella CLI o nella GUI.

L'agente SnapCenter fornisce costruttori ("Modello di costruttore") per tutti i tipi di risultato. Questo rende l'utilizzo molto semplice:

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

Ad esempio, impostare il codice di uscita su 0, impostare gli elenchi per stdout e stderr, impostare i parametri di configurazione e aggiungere anche i messaggi di registro che verranno rinviati al server. Se non sono necessari tutti i parametri, inviare solo quelli necessari. Poiché ogni parametro ha un valore predefinito, se si rimuove .withExitCode(0) dal codice riportato di seguito, il risultato non viene influenzato:

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

VersionResult

VersionResult informa il server SnapCenter della versione del plug-in. Come eredita anche Di conseguenza, contiene i parametri config, exitCode, stdout, stderr e messaggi.

Parametro Predefinito Descrizione

Maggiore

0

Principale campo di versione del plug-in.

Minore

0

Campo versione minore del plug-in.

Patch

0

Campo della versione della patch del plug-in.

Costruire

0

Campo della versione di build del plug-in.

Ad esempio:

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

Utilizzo dell'oggetto di contesto

L'oggetto Context fornisce i seguenti metodi:

Metodo di contesto Scopo

Stringa GetWorkflowId();

Restituisce l'id del flusso di lavoro utilizzato dal server SnapCenter per flusso di lavoro corrente.

Config getConfig();

Restituisce la configurazione inviata dal server SnapCenter a Agente.

ID flusso di lavoro

L'ID del flusso di lavoro è l'id utilizzato dal server SnapCenter per fare riferimento a un'esecuzione specifica workflow.

Config

Questo oggetto contiene la maggior parte dei parametri che un utente può impostare nella configurazione di Server SnapCenter. Tuttavia, a causa di motivi di sicurezza, alcuni di questi parametri potrebbero ottenere filtrato sul lato server. Di seguito viene riportato un esempio di come accedere alla configurazione e al recupero un parametro:

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

""// myParameter" contiene ora il parametro letto dalla configurazione sul server SnapCenter Se una chiave del parametro di configurazione non esiste, restituirà una stringa vuota ("").

Esportazione del plug-in

È necessario esportare il plug-in per installarlo sull'host SnapCenter.

In Eclipse eseguire le seguenti operazioni:

  1. Fare clic con il pulsante destro del mouse sul pacchetto di base del plug-in (nel nostro esempio com.netapp.snapcreator.agent.plugin.TutorialPlugin).

  2. Selezionare ExportJavajar file

  3. Fare clic su Avanti.

  4. Nella finestra seguente, specificare il percorso del file jar di destinazione: tutorial_plugin.jar La classe di base del plug-in è denominata TutorialPlugin.class, il plug-in deve essere aggiunto a una cartella con lo stesso nome.

Se il plug-in dipende da librerie aggiuntive, è possibile creare la seguente cartella: Lib/

È possibile aggiungere file jar, da cui dipende il plug-in (ad esempio, un driver di database). Quando SnapCenter carica il plug-in, che automaticamente associa tutti i file jar in questa cartella ad esso e. li aggiunge al classpath.