Skip to main content
Une version plus récente de ce produit est disponible.
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Style Java

Contributeurs

Un plug-in personnalisé Java interagit directement avec une application telle qu'une base de données, une instance, etc.

Limites

Certaines limitations doivent être prises en compte lors du développement d'un plug-in à l'aide du langage de programmation Java.

Caractéristique du plug-in Plug-in Java

La complexité

Faible à moyen

Encombrement de la mémoire

Jusqu'à 10-20 Mo

Dépendances sur d'autres bibliothèques

Bibliothèques pour la communication d'applications

Nombre de threads

1

Exécution de filetage

Moins d'une heure

Raison des limitations de Java

L'objectif de l'agent SnapCenter est de garantir une intégration continue, sûre et fiable des applications. En prenant en charge les plug-ins Java, il est possible que les plug-ins introduisent des fuites de mémoire et d'autres problèmes indésirables. Ces problèmes sont difficiles à résoudre, surtout lorsque l'objectif est de simplifier l'utilisation des choses. Si la complexité d'un plug-in n'est pas trop complexe, il est beaucoup moins probable que les développeurs aient introduit les erreurs. Le danger du plug-in Java est qu'ils fonctionnent dans la même JVM que l'agent SnapCenter lui-même. Lorsque le plug-in tombe en panne ou fuit de la mémoire, il peut également avoir un impact négatif sur l'agent.

Méthodes prises en charge

Méthode Obligatoire Description Appelé quand et par qui?

Version

Oui

Doit renvoyer la version du plug-in.

Par le serveur ou l'agent SnapCenter pour demander la version du plug-in.

Mise au repos

Oui

Doit effectuer une mise en veille sur l'application. Dans la plupart des cas, cela signifie de placer l'application dans un état où le serveur SnapCenter peut créer une sauvegarde (par exemple, un instantané).

Avant que le serveur SnapCenter crée une copie Snapshot ou effectue une sauvegarde en général.

Mise au repos

Oui

Doit effectuer une mise en veille sur l'application. Dans la plupart des cas, cela signifie que l'application revient à un état de fonctionnement normal.

Une fois que le serveur SnapCenter a créé un instantané ou effectué une sauvegarde en général.

Nettoyage

Non

Responsable du nettoyage de tout ce que le plug-in doit nettoyer.

Lorsqu'un flux de travail sur le serveur SnapCenter se termine (avec succès ou avec échec).

ClonePre

Non

Actions à effectuer avant l'exécution d'une opération de clonage

Lorsqu'un utilisateur déclenche une action « cloneVol » ou « cloneLun » et utilise l'assistant de clonage intégré (GUI/CLI).

Montant en clonePost

Non

Doit effectuer les actions qui doivent avoir lieu après l'exécution d'une opération de clonage.

Lorsqu'un utilisateur déclenche une action « cloneVol » ou « cloneLun » et utilise l'assistant de clonage intégré (GUI/CLI).

RestauePre

Non

Doit effectuer des actions qui doivent se produire avant l'appel de l'opération de restauration.

Lorsqu'un utilisateur déclenche une opération de restauration.

Restaurer

Non

Responsable de la restauration/restauration de l'application.

Lorsqu'un utilisateur déclenche une opération de restauration.

AppVersion

Non

Pour récupérer la version de l'application gérée par le plug-in.

Dans le cadre de la collecte de données ASUP, dans chaque workflow tel que sauvegarde/restauration/clonage.

Didacticiel

Cette section décrit comment créer un plug-in personnalisé à l'aide du langage de programmation Java.

Configuration d'eclipse

  1. Créez un nouveau projet Java « TutorialPlugin » dans Eclipse

  2. Cliquez sur Terminer

  3. Cliquez avec le bouton droit de la souris sur nouveau projetPropriétéschemin de construction JavabibliothèquesAjouter des fichiers JAR externes

  4. Accédez au dossier ../lib/ de Host Agent et sélectionnez JAR scAgent-5.0-core.jar et common-5.0.jar

  5. Sélectionnez le projet et cliquez avec le bouton droit de la souris sur le dossier srcNouveauPackage et créez un nouveau paquet portant le nom com.netapp.snapcreator.agent.plugin.TutorialPlugin

  6. Cliquez avec le bouton droit de la souris sur le nouveau package et sélectionnez Nouveau → classe Java.

    1. Entrez le nom en tant que TutorialPlugin.

    2. Cliquez sur le bouton de navigation de superclasse et recherchez "*AbstractPlugin". Un seul résultat doit apparaître :

       "AbstractPlugin - com.netapp.snapcreator.agent.nextgen.plugin".
      .. Cliquez sur *Terminer*.
      .. 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;
        }
      }

Mise en œuvre des méthodes requises

Les méthodes de mise au repos, de mise au repos et de version sont obligatoires que chaque plug-in Java personnalisé doit implémenter.

La méthode de version suivante permet de renvoyer la version du 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;
}

La méthode est passée dans un objet de contexte. Il contient plusieurs aides, par exemple un Logger et un Context Store, ainsi que des informations sur l'opération en cours (ID-workflow, ID-travail). Nous pouvons obtenir l'enregistreur en appelant l'enregistreur final Logger Logger = Context.GetLogger();. L'objet logger fournit des méthodes similaires connues d'autres frameworks de consignation, par exemple, la déconnexion. Dans l'objet résultat, vous pouvez également spécifier le code de sortie. Dans cet exemple, zéro est renvoyé, car il n'y a pas eu de problème. D'autres codes de sortie peuvent correspondre à différents scénarios de défaillance.

Utilisation de l'objet résultat

L'objet résultat contient les paramètres suivants :

Paramètre Valeur par défaut Description

Gstn de la

Config. Vide

Ce paramètre peut être utilisé pour renvoyer les paramètres de configuration au serveur. Il peut s'agir de paramètres que le plug-in souhaite mettre à jour. Si cette modification est effectivement reflétée dans la configuration sur le serveur SnapCenter dépend du paramètre APP_CONF_PERSISTANCE=y ou N dans la configuration.

Code exitcode

0

Indique l'état de l'opération. Un « 0 » signifie que l'opération a été exécutée avec succès. D'autres valeurs indiquent des erreurs ou des avertissements.

Stdout

Liste vide

Il peut être utilisé pour renvoyer des messages stdout au serveur SnapCenter.

Stderr

Liste vide

Il peut être utilisé pour renvoyer des messages stderr au serveur SnapCenter.

Messages

Liste vide

Cette liste contient tous les messages qu'un plug-in souhaite retourner au serveur. Le serveur SnapCenter affiche ces messages dans l'interface de ligne de commande ou l'interface utilisateur graphique.

L'agent SnapCenter fournit Builders ("Motif de création") pour tous ses types de résultats. L'utilisation est donc très simple :

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

Par exemple, définissez le code de sortie sur 0, définissez des listes pour stdout et stderr, définissez les paramètres de configuration et ajoutez également les messages de journal qui seront renvoyés au serveur. Si vous n'avez pas besoin de tous les paramètres, envoyez uniquement ceux qui sont nécessaires. Comme chaque paramètre a une valeur par défaut, si vous supprimez .avecExitCode(0) du code ci-dessous, le résultat n'est pas affecté :

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

Version

Le versionResult informe le serveur SnapCenter de la version du plug-in. Comme il hérite également du résultat, il contient les paramètres config, exitCode, stdout, stderr et messages.

Paramètre Valeur par défaut Description

Majeur

0

Champ de version majeure du plug-in.

Mineur

0

Champ de version mineure du plug-in.

Correctif

0

Champ de version du correctif du plug-in.

Création

0

Champ version de build du plug-in.

Par exemple :

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

Utilisation de l'objet de contexte

L'objet de contexte offre les méthodes suivantes :

Méthode de contexte Objectif

String getWorkflowId();

Renvoie l'ID de flux de travail utilisé par le serveur SnapCenter pour le flux de travail actuel.

Config getconfig() ;

Renvoie la configuration en cours d'envoi du serveur SnapCenter à l'agent.

ID-workflow

L'ID-workflow est l'identifiant que le serveur SnapCenter utilise pour faire référence à un flux de travail en cours d'exécution spécifique.

Gstn de la

Cet objet contient (la plupart) des paramètres qu'un utilisateur peut définir dans la configuration sur le serveur SnapCenter. Cependant, pour des raisons de sécurité, certains de ces paramètres peuvent être filtrés côté serveur. Voici un exemple d'accès à la configuration et de récupération d'un paramètre :

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

""// myParameter" contient maintenant le paramètre lu dans la configuration sur le serveur SnapCenter si une clé de paramètre config n'existe pas, elle renvoie une chaîne vide ("").

Exportation du plug-in

Vous devez exporter le plug-in pour l'installer sur l'hôte SnapCenter.

Dans Eclipse, effectuez les tâches suivantes :

  1. Cliquez avec le bouton droit de la souris sur le package de base du plug-in (dans notre exemple com.netapp.snapcreator.agent.plugin.TutorialPlugin).

  2. Sélectionnez ExporterJavafichier jar

  3. Cliquez sur Suivant.

  4. Dans la fenêtre suivante, spécifiez le chemin du fichier JAR de destination : tutorial_plugin.jar la classe de base du plug-in est appelée TutorialPlugin.class, le plug-in doit être ajouté à un dossier portant le même nom.

Si votre plug-in dépend de bibliothèques supplémentaires, vous pouvez créer le dossier suivant : lib/

Vous pouvez ajouter des fichiers JAR dont le plug-in dépend (par exemple, un pilote de base de données). Lorsque SnapCenter charge le plug-in, il associe automatiquement tous les fichiers JAR de ce dossier et les ajoute au classpath.