ネイティブ形式
SnapCenterでは、プラグインを作成するためにPerl以外のプログラミング言語やスクリプト言語がサポートされています。これはネイティブスタイルプログラミングと呼ばれ、スクリプトファイルまたはバッチファイルを使用できます。
ネイティブ形式のプラグインは、以下に示す特定の規則に従う必要があります。
プラグインは実行可能である必要があります
-
UNIXシステムの場合、エージェントを実行するユーザーにはプラグインに対する実行権限が必要です。
-
Windows システムの場合、 PowerShell プラグインのサフィックスは .ps1 に、その他の Windows スクリプトのサフィックスは .cmd または .bat にする必要があり、ユーザによって実行可能である必要があります
-
プラグインは、コマンドライン引数に対して「-quiesce」、「-unquiesce」のように応答する必要があります。
-
操作または関数が実装されていない場合、プラグインは終了コード99を返す必要があります。
-
プラグインは、結果をサーバーに返すために特定の構文を使用する必要があります。
一般的なプラグイン処理
エラーメッセージのロギング
各操作は、コンテンツを表示して保存するサーバーにメッセージを送り返すことができます。メッセージには、メッセージレベル、タイムスタンプ、およびメッセージテキストが含まれます。複数行メッセージがサポートされています。
形式:
SC_MSG#<level>#<timestamp>#<message> SC_MESSAGE#<level>#<timestamp>#<message>
プラグインスタブの使用
SnapCenterプラグインにはプラグインスタブが実装されている必要があります。これらは、SnapCenterサーバが特定のワークフローに基づいて呼び出すメソッドです。
プラグインスタブ | オプション / 必須 | 目的 |
---|---|---|
休止 |
必須 |
このスタブは休止を実行します。これにより、アプリケーションがスナップショットを作成できる状態になります。これは、ストレージSnapshot処理の前に呼び出されます。 |
休止解除 |
必須 |
このスタブは休止解除を実行します。アプリケーションは通常の状態になります。この処理は、ストレージSnapshot処理のあとに呼び出されます。 |
clone_pre |
オプション |
このスタブは、クローニング前のタスクを実行します。ここでは、組み込みのSnapCenterクローニングインターフェイスを使用しており、「clone_vol or clone_lun」アクションの実行時にのみトリガーされます。 |
clone_post |
オプション |
このスタブは、クローニング後のタスクを実行します。これは、組み込みのSnapCenterクローニングインターフェイスを使用しており、「clone_volまたはclone_lun」処理の実行時にのみトリガーされることを前提としています。 |
restore_pre |
オプション |
このスタブは、リストア前のタスクを実行します。ここでは、組み込みのSnapCenterリストアインターフェイスを使用しており、リストア処理の実行中にのみトリガーされます。 |
リストア |
オプション |
このスタブは、すべてのリストア処理を実行します。この要件は、組み込みのリストアインターフェイスを使用していないことを前提としています。リストア処理の実行中にトリガーされます。 |
例
Windows PowerShell
システムでスクリプトを実行できるかどうかを確認します。スクリプトを実行できない場合は、スクリプトにSet-ExecutionPolicyバイパスを設定し、操作を再試行します。
if ($args.length -ne 1) { write-warning "You must specify a method"; break; } function log ($level, $message) { $d = get-date echo "SC_MSG#$level#$d#$message" } function quiesce { $app_name = (get-item env:APP_NAME).value log "INFO" "Quiescing application using script $app_name"; log "INFO" "Quiescing application finished successfully" } function unquiesce { $app_name = (get-item env:APP_NAME).value log "INFO" "Unquiescing application using script $app_name"; log "INFO" "Unquiescing application finished successfully" } switch ($args[0]) { "-quiesce" { quiesce; } "-unquiesce" { unquiesce; } default { write-error "Function $args[0] is not implemented"; exit 99; } } exit 0;