PERL-basierte Entwicklung
Bei der Entwicklung des Plug-ins mittels PERL müssen Sie bestimmte Konventionen beachten.
-
Inhalte müssen lesbar sein
-
Obligatorische Operationen setenv, quiesce und unquiesce implementieren müssen
-
Sie müssen eine bestimmte Syntax verwenden, um die Ergebnisse an den Agenten weiterzuleiten
-
Der Inhalt sollte als <PLUGIN_NAME>.pm Datei gespeichert werden
Verfügbare Operationen sind
-
Setenv
-
Version
-
Stilllegen
-
Unquiesce
-
Clone_Pre, Clone_Post
-
Restore_Pre, Restore
-
Bereinigung
Allgemeine Plug-in-Handhabung
Verwenden des Ergebnisobjekts
Jeder benutzerdefinierte Plug-in-Vorgang muss das Ergebnisobjekt definieren. Dieses Objekt sendet Nachrichten, Exit Code, stdout und stderr zurück an den Host-Agent.
Ergebnisobjekt:
my $result = {
exit_code => 0, stdout => "", stderr => "", };
Ergebnisobjekt wird zurückgegeben:
return $result;
Wahrung der Datenkonsistenz
Es ist möglich, Daten zwischen den Operationen (außer Bereinigung) als Teil der gleichen Workflow-Ausführung zu erhalten. Dies erfolgt mit Schlüsselwert-Paaren. Die Daten werden als Teil des Ergebnisobjekts festgelegt und sind in den nachfolgenden Operationen desselben Workflows erhalten und verfügbar.
Im folgenden Codebeispiel werden die zu haltenden Daten festgelegt:
my $result = { exit_code => 0, stdout => "", stderr => "", }; $result->{env}->{‘key1’} = ‘value1’; $result->{env}->{‘key2’} = ‘value2’; …. return $result
Der obige Code setzt zwei Schlüssel-Wert-Paare, die als Eingabe in der nachfolgenden Operation zur Verfügung stehen. Auf die beiden Schlüsselwertware kann über folgenden Code zugegriffen werden:
sub setENV { my ($self, $config) = @_; my $first_value = $config->{‘key1’}; my $second_value = $config->{‘key2’}; … }
=== Logging error messages Jeder Vorgang kann Nachrichten an den Host-Agent senden, der den Inhalt anzeigt und speichert. Eine Nachricht enthält die Nachrichtenebene, einen Zeitstempel und einen Nachrichtentext. Mehrzeilare Nachrichten werden unterstützt.
Load the SnapCreator::Event Class: my $msgObj = new SnapCreator::Event(); my @message_a = ();
Verwenden Sie msgObj, um eine Nachricht mithilfe der Erfassungsmethode zu erfassen.
$msgObj->collect(\@message_a, INFO, "My INFO Message"); $msgObj->collect(\@message_a, WARN, "My WARN Message"); $msgObj->collect(\@message_a, ERROR, "My ERROR Message"); $msgObj->collect(\@message_a, DEBUG, "My DEBUG Message"); $msgObj->collect(\@message_a, TRACE, "My TRACE Message");
Meldungen auf das Ergebnisobjekt anwenden:
$result->{message} = \@message_a;
Verwendung von Plug-in-Stiften
Benutzerdefinierte Plug-ins müssen Plug-in-Stiche enthalten. Dies sind Methoden, die der SnapCenter-Server auf Grundlage eines Workflows aufruft.
Steckschraube | Optional/Erforderlich | Zweck | ||
---|---|---|---|---|
Setenv |
Erforderlich |
Dieser Stub legt die Umgebung und das Konfigurationsobjekt fest. Hier sollte eine Analyse oder Handhabung der Umgebung durchgeführt werden. Jedes Mal, wenn ein Stub genannt wird, wird die setenv stub kurz zuvor aufgerufen. Es ist nur für PERL-Plug-ins erforderlich. |
||
Version |
Optional |
Diese Stub wird verwendet, um die Anwendungsversion zu erhalten. |
||
Ermitteln |
Optional |
Mit diesem Stub werden Anwendungsobjekte wie beispielsweise die auf dem Agenten oder Host gehostete Instanz oder Datenbank ermittelt. Das Plug-in wird voraussichtlich im Rahmen der Antwort erkannte Applikationsobjekte in einem bestimmten Format zurückgeben. Dieser Stub wird nur verwendet, wenn die Anwendung in SnapDrive für Unix integriert ist.
|
||
Discovery_complete |
Optional |
Mit diesem Stub werden Anwendungsobjekte wie beispielsweise die auf dem Agenten oder Host gehostete Instanz oder Datenbank ermittelt. Das Plug-in wird voraussichtlich im Rahmen der Antwort erkannte Applikationsobjekte in einem bestimmten Format zurückgeben. Dieser Stub wird nur verwendet, wenn die Anwendung in SnapDrive für Unix integriert ist.
|
||
Stilllegen |
Erforderlich |
Diese Stub ist für das Ausführen eines Quiesce zuständig, das bedeutet, die Applikation in einen Zustand zu legen, in dem Sie eine Snapshot Kopie erstellen können. Dies wird vor dem Vorgang der Snapshot Kopie aufgerufen. Die zu behaltenden Metadaten der Applikation sollten im Rahmen der Antwort festgelegt werden, die bei einem nachfolgenden Klon oder bei Wiederherstellungen auf der entsprechenden Storage Snapshot Kopie in Form von Konfigurationsparametern zurückgegeben werden müssen. |
||
Nicht Stilllegen |
Erforderlich |
Diese Stub ist verantwortlich für die Durchführung eines Unquiesce, das bedeutet, Anwendung in einen normalen Zustand. Dies wird aufgerufen, nachdem Sie eine Snapshot Kopie erstellt haben. |
||
Clone_Pre |
Optional |
Diese Stub ist für das Durchführen von Preclone-Aufgaben zuständig. Voraussetzung dafür ist, dass Sie die integrierte SnapCenter Server Klonschnittstelle verwenden und beim Ausführen eines Klonvorgangs ausgelöst wird. |
||
Clone_Post |
Optional |
Diese Stub ist für das Durchführen von Aufgaben nach dem Klonen verantwortlich. Hierbei wird vorausgesetzt, dass Sie die integrierte SnapCenter Server Klonschnittstelle verwenden und nur beim Ausführen eines Klonvorgangs ausgelöst wird. |
||
Wiederherstellen_Pre |
Optional |
Diese Stub ist für die Durchführung von Vorratstore-Aufgaben zuständig. Hierbei wird vorausgesetzt, dass Sie die integrierte SnapCenter Server Restore-Schnittstelle verwenden und während der Wiederherstellung ausgelöst werden. |
||
Wiederherstellen |
Optional |
Diese Stub ist für die Durchführung von Aufgaben zur Wiederherstellung von Anwendungen verantwortlich. Hierbei wird vorausgesetzt, dass Sie die integrierte SnapCenter Server-Wiederherstellungsschnittstelle verwenden und nur bei der Durchführung einer Wiederherstellung ausgelöst wird. |
||
Bereinigung |
Optional |
Diese Stub ist für die Durchführung der Bereinigung nach Backup-, Wiederherstellungs- oder Klonvorgängen verantwortlich. Die Bereinigung kann während der normalen Workflow-Ausführung oder bei einem Workflow-Ausfall erfolgen. Sie können den Workflow-Namen infilern, unter dem die Bereinigung aufgerufen wird, indem Sie auf die Konfiguration Parameter AKTION, die Backup, KlonVolAndLun oder fileOrVolRestore sein kann. Der Konfigurationsparameter ERROR_MESSAGE gibt an, ob beim Ausführen des Workflows Fehler aufgetreten sind. Wenn ERROR_MESSAGE definiert ist und NICHT Null, wird die Bereinigung während der Ausführung des Workflow-Fehlers aufgerufen. |
||
App_Version |
Optional |
Diese Stub wird von SnapCenter verwendet, um Anwendungsversionsdetails zu erhalten, die vom Plug-in verwaltet werden. |
Informationen zum Plug-in-Paket
Jedes Plug-in muss folgende Informationen haben:
package MOCK; our @ISA = qw(SnapCreator::Mod); =head1 NAME MOCK - class which represents a MOCK module. =cut =head1 DESCRIPTION MOCK implements methods which only log requests. =cut use strict; use warnings; use diagnostics; use SnapCreator::Util::Generic qw ( trim isEmpty ); use SnapCreator::Util::OS qw ( isWindows isUnix getUid createTmpFile ); use SnapCreator::Event qw ( INFO ERROR WARN DEBUG COMMENT ASUP CMD DUMP ); my $msgObj = new SnapCreator::Event(); my %config_h = ();
Betrieb
Sie können verschiedene Vorgänge wie Setenv, Version, Quiesce und Unquiesce codieren, die von den benutzerdefinierten Plug-ins unterstützt werden.
Vorgang setenv
Für Plug-ins, die mit PERL erstellt wurden, ist die setenv-Operation erforderlich. Sie können die ENV einstellen und problemlos auf Plug-in-Parameter zugreifen.
sub setENV { my ($self, $obj) = @_; %config_h = %{$obj}; my $result = { exit_code => 0, stdout => "", stderr => "", }; return $result; }
Versionsbetrieb
Der Versionsvorgang gibt die Versionsinformationen der Anwendung zurück.
sub version { my $version_result = { major => 1, minor => 2, patch => 1, build => 0 }; my @message_a = (); $msgObj->collect(\@message_a, INFO, "VOLUMES $config_h{'VOLUMES'}"); $msgObj->collect(\@message_a, INFO, "$config_h{'APP_NAME'}::quiesce"); $version_result->{message} = \@message_a; return $version_result; }
Betrieb stilllegen
Der Quiesce-Vorgang führt einen Quiesce-Vorgang der Anwendung für Ressourcen durch, die im PARAMETER RESSOURCEN aufgeführt sind.
sub quiesce { my $result = { exit_code => 0, stdout => "", stderr => "", }; my @message_a = (); $msgObj->collect(\@message_a, INFO, "VOLUMES $config_h{'VOLUMES'}"); $msgObj->collect(\@message_a, INFO, "$config_h{'APP_NAME'}::quiesce"); $result->{message} = \@message_a; return $result; }
Vorgang nicht stilllegen
Um die Anwendung stillzulegen, muss der Vorgang nicht stillgelegt werden. Die Liste der Ressourcen ist im PARAMETER RESSOURCEN verfügbar.
sub unquiesce { my $result = { exit_code => 0, stdout => "", stderr => "", }; my @message_a = (); $msgObj->collect(\@message_a, INFO, "VOLUMES $config_h{'VOLUMES'}"); $msgObj->collect(\@message_a, INFO, "$config_h{'APP_NAME'}::unquiesce"); $result->{message} = \@message_a; return $result; }