SnapCenter Software 4.9

to English version

Perlベースの開発

Perlを使用してプラグインを開発するときは、特定の規則に従う必要があります。

  • コンテンツが読み取り可能である

  • setENV、quiesce、およびunquiesceの必須処理を実装する

  • 結果をエージェントに渡すには、特定の構文を使用する

  • コンテンツを<PLUGIN_NAME>.pmという名前のファイルに保存する

使用可能な処理は以下のとおりです

  • setENV

  • version

  • quiesce

  • unquiesce

  • clone_pre、clone_post

  • restore_pre、restore

  • cleanup

一般的なプラグイン処理

結果オブジェクトの使用

すべてのカスタム プラグイン処理で結果オブジェクトを定義する必要があります。このオブジェクトは、メッセージ、終了コード、stdout、およびstderrをホスト エージェントに送信します。

結果オブジェクト:

my $result = {
      exit_code => 0,
      stdout => "",
      stderr => "",
};

結果オブジェクトを返す:

return $result;

データの整合性の維持

同じワークフローの実行中に、処理間(クリーンアップを除く)でデータを保持することができます。これにはキーと値のペアを使用します。データのキーと値のペアは結果オブジェクトの一部として設定され、同じワークフローの後続の操作で保持されて使用できます。

次のコード例では、保持するデータを設定します。

my $result = {
  exit_code => 0,
  stdout => "",
  stderr => "",
};
  $result->{env}->{‘key1’} = ‘value1’;
  $result->{env}->{‘key2’} = ‘value2’;
  ….
  return $result

上記のコードは、2つのキーと値のペアを設定します。これらのペアは、後続の処理で入力として使用できます。2つのキーと値のペアには、次のコードを使用してアクセスできます。

sub setENV {
    my ($self, $config) = @_;
    my $first_value = $config->{‘key1’};
    my $second_value = $config->{‘key2’};
    …
}

エラー メッセージのロギング

各処理は、コンテンツを表示して保存するホスト エージェントにメッセージを送り返すことができます。メッセージには、メッセージ レベル、タイムスタンプ、およびメッセージ テキストが含まれます。複数行メッセージがサポートされています。

Load the SnapCreator::Event Class:
my $msgObj = new SnapCreator::Event();
my @message_a = ();

msgObjを使用し、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");

結果オブジェクトにメッセージを適用します。

$result->{message} = \@message_a;

プラグイン スタブの使用

カスタム プラグインはプラグイン スタブを公開する必要があります。これらは、ワークフローに基づいてSnapCenter Serverが呼び出すメソッドです。

プラグイン スタブ オプション / 必須 目的

setENV

必須

このスタブは、環境と設定オブジェクトを設定します。

環境の解析や処理はここで行う必要があります。スタブが呼び出される際は毎回、setENVスタブが直前に呼び出されます。Perl形式のプラグインでのみ必要です。

version

オプション

このスタブは、アプリケーションのバージョンを取得するために使用されます。

discover

オプション

このスタブは、エージェントまたはホストでホストされているインスタンスやデータベースなどのアプリケーション オブジェクトを検出するために使用されます。

プラグインは、検出されたアプリケーション オブジェクトを特定の形式で応答の一部として返します。このスタブは、アプリケーションがSnapDrive for UNIXと統合されている場合にのみ使用されます。

Linuxファイルシステム(Linuxフレーバー)がサポートされています。AIX / Solaris(UNIXフレーバー)はサポートされていません。

discovery_complete

オプション

このスタブは、エージェントまたはホストでホストされているインスタンスやデータベースなどのアプリケーション オブジェクトを検出するために使用されます。

プラグインは、検出されたアプリケーション オブジェクトを特定の形式で応答の一部として返します。このスタブは、アプリケーションがSnapDrive for UNIXと統合されている場合にのみ使用されます。

Linuxファイルシステム(Linuxフレーバー)がサポートされています。AIXおよびSolaris(UNIXフレーバー)はサポートされていません。

quiesce

必須

このスタブは休止を実行します。つまり、アプリケーションをSnapshotコピーを作成できる状態にします。これは、Snapshotコピー処理の前に呼び出されます。保持するアプリケーションのメタデータは応答の一部として設定する必要があります。この応答は、対応するストレージSnapshotコピーに対する以降のクローニングまたはリストア処理で、設定パラメーターの形式で返されます。

unquiesce

必須

このスタブは、休止解除を実行します。つまり、アプリケーションを通常の状態にします。これは、Snapshotコピーの作成後に呼び出されます。

clone_pre

オプション

このスタブは、クローニング前タスクを実行します。これは、組み込みのSnapCenter Serverクローニング インターフェイスを使用していることを前提としており、クローニング処理の実行時にトリガーされます。

clone_post

オプション

このスタブは、クローニング後のタスクを実行します。これは、組み込みのSnapCenter Serverクローニング インターフェイスを使用していることを前提としており、クローニング処理の実行時にのみトリガーされます。

restore_pre

オプション

このスタブは、リストア前のタスクを実行します。これは、組み込みのSnapCenter Serverリストア インターフェイスを使用していることを前提としており、リストア処理の実行時にトリガーされます。

restore

オプション

このスタブは、アプリケーションのリストア タスクを実行します。これは、組み込みのSnapCenter Serverリストア インターフェイスを使用していることを前提としており、リストア処理の実行時にのみトリガーされます。

cleanup

オプション

このスタブは、バックアップ、リストア、またはクローン処理のあとにクリーンアップを実行します。クリーンアップは、通常のワークフロー実行中またはワークフローの失敗時に実行できます。設定パラメーターACTIONを参照し、backup、cloneVolAndLun、fileOrVolRestoreのいずれの値であるかを確認することで、クリーンアップが呼び出されるワークフロー名を推測できます。設定パラメーターERROR_MESSAGEは、ワークフローの実行中にエラーが発生したかどうかを示します。ERROR_MESSAGEが定義されていて、NULLではない場合、ワークフロー失敗の実行中にクリーンアップが呼び出されます。

app_version

オプション

このスタブは、プラグインで管理されているアプリケーション バージョンの詳細をSnapCenterで取得するために使用されます。

プラグイン パッケージ情報

各プラグインには、次の情報が必要です。

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 = ();

処理

カスタム プラグインでは、setENV、バージョン、休止、休止解除など、サポートしているさまざまな処理をコーディングできます。

setENV処理

setENV処理は、Perlを使用して作成されたプラグインに必須です。ENVを設定し、プラグイン パラメーターに簡単にアクセスできます。

sub setENV {
    my ($self, $obj) = @_;
    %config_h = %{$obj};
    my $result = {
      exit_code => 0,
      stdout => "",
      stderr => "",
    };
    return $result;
}

バージョン処理

バージョン処理は、アプリケーションのバージョン情報を返します。

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

休止処理

休止処理は、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;
}

休止解除処理

アプリケーションの休止解除には休止解除処理が必要です。リソースのリストは、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;
}
Top of Page