Perlベースの開発
Perlを使用してプラグインを開発するときは、特定の規則に従う必要があります。
-
コンテンツは読み取り可能でなければなりません
-
setenv、quiesce、およびunquiesceの必須処理を実装する必要がある
-
結果をエージェントに渡すには、特定の構文を使用する必要があります。
-
内容は <plugin_name>.pm ファイルとして保存してください
実行可能な処理:
-
setenv
-
バージョン
-
休止
-
休止解除
-
clone_pre、clone_post
-
restore_pre、リストア
-
クリーンアップ
一般的なプラグイン処理
結果オブジェクトの使用
すべてのカスタムプラグイン処理で結果オブジェクトを定義する必要があります。このオブジェクトは、メッセージ、終了コード、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’}; … }
=== Logging error messages 各処理は、コンテンツを表示して保存するホストエージェントにメッセージを送信できます。メッセージには、メッセージレベル、タイムスタンプ、およびメッセージテキストが含まれます。複数行メッセージがサポートされています。
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サーバが呼び出すメソッドです。
プラグインスタブ | オプション / 必須 | 目的 | ||
---|---|---|---|---|
setenv |
必須 |
このスタブは、環境と設定オブジェクトを設定します。 環境の解析や処理はここで行う必要があります。スタブが呼び出されるたびに、setenvスタブが直前に呼び出されます。Perl形式のプラグインでのみ必要です。 |
||
バージョン |
オプション |
このスタブは、アプリケーションのバージョンを取得するために使用されます。 |
||
検出 |
オプション |
このスタブは、エージェントまたはホストでホストされているインスタンスやデータベースなどのアプリケーションオブジェクトを検出するために使用されます。 プラグインは、検出されたアプリケーションオブジェクトを特定の形式で応答の一部として返します。このスタブは、アプリケーションがSnapDrive for Unixと統合されている場合にのみ使用されます。
|
||
検出_完了 |
オプション |
このスタブは、エージェントまたはホストでホストされているインスタンスやデータベースなどのアプリケーションオブジェクトを検出するために使用されます。 プラグインは、検出されたアプリケーションオブジェクトを特定の形式で応答の一部として返します。このスタブは、アプリケーションがSnapDrive for Unixと統合されている場合にのみ使用されます。
|
||
休止 |
必須 |
このスタブは休止を実行します。つまり、アプリケーションをSnapshotを作成できる状態にします。これは、Snapshot処理の前に呼び出されます。保持するアプリケーションのメタデータは、応答の一部として設定する必要があります。このメタデータは、対応するストレージSnapshotでの後続のクローニングまたはリストア処理中に、構成パラメータの形式で返されます。 |
||
休止解除 |
必須 |
このスタブは、アプリケーションを通常の状態にすることを意味する休止解除を実行します。これは、Snapshotの作成後に呼び出されます。 |
||
clone_pre |
オプション |
このスタブは、クローニング前タスクを実行します。これは、組み込みのSnapCenterサーバクローニングインターフェイスを使用していることを前提としており、クローニング処理の実行時にトリガーされます。 |
||
clone_post |
オプション |
このスタブは、クローニング後のタスクを実行します。これは、組み込みのSnapCenterサーバクローニングインターフェイスを使用していることを前提としており、クローニング処理の実行時にのみトリガーされます。 |
||
restore_pre |
オプション |
このスタブは、リストア前のタスクを実行します。ここでは、組み込みのSnapCenterサーバリストアインターフェイスを使用しており、リストア処理の実行中にトリガーされることを前提としています。 |
||
リストア |
オプション |
このスタブは、アプリケーションのリストアタスクを実行します。これは、組み込みのSnapCenterサーバリストアインターフェイスを使用していることを前提としており、リストア処理の実行時にのみトリガーされます。 |
||
クリーンアップ |
オプション |
このスタブは、バックアップ、リストア、またはクローン処理のあとにクリーンアップを実行します。クリーンアップは、通常のワークフロー実行中またはワークフローの障害発生時に実行できます。設定パラメータ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ショリ
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; }