SnapCenter Software 5 マニュアル ( CA08871-403 )
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と統合されている場合にのみ使用されます。
|
||
discovery_complete |
オプション |
このスタブは、エージェントまたはホストでホストされているインスタンスやデータベースなどのアプリケーション オブジェクトを検出するために使用されます。 プラグインは、検出されたアプリケーション オブジェクトを特定の形式で応答の一部として返します。このスタブは、アプリケーションがSnapDrive for 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; }