Skip to main content
Eine neuere Version dieses Produkts ist erhältlich.
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Java-Stil

Beitragende

Ein benutzerdefiniertes Java Plug-in interagiert direkt mit einer Applikation wie Datenbank, Instanz usw.

Einschränkungen

Es gibt bestimmte Einschränkungen, die Sie beim entwickeln eines Plug-ins mit Java-Programmiersprache beachten sollten.

Steckkennlinie Java Plug-in

Komplexität

Niedrig bis mittel

Platzbedarf für Arbeitsspeicher

Bis zu 10-20 MB

Abhängigkeiten von anderen Bibliotheken

Bibliotheken für die Anwendungskommunikation

Anzahl der Threads

1

Thread-Laufzeit

Weniger als eine Stunde

Grund für Java-Einschränkungen

Ziel des SnapCenter-Agenten ist es, eine kontinuierliche, sichere und robuste Anwendungsintegration zu gewährleisten. Durch die Unterstützung von Java-Plug-ins ist es möglich, dass Plug-ins Speicherlecks und andere unerwünschte Probleme einführen. Diese Probleme sind schwer zu bewältigen, vor allem, wenn das Ziel ist, die Dinge einfach zu bedienen. Wenn die Komplexität eines Plug-ins nicht zu komplex ist, ist es viel seltener wahrscheinlich, dass die Entwickler die Fehler verursacht hätten. Die Gefahr von Java Plug-in ist, dass sie sind Wird in derselben JVM ausgeführt wie der SnapCenter-Agent selbst. Wenn das Plug-in abstürzt oder Speicher leckt, kann es auch negative Auswirkungen auf den Agent haben.

Unterstützte Methoden

Methode Erforderlich Beschreibung Wann und von wem gerufen?

Version

Ja.

Muss die Version des Plug-ins zurückgeben.

Vom SnapCenter-Server oder -Agenten, um die Version von anzufordern Das Plug-in.

Stilllegen

Ja.

Muss die Applikation stilllegen. In den meisten Fällen bedeutet dies, die Applikation in einen Zustand zu versetzen, in dem der SnapCenter Server ein Backup erstellen kann (z. B. eine Snapshot Kopie).

Bevor der SnapCenter-Server eine Snapshot(s)-Kopie oder erstellt Führt eine Sicherung im Allgemeinen durch.

Nicht Stilllegen

Ja.

Muss die Applikation stilllegen. In den meisten Fällen ist dies der Fall Bedeutet, dass die Anwendung wieder in einen normalen Betriebszustand versetzt wird.

Nachdem der SnapCenter Server eine Snapshot Kopie erstellt hat oder hat Backup im Allgemeinen durchgeführt.

Bereinigung

Nein

Verantwortlich für die Reinigung von allen, die das Plug-in braucht, um zu reinigen.

Wenn ein Workflow auf dem SnapCenter-Server beendet ist (erfolgreich oder mit einem Fehler).

KlonVorr

Nein

Sollte Aktionen durchführen, die vor der Durchführung eines Klonvorgangs ausgeführt werden müssen.

Wenn ein Benutzer eine Aktion „KlonVol“ oder „cloneRun“ auslöst und den integrierten Klon-Assistenten (GUI/CLI) verwendet.

KlonPost

Nein

Sollte Aktionen durchführen, die nach der Durchführung eines Klonvorgangs ausgeführt werden müssen.

Wenn ein Benutzer eine Aktion „KlonVol“ oder „cloneRun“ auslöst und den integrierten Klon-Assistenten (GUI/CLI) verwendet.

WiederherstellungPre

Nein

Sollte Aktionen durchführen, die vor dem Wiederherstellungsvorgang ausgeführt werden müssen.

Wenn ein Benutzer einen Wiederherstellungsvorgang auslöst.

Wiederherstellen

Nein

Verantwortlich für die Durchführung einer Wiederherstellung/Wiederherstellung der Anwendung.

Wenn ein Benutzer einen Wiederherstellungsvorgang auslöst.

AppVersion

Nein

Zum Abrufen der vom Plug-in verwalteten Anwendungsversion.

Im Rahmen von ASUP Datenerfassung in jedem Workflow, wie beispielsweise Backup/Restore/Klonen,

Lernprogramm

In diesem Abschnitt wird beschrieben, wie Sie ein benutzerdefiniertes Plug-in mithilfe der Java-Programmiersprache erstellen.

Sonnenfinsternis einrichten

  1. Erstellen Sie ein neues Java-Projekt "TutorialPlugin" in Eclipse

  2. Klicken Sie Auf Fertig Stellen

  3. Klicken Sie mit der rechten Maustaste auf das neue ProjektEigenschaftenJava Build PathBibliothekenExterne Jars hinzufügen

  4. Navigieren Sie zum Ordner ../lib/ des Host Agent, und wählen Sie Jars scAgent-5.0-core.jar und common-5.0.jar aus

  5. Wählen Sie das Projekt aus und klicken Sie mit der rechten Maustaste auf den Ordner srcNeuPaket und erstellen Sie ein neues Paket mit dem Namen com.netapp.snapcreator.agent.plugin.TutorialPlugin

  6. Klicken Sie mit der rechten Maustaste auf das neue Paket, und wählen Sie Neu → Java-Klasse.

    1. Geben Sie den Namen als TutorialPlugin ein.

    2. Klicken Sie auf die Schaltfläche zum Durchsuchen von Superclass und suchen Sie nach "*AbstractPlugin". Es sollte nur ein Ergebnis angezeigt werden:

       "AbstractPlugin - com.netapp.snapcreator.agent.nextgen.plugin".
      .. Klicken Sie Auf *Fertig Stellen*.
      .. Java-Klasse:
      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;
        }
      }

Umsetzung der erforderlichen Methoden

Quiesce, unquiesce und Version sind obligatorische Methoden, die jedes benutzerdefinierte Java Plug-in implementieren muss.

Die folgende Versionsmethode gibt die Version des Plug-ins zurück.

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

Die Methode wird in einem Kontextobjekt übergeben. Dazu gehören mehrere Helfer, zum Beispiel ein Logger und ein Context Store, sowie die Informationen über den aktuellen Vorgang (Workflow-ID, Job-ID). Wir können den Logger erhalten, indem wir den endgültigen Logger Logger = context.getLogger(); anrufen. Das Logger-Objekt bietet ähnliche Methoden, die von anderen Protokollierungs-Frameworks bekannt sind, z. B. Logback. Im Ergebnisobjekt können Sie auch den Exit-Code angeben. In diesem Beispiel wird Null zurückgegeben, da kein Problem aufgetreten ist. Andere Exit-Codes können verschiedenen Fehlerszenarien zugeordnet werden.

Ergebnisobjekt wird verwendet

Das Ergebnisobjekt enthält die folgenden Parameter:

Parameter Standard Beschreibung

Konfigurations

Leer Konfigurations

Mit diesem Parameter können Konfigurationsparameter zurück an den Server gesendet werden. Es Kann Parameter sein, die das Plug-in aktualisieren möchte. Ob dies der Fall ist Die in der Konfiguration auf dem SnapCenter-Server tatsächlich berücksichtigt wird, ist abhängig von DER PARAMETER APP_CONF_PERSISTENT=Y oder N in der Konfiguration.

Code-Code

0

Zeigt den Status des Vorgangs an. Eine „0“ bedeutet, dass der Vorgang war Erfolgreich ausgeführt. Andere Werte weisen auf Fehler oder Warnungen hin.

Stdout

Leer Liste

Damit können stdout-Nachrichten zurück an den SnapCenter übertragen werden Server:

Stderr

Leer Liste

Damit können stderr-Nachrichten zurück an den SnapCenter übertragen werden Server:

Nachrichten

Leer Liste

Diese Liste enthält alle Meldungen, die ein Plug-in zum zurückkehren möchte Server: Der SnapCenter-Server zeigt diese Meldungen in der CLI oder GUI an.

Der SnapCenter Agent stellt Builders zur Verfügung ("Baumuster") Für alle Die Ergebnistypen. Daher ist es sehr einfach, sie zu verwenden:

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

Setzen Sie beispielsweise den Exit-Code auf 0, legen Sie Listen für stdout und stderr fest, legen Sie die Konfigurationsparameter fest und fügen Sie die Protokollmeldungen an, die an den Server zurückgesendet werden. Wenn Sie nicht alle Parameter benötigen, senden Sie nur die erforderlichen Parameter. Da jeder Parameter einen Standardwert hat, ist das Ergebnis unberührt, wenn Sie .withExitCode(0) aus dem unten stehenden Code entfernen:

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

VersionResult

Der VersionResult informiert den SnapCenter-Server über die Plug-in-Version. Wie es auch erbt Von result enthält es die Parameter config, exitCode, stdout, stderr und messages.

Parameter Standard Beschreibung

Major

0

Hauptversionsfeld des Plug-ins.

Gering

0

Kleines Versionsfeld des Plug-ins.

Patch

0

Feld für die Patch-Version des Plug-ins.

Entwickeln

0

Build-Versionsfeld des Plug-ins.

Beispiel:

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

Verwenden des Kontextobjekts

Das Kontextobjekt bietet folgende Methoden:

Kontextsethode Zweck

Zeichenfolge GetWorkflowId();

Gibt die Workflow-id zurück, die vom SnapCenter-Server für den verwendet wird Aktueller Workflow.

Config getconfig();

Gibt die Konfiguration zurück, die vom SnapCenter-Server an den gesendet wird Agent:

Workflow-ID

Die Workflow-ID ist die id, die der SnapCenter-Server verwendet, um auf einen bestimmten laufenden zu verweisen Workflow:

Konfigurations

Dieses Objekt enthält (die meisten) der Parameter, die ein Benutzer in der Konfiguration auf dem festlegen kann SnapCenter-Server: Aus Sicherheitsgründen können jedoch einige dieser Parameter erhalten Serverseitig gefiltert. Im Folgenden finden Sie ein Beispiel für den Zugriff auf die Konfiguration und den Abruf Ein Parameter:

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

""// myParameter" enthält jetzt den Parameter, der von der Konfiguration auf dem SnapCenter-Server gelesen wird Wenn ein Konfigurationsparameter-Schlüssel nicht vorhanden ist, wird ein leerer String ("") zurückgegeben.

Das Plug-in wird exportiert

Sie müssen das Plug-in exportieren, um es auf dem SnapCenter-Host zu installieren.

Führen Sie in Eclipse die folgenden Aufgaben aus:

  1. Klicken Sie mit der rechten Maustaste auf das Basispaket des Plug-ins (in unserem Beispiel) L 188, S. com.netapp.snapcreator.agent.plugin.TutorialPlugin)

  2. Wählen Sie ExportJavaJar-Datei

  3. Klicken Sie Auf Weiter.

  4. Geben Sie im folgenden Fenster den Pfad der JAR-Zieldatei an: tutorial_plugin.jar Die Basisklasse des Plug-ins heißt TutorialPlugin.class, das Plug-in muss einem Ordner hinzugefügt werden Mit demselben Namen.

Wenn Ihr Plug-in von zusätzlichen Bibliotheken abhängt, können Sie den folgenden Ordner erstellen: Lib/

Sie können JAR-Dateien hinzufügen, von denen das Plug-in abhängig ist (z. B. ein Datenbanktreiber). Wenn SnapCenter lädt das Plug-in, es ordnet automatisch alle JAR-Dateien in diesem Ordner zu und Fügt sie dem Klassenpfad hinzu.