Desarrollo basado en PERL
Debe seguir ciertas convenciones mientras desarrolla el plugin con PERL.
-
El contenido debe ser legible
-
Debe implementar la configuración de operaciones obligatorias, el modo de inactividad y la reanudación
-
Debe utilizar una sintaxis específica para devolver los resultados al agente
-
El contenido debe guardarse como archivo <PLUGIN_NAME>.pm
Las operaciones disponibles son
-
Setenv
-
versión
-
modo de inactividad
-
inactivación
-
clone_pre, clone_post
-
restaurar_pre, restaurar
-
limpieza
Manejo general del plug-in
Uso del objeto Results
Todas las operaciones de plugin personalizado deben definir el objeto Results. Este objeto envía mensajes, código de salida, stdout y stderr de vuelta al agente host.
Objeto resultados:
my $result = {
exit_code => 0, stdout => "", stderr => "", };
Devolver el objeto Results:
return $result;
Conservación de la coherencia de los datos
Es posible conservar datos entre operaciones (excepto limpieza) como parte de la misma ejecución del flujo de trabajo. Esto se logra usando pares clave-valor. Los pares clave-valor de los datos se establecen como parte del objeto de resultado y se conservan y están disponibles en las operaciones posteriores del mismo flujo de trabajo.
En el ejemplo de código siguiente se establecen los datos que se van a conservar:
my $result = { exit_code => 0, stdout => "", stderr => "", }; $result->{env}->{‘key1’} = ‘value1’; $result->{env}->{‘key2’} = ‘value2’; …. return $result
El código anterior establece dos pares clave-valor, que están disponibles como entrada en la operación posterior. Los dos pares clave-valor se pueden acceder mediante el siguiente código:
sub setENV { my ($self, $config) = @_; my $first_value = $config->{‘key1’}; my $second_value = $config->{‘key2’}; … }
=== Logging error messages Cada operación puede enviar mensajes al agente host, que muestra y almacena el contenido. Un mensaje contiene el nivel de mensaje, una Marca de tiempo y un texto de mensaje. Se admiten mensajes multilínea.
Load the SnapCreator::Event Class: my $msgObj = new SnapCreator::Event(); my @message_a = ();
Utilice el método msgObj para capturar un mensaje mediante el método Collect.
$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");
Aplicar mensajes al objeto resultados:
$result->{message} = \@message_a;
Uso de los espárragos del plug-in
Los plugins personalizados deben exponer los talones del plug-in. Estos son métodos a los que llama el servidor SnapCenter, en función de un flujo de trabajo.
Muñón de complemento | Opcional/obligatorio | Específico | ||
---|---|---|---|---|
Setenv |
obligatorio |
Este código auxiliar establece el entorno y el objeto de configuración. Aquí se debe realizar cualquier análisis o manejo del entorno. Cada vez que se llama un archivo stub, el archivo stub setenv se llama justo antes. Solo es necesario para complementos DE tipo PERL. |
||
Versión |
Opcional |
Este código auxiliar se utiliza para obtener la versión de la aplicación. |
||
Detección |
Opcional |
Este archivo stub se utiliza para detectar objetos de aplicación como la instancia o la base de datos alojada en el agente o host. Se espera que el complemento devuelva los objetos de aplicación detectados en un formato específico como parte de la respuesta. Este código auxiliar sólo se utiliza en caso de que la aplicación esté integrada con SnapDrive para Unix.
|
||
discovery_complete |
Opcional |
Este archivo stub se utiliza para detectar objetos de aplicación como la instancia o la base de datos alojada en el agente o host. Se espera que el complemento devuelva los objetos de aplicación detectados en un formato específico como parte de la respuesta. Este código auxiliar sólo se utiliza en caso de que la aplicación esté integrada con SnapDrive para Unix.
|
||
Modo de inactividad |
obligatorio |
Este archivo stub es responsable de realizar un modo de inactividad, lo que significa colocar la aplicación en un estado en el que puede crear una copia Snapshot. Esto se llama antes de la operación de copia de Snapshot. Los metadatos de la aplicación que se conservará deben definirse como parte de la respuesta, que se devolverá durante las operaciones posteriores de clonado o restauración en la copia Snapshot de almacenamiento correspondiente en forma de parámetros de configuración. |
||
Inactivación |
obligatorio |
Este código auxiliar es responsable de realizar un modo de inactividad, lo que significa poner la aplicación en un estado normal. Esto se llama después de crear una copia Snapshot. |
||
clone_pre |
opcional |
Este archivo stub es responsable de realizar tareas previas a la clonación. Se supone que se utiliza la interfaz de clonación del servidor de SnapCenter integrada y se activa al realizar la operación de clonación. |
||
clone_post |
opcional |
Este archivo stub es responsable de realizar tareas posteriores a la clonación. Esto supone que se utiliza la interfaz de clonación del servidor de SnapCenter integrada y se activa solo al realizar una operación de clonado. |
||
restaurar_pre |
opcional |
Este archivo stub es responsable de realizar tareas prerestore. Esto supone que se utiliza la interfaz de restauración de servidor de SnapCenter incorporada y se activa al realizar una operación de restauración. |
||
Restaurar |
opcional |
Este código auxiliar es responsable de realizar tareas de restauración de aplicaciones. Esto supone que se utiliza la interfaz de restauración de servidor de SnapCenter incorporada y que solo se activa al realizar una operación de restauración. |
||
Limpieza |
opcional |
Este archivo stub es responsable de realizar una limpieza después de las operaciones de backup, restauración o clonado. La limpieza puede realizarse durante la ejecución normal del flujo de trabajo o en caso de que se produzca un error en el mismo. Puede inferir el nombre del flujo de trabajo bajo el cual se llama a la limpieza haciendo referencia a LA ACCIÓN de parámetro de configuración, que puede ser copia de seguridad, clonVolAndLun o archivoOrVolRestore. El parámetro DE configuración ERROR_MESSAGE indica si se produjo algún error al ejecutar el flujo de trabajo. Si ERROR_MESSAGE está definido y NO es NULL, se llama a la limpieza durante la ejecución de un fallo de flujo de trabajo. |
||
versión_aplicación |
Opcional |
Este stub es utilizado por SnapCenter para obtener la aplicación detalles de la versión que gestiona el plugin. |
Información sobre el paquete de plugins
Cada plugin debe tener la siguiente información:
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 = ();
Operaciones
Puede codificar varias operaciones, como setenv, Version, Quiesce y UnQUIESCE, que son compatibles con los plug-ins personalizados.
Funcionamiento de setenv
La operación setenv es necesaria para los complementos creados con PERL. Puede ajustar el ENV y acceder fácilmente a los parámetros del plug-in.
sub setENV { my ($self, $obj) = @_; %config_h = %{$obj}; my $result = { exit_code => 0, stdout => "", stderr => "", }; return $result; }
Operación de versión
La operación de versión devuelve la información de la versión de la aplicación.
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; }
Operaciones de inactivación
La operación de inactividad realiza una operación de inactividad de la aplicación en los recursos que se enumeran en el parámetro RESOURCES.
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; }
Funcionamiento de la reanudación
La operación de inactividad es necesaria para desactivar la activación de la aplicación. La lista de recursos está disponible en el parámetro RESOURCES.
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; }