SOAP APIリファレンスガイドArcserve®ハイアベイラビリティバージョン18.0 arcserve
組み込みのヘルプシステムおよび電子的に配布される資料も含めたこのドキュメント(以下「本書」)はお客様への情報提供のみを目的としたもので、Arcserveにより随時、変更または撤回されることがあります。 Arcserveの事前の書面による承諾を受けずに本書の全部または一部を複写、醸渡、変更、開示、修正、複製することはできません。本書はArcserveが知的財産権を有する機密情報であり、ユーザは(i)本書に関連するArcserveソフトウェアの使用について、 Arcserveとユーザとの間で別途締結される契約により許可された以外の目的、または(ii)ユーザとArcserveとの間で別途締結された守秘義務により許可された以外の目的で本書を開示したり、本書を使用することはできません。上記にかかわらず、本書で取り上げているソフトウェア製品(複数の場合あり)のライセンスを受けたユーザは、そのソフトウェアに関して社内で使用する場合に限り本書の合理的な範囲内の部数のコピーを作成できます。ただしArcserveのすべての著作権表示およびその説明を各コピーに添付することを条件とします。本書を印刷するかまたはコピーを作成する上記の権利は、当該ソフトウェアのライセンスが完全に有効となっている期間内に限定されます。いかなる理由であれ、そのライセンスが終了した場合には、ユーザはArcserveに本書の全部または一部を複製したコピーをArcserveに返却したか、または破棄したことを文書で証明する責任を負います。準拠法により認められる限り、Arcserveは本書を現状有姿のまま提供し、商品性、お客様の使用目的に対する適合性、他者の権利に対する不侵害についての黙示の保証を含むいかなる保証もしません。また、本システムの使用に起因して、逸失利益、投資損失、業務の中断、営業権の喪失、情報の損失等、いかなる損害(直接損害か間接損害かを問いません)が発生しても、Arcserveはお客様または第三者に対し責任を負いません。Arcserveがかかる損害の発生の可能性について事前に明示に通告されていた場合も同様とします。本書に記載されたソフトウェア製品は、該当するライセンス契約書に従い使用されるものであり、当該ライセンス契約書はこの通知の条件によっていかなる変更も行われません。本書の制作者はArcserveです。 「制限された権利」のもとでの提供:アメリカ合衆国政府が使用、複製、開示する場合は、FAR Sections 12.212, 52.227-14及び52.227-19(c)(1)及び(2)、及び、DFARS Section252.227-7014(b)(3)または、これらの後継の条項に規定される該当する制限に従うものとします。 © 2019 Arcserve(その関連会社および子会社を含む) 。All rights reserved.サードパーティの商標または著作権は各所有者の財産です。
このマニュアルが参照しているArcserve製品は以下のとおりです。 ◾ Arcserve® High Availability( HA) ■ Arcserve® Replication ◾ Arcserve® Assured Recovery® ◾ Arcserve® Content Distribution
このマニュアルは、「Arcserve RHAインストールガイド」および「Arcserve RHA管理者ガイド」と併せてお読みください。 Arcserve RHA 18.0マニュアルのリンクについては、以下を参照してください。 ◾マニュアル選択メニュー ▪リリースノート
Arcserveサポートチームは、技術的な問題の解決に役立つ豊富なリソースを提供します。重要な製品情報に簡単にアクセスできます。 https://www.arcserve.com/support Arcserveのサポート: ▪ Arcserveサポートの専門家が社内で共有しているのと同じ情報ライブラリに直接アクセスできます。このサイトから、弊社のナレッジベース( KB)ドキュメントにアクセスできます。ここから、重要な問題やよくあるトラブルについて、製品関連 KB技術情報を簡単に検索し、検証済みのソリューションを見つけることができます。 ◾弊社のライブチャットリンクを使用して、Arcserveサポートチームとすぐにリアルタイムで会話を始めることができます。ライブチャットでは、製品にアクセスしたまま、懸念事項や質問に対する回答を即座に得ることができます。 ◾ Arcserveグローバルユーザコミュニティでは、質疑応答、ヒントの共有、ベストプラクティスに関する議論、他のユーザとの対話に参加できます。 ▪サポートチケットを開くことができます。オンラインでサポートチケットを開くと、質問の対象製品を専門とする担当者から直接、コールバックを受けられます。また、使用しているArcserve製品に適したその他の有用なリソースにアクセスできます。製品ドキュメントに関するフィードバックの提供Arcserve製品ドキュメントに関してコメントまたは質問がある場合は、こちらまでお問い合わせください。

第1章:概要
このセクションには、以下のトピックが含まれます。
SOAP APIを使用してArcserve RHAを制御するには、クライアントはRHA CSに対する認証を実行し、その後セッションを作成する必要があります。この操作はcreate_session API関数を呼び出すことにより実行されます。クライアントがセッションを作成した後は、そのクライアントはこのリファレンスガイドに記載されている任意のAPI関数を呼び出すことができます。タスクが完了したら、クライアントはclose_session APIを呼び出し、セッションを無効にしてリソースを解放します。
このガイドでは、Arcserve RHAによってエクスポートされたSOAP APIについて説明します。これらのAPIを使用すると、レプリケーションおよびハイアベイラビリティをさまざまな点から管理できます。たとえば、RHAシナリオを制御して、シナリオの実行や停止、シナリオフェールオーバなどのさまざまな操作を実行できます。<carha> SOAP APIを使用するには、統合 Webサービスサポートを含むプログラミング言語( Visual BasicやC#など)を使用します。注もこのリファレンスガイドで提供されているサンプルコードは、C#で記述されています。サンプルコードで使用されるSOAP API URLはhttp://127.0.0.1:8088/ws_ man/xosoapapi.asmxです。APIを呼び出すときは、このアドレス部をお使いのRHA CSのIPアドレスまたはホスト名で置き換えてください。
Arcserve RHA SOAP APIリファレンスガイドは、以下のテーブルに記述されている引数タイプを使用します。

第1章: SOAP API
このセクションには、以下のトピックが含まれます。

シナリオ管理api
以下のセクションでは、基本的なシナリオ管理タスクを実行するためのAPIについて説明します。 ▪作業開始: create session() ▪シナリオの作成:  create  scenario  ex() ▪ルートディレクトリの設定：set_root_dir() ・ルートディレクトリの追加：add_root_dir() ▪レプリカの追加：add_replica()複数のレプリカの追加：add replica_ex() ▪シナリオのプロパティの設定: set scenario data() ▪ホストプロパティの設定: set host data() ▪シナリオの開始:  run() ▪シナリオの停止： stop() ▪データレプリケーションの一時停止:  suspend  replication() ▪作業終了: close session() ▪認証情報の管理：add credentials ex() ▪ Arcserve Backup add  bab  credentials()を使用した統合▪シナリオのプロパティの更新:  update  scenario() ▪シナリオの削除:  remove  scenario() ▪シナリオのインポート： import  scenario() ▪実行中のシナリオの同期：synchronize() ▪レプリケーションの再開： resume_replication() ■リワインドブックマ一クの追加：set_rewind_bookmark()
create_session API関数を使用すると、コントロールサービスに対する認証を実行でき、セッションIDが返されます。このセッションIDは、他のAPI関数の呼び出し時に引数として渡されます。オープンセッションは、close_session APIを使用して無効にすることができます。引数create_session API関数には、以下のテーブルに記述されている引数が含まれています。

灵明植
create_sessionを使用した認証が成功した場合、この関数はセッションIDを含むuint値を返します。また、error_code引数が0に設定されます。それ以外の場合、MAX uint値( 0xFFFFFF)が返され、error_code引数には詳細なエラーコードが含まれます。注：user_name引数は、<DOMAIN_NAME>\<USER_NAME>という形式で指定する必要があります。たとえば、test_domain\Administratorというように指定します。例例 1:  Webサービスオブジェクトの作成xosoapapi_c get_mng() { xosoapapi_c mng = new xosoapapi_c(); return mng; }例 2: セツションの作成public bool create_session_example() { try { uint err = 0; string user_name = global::api_examples.Properties.Settings.Default.user_name; string password = global::api_examples.Properties.Settings.Default.password; _session_id = get_mng().create_session(user_name, password, out err); if (_session_id == 0xfffffff) { return false; } return true; } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
シナリオの作成：create_scenario_ex()
create_scenario_ex API関数を使用すると、シナリオを作成できます。シナリオの作成後、シナリオの実行、シナリオプロパティの変更、ホストの追加または削除などの操作を実行できます。引数create_scenario_ex API関数には、以下のテーブルで説明されている引数が含まれています。
灵り偏このAPIは、作成されたシナリオIDを返します。runやstopなど他のAPIでは、シナリオIDが必要です。シナリオIDがゼロの場合、APIは失敗しています。それ以外の場合、ゼロ以外の値は、APIが正常に完了したことを示します。注もこのAPIコールが正常に完了すると、シナリオのスケルトンが作成されます。シナリオのプロパティにはすべてデフォルト値があります。ルートディレクトリ、ホストIPなどの重要なプロパティは空です。プロパティを満たすために、他のAPIをコールします。この「リファレンスガイド」では、これ以降のAPIについて、プロパティを満たす方法を説明します。
例
uint product = 0; uint app = 0; bool is_ass_rec = false; bool is_cdp = false; uint si_opt = 0; uint group_id = 0xFFFFFFFF; string scenario_data = ""; string group_data = ""; uint scenario_id = get_mng().create_scenario_ex(_session_id, product, app, is_ass_ rec, is_cdp, si_opt, group_id, out scenario_data, out group_data);
このset_root_dir() API関数によって、ルートディレクトリのパスを編集できます。引数set_root_dir API関数には、以下のテーブルで説明されている引数が含まれています。
APIコールが正常に完了すると、この関数は値としてtrueを返します。それ以外の場合は、falseが返されます。注： create_scenario_ex APIは、シナリオのスケルトンのみを作成します。このAPIをコールして、ルートディレクトリを設定できます。例uint master_host_index = 1; get_mng().set_root_dir(_session_id, scenario_id, master_host_index, 0, "E:/test");
このadd_root_dir API関数によって、シナリオに新規ルートディレクトリを追加できます。引数add_root_dir API関数には、以下のテーブルで説明されている引数が含まれています。
APIコールが正常に完了すると、この関数は値としてtrueを返します。それ以外の場合は、falseが返されます。例:ルートデイレクトリの追加String scenario_data = get_mng().get_scenario_data(_session_id, scenario_id); //add root directory get_mng().add_root_dir(_session_id, ref scenario_data, "c:/test", out new_root_dir_id);
このadd_replica API関数によって、シナリオに新規レプリカを追加できます。マスタデ一タを複数のレプリカホストヘレプリケートする場合、このAPIをコールして、いくつかのレプリカホストを追加できます。引数このadd_replica API関数には、以下のテーブルで説明されている引数が含まれています。

灵明植
APIコールが正常に完了すると、この関数は値としてtrueを返します。それ以外の場合は、falseが返されます。例:レプリカの追加//マスタホストに1つのレプリカを追加しますget_mng().add_replica(_session_id, ref scenario_data, master_host_index, out new_ replica_index);
このadd_replica_ex API関数によって、シナリオに複数の新規レプリカホストを一度に追加できます。引数このadd_replica_ex API関数には、以下のテーブルで説明されている引数が含まれています。
たとえば、以下のXMLコードには2つのホストに関する情報が含まれています。 <?xml version="1.0"?> <object> - <object> <data type="String" val="155.35.76.155" label="Host"/> <data type="String" val="155.35.76.155" label="IP"/> </object> - <object> <data type="String" val="155.35.76.156" label="Host"/> <data type="String" val="155.35.76.156" label="IP"/> </object> </object>
展示値
APIコールが正常に完了すると、この関数は値としてtrueを返します。それ以外の場合は、falseが返されます。
例:複数のレプリカの追加
string host_list = "<?xml version=\"1.0\"?><object> <object><data label=\"Host\" val=\"155.35.76.155\" type=\"String\" /><data label=\"IP\" val=\"155.35.76.155\" type=\"String\" /> </object><object><data label=\"Host\" val=\"155.35.76.156\" type=\"String\" /><data label=\"IP\" val=\"155.35.76.156\" type=\"String\" /> </object></object>"; //マスタホストの下に２つのレプリカを追加しますget_mng().add_replica_ex(_session_id, ref scenario_data, master_host_index, ref host_list);
このset_scenario_data API関数によって、シナリオのプロパティを編集できます。シナリオのほとんどのプロパティは、このAPIによって更新できます。引数このset_scenairo_data API関数には、以下のテーブルで説明されている引数が含まれています。
灵形植APIコールが正常に完了すると、この関数は値としてtrueを返します。それ以外の場合は、falseが返されます。例：シナリオのプロパティの骰定//シナリオデータプロパティの設定get_mng().set_scenario_data(_session_id, scenario_id, "Scenario.ReplicateCompressAttr", "True");以下の表は、共通のシナリオプロパティ名のリストです。
このset  scenario  data API関数によって、ホストのプロパティを編集できます。ホストのほとんどのプロパティは、このAPIによって更新できます。引数
このset_host_data API関数には、以下のテーブルで説明されている引数が含まれています。灵明植APIコールが正常に完了すると、この関数は値としてtrueを返します。それ以外の場合は、falseが返されます。例：ホストプロパティの骰定//ホストのホスト名とIPアドレスを設定しますget_mng().set_host_data(_session_id, scenario_id, master_host_index, "Scenario.ReplicationTree.ReplNode.CommonHostProps.Host", "master"); get_mng().set_host_data(_session_id, scenario_id, master_host_index, "Scenario.ReplicationTree.ReplNode.CommonHostProps.IP", "155.35.78.187");以下の表は、共通のマスタホストプロパティ名のリストです。
run API関数を使用すると、シナリオを実行できます。ベストプラクティスとしては、このrun APIをコールする前に、add  credentials  ex APIをコールしてマスタホストを認証します。引数run API関数には、以下のテーブルに記述されている引数が含まれています。
シナリオが正常に開始されると、trueを返します。それ以外の場合、この関数はfalseを返し、メッセージ引数としてエラ一の詳細な説明を提供します。気public bool run_example() { try { uint scenario_id = _scenario_id; //0:File Sync;1:Block Sync;2:Volume Sync uint sync_method = 0; bool ignore_same_files = true; bool arc_integrated = false; string message = "", return get_mng().run(_session_id, scenario_id, sync_method, ignore_same_files, arc_ integrated, 1, out message); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
stop APIを使用すると、実行中のシナリオを停止できます。引数stop API関数には、以下のテーブルに記述されている引数が含まれています。
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、why_not_reason引数で返されるメッセージを確認して、APIが失敗した理由を特定してください。気public bool stop_example() { try { uint scenario_id = _scenario_id; string why_not_reason = ""; bool execute_sync = true; return get_mng().stop(_session_id, scenario_id, execute_sync, out why_not_reason); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
suspend_replication API関数を使用すると、ホストのレプリケーション操作を一時停止できます。引数suspend_replication API関数には、以下のテーブルに記述されている引数が含まれています。
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。気public bool suspend_replication_example() { try { uint scenario_id = _scenario_id; string message = ""; bool execute_sync = true; uint replica_index = 2; return get_mng().suspend_replication(_session_id, scenario_id, replica_index, execute_sync, out message); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
close_session API関数を使用して、コントロールサービスからログアウトできます。コントロールサービスにログインした後、ログアウトするにはclose_session引数をコールします。引数close_session API関数には、以下のテーブルに記述されている引数が含まれています。
灵明位戻り値のタイプはブールです。戻り値がtrueの場合、セッションはクローズされました。戻り値がfalseの場合、セッションはクローズされませんでした。例public bool close_session_example() { try { string why_not_reason = ""; return get_mng().close_session(_session_id, out why_not_reason); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
add_credentials_ex API関数を使用すると、ホストの認証情報を追加できます。引数add_credentials_ex API関数には、以下のテーブルに記述されている引数が含まれています。
灵明植戻り値のタイプはulongです。戻り値がゼロの場合は、APIが正常に完了したことを示します。戻り値がゼロでない場合、APIは失敗しました。例public bool add_credentials_ex_example() { try { uint scenario_id = _scenario_id; //Add credential for Master string host_ip = "155.35.66.138"; uint port = 25000; string user_name = "administrator"; string password = "caworld"; string domain_name = "155.35.66.138"; ulong res = get_mng().add_credentials_ex(_session_id, scenario_id, host_ip, port, user_name, password, domain_name); //Add credential for Replica host_ip = "155.35.66.142"; domain_name = "155.35.66.142"; res = get_mng().add_credentials_ex(_session_id, scenario_id, host_ip, port, user_ name, password, domain_name); return (res == 0); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
add_bab_credentials APIを使用すると、<caab>にアクセスするために認証情報を追加できます。引数add_bab_credentials API関数には、以下のテーブルに記述されている引数が含まれています。
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。例public bool add_bab_credentials_example() { try { uint scenario_id = _scenario_id; string username = "admin"; string password = "caworld"; ulong async_id = 0; bool res = get_mng().add_bab_credentials(_session_id, scenario_ id,username,password,out async_id); return res; } catch (Exception ex) System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
update_scenario API関数を使用すると、実行時にシナリオデータを更新できます。引敦update_scenario API関数には、以下のテーブルに記述されている引数が含まれています。
展明値戻り値は、XML形式でシナリオのデ一タを提供します。気public bool update_scenario_example() { try { uint scenario_id = _scenario_id; string why_not_reason = ""; string scenario_data_str = get_mng().get_scenario_data(scenario_id); //do some changes for the scenario. return get_mng().update_scenario(_session_id, scenario_id, ref scenario_data_str, out why_not_reason); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
remove_scenario API関数を使用すると、コントロールサービスからシナリオを削除できます。引数remove_scenario API関数には、以下のテーブルに記述されている引数が含まれています。
展明値戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。例public bool remove_scenario_example() { try { uint scenario_id = _scenario_id; bool arc_integrated = false; string why_not_reason = ""; return get_mng().remove_scenario(_session_id, scenario_id, arc_integrated, out why_ not_reason); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
import_scenario API関数を使用すると、シナリオをコントロールサービスにインポートできます。引数import_scenario API関数には、以下のテーブルに記述されている引数が含まれています。
灵明植戻り値は、XML形式でシナリオのデ一タを提供します。気public bool import_scenario_example() { try { uint scenario_id = 0; string why_not_reason = ""; string scenario_data = "load the data from a scenario file."; uint group_id = 0xFFFFFFFF; return get_mng().import_scenario(_session_id, group_id,scenario_data,out scenario_ id,out why_not_reason); } catch (Exception ex) System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
synchronize API関数を使用すると、シナリオのデータを同期できます。引数synchronize API関数には、以下のテーブルに記述されている引数が含まれています。
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。例public bool synchronize_example() { try { uint scenario_id = _scenario_id; string message = ""; bool execute_sync = true; uint sync_method = 1; bool ignore_same_files = false; return get_mng().synchronize(_session_id, scenario_id, sync_method, ignore_same_ files, execute_sync, out message); } catch (Exception ex) {
System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
resume_replication API関数を使用すると、ホストのレプリケーション操作を再開できます。引数suspend_replication API関数には、以下のテーブルに記述されている引数が含まれています。
凤羽植戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。気public bool resume_replication_example() { try { uint scenario_id = _scenario_id; string message = ""; bool execute_sync = true; uint replica_index = 2; return get_mng().resume_replication(_session_id, scenario_id, replica_index, execute_sync, out message); } catch (Exception ex) System.Windows.Forms.MessageBox.Show(ex.Message); }
return false; }
set_rewind_bookmark API関数を使用すると、シナリオのブックマ一クを設定できます。引数set_rewind_bookmark API関数には、以下のテーブルに記述されている引数が含まれています。

展明値
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。気public bool set_rewind_bookmark_example() { try { string scenario_id = _scenario_id.ToString(); uint host_index = 1; string why_not_reason = ""; string bookmark_msg = "test bookmark"; return get_mng().set_rewind_bookmark(scenario_id, host_index, bookmark_msg, out why_not_reason); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
ハイアベイラビリティシナリオ管理API
以下のセクションでは、ハイアベイラビリティシナリオを管理するためのAPIについて説明します。このセクションには、以下のトピックが含まれます。
start  ar API関数を使用すると、シナリオのアシュアードリカバリ操作 (AR)を実行できます。自動 ARを実行する際に、ARを停止する他のAPIをコールする必要はありません。AR操作が完了すると、ARは停止します。手動でARを実行する場合は、API resume  applicationをコールして、AR操作を停止します。引数start_ar API関数には、以下のテーブルに記述されている引数が含まれています。
灵形植戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。気public bool start_ar_example() { try { uint scenario_id = _scenario_id; string message = ""; bool execute_sync = true; uint replica_index = 2; bool auto_ar = true; return get_mng().start_ar(_session_id, scenario_id, replica_index, auto_ar, execute_ sync, out message); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
Is-aliveは、ノードのステ一タスを識別するために、レプリカサーバがマスタサーバに送信する電子信号です。ハイアベイラビリティシナリオの実行中に、レプリカサーバは定期的に電子信号( ping)をマスタサーバに送信します。デフォルトでは、 pingの間隔は30秒です。事前定義された期間(デフォルトでは300秒)の経過後、レプリカサーバがマスタサーバに対してpingを実行できない場合、スイッチオーバーイベントをトリガできます。 stop_is_alive API関数を使用すると、is-aliveチェックを一時停止できます。引敦stop  is  alive API関数には、以下のテーブルに記述されている引数が含まれています。

灵明植
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。気public bool stop_is_alive_example() { try { uint scenario_id = _ha_scenario_id; string err_messages = ""; bool execute_sync = true; return get_mng().stop_is_alive(session_id, scenario_id, execute_sync, out err_ messages); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
switchover API関数を使用すると、スイッチオーバ一操作を実行できます。フルシステムのハイアベイラビリティシナリオで、任意のレプリカサーバへのスイッチオーバー操作を実行できます。非フェールオーバーレプリカサーバにスイッチオーバーする場合、スイッチオーバー APIを呼び出す前に、execute  action APIを呼び出します。注:  execute  action APIは、例で記述されています。引数
switchover API関数には、以下のテーブルに記述されている引数が含まれています。
灵形植
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。気
例 1
public bool switchover_example() { try { uint scenario_id = _ha_scenario_id; string err_messages = ""; bool execute_sync = true; bool run_reverse_scenario = false; return get_mng().switchover(_session_id, scenario_id, execute_sync, run_reverse_ scenario, out err_messages); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }原2 public bool switchover_2nd_example() { try { set_xcmd_data("switchover", "switchover_index","3" ); uint scenario_id = _ha_scenario_id; string err_messages = ""; bool execute_sync = true; bool run_reverse_scenario = false; return get_mng().switchover(_session_id, scenario_id, execute_sync, run_reverse_ scenario, out err_messages); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }勇3デフォルトでは、Replication and High Availabilityは、事前定義済みのフェールオーバ、レプリカサーバへのスイッチオーバー操作を実行します。フルシステムのハイアベイラビリティシナリオで、非フェールオーバレプリカサーバへのスイッチオーバーを実行できます。ただし、スイッチオーバー APIを使用して、非フェールオーバサーバにスイッチオーバーする場合は、以下の例に示すように、スイッチオーバー APIを呼び出す前に、execute_action APIを呼び出します。 set_xcmd_data("switchover", "switchover_index","3" ); public bool set_xcmd_data(string cmd_name_str,string cmd_data_str,string cmd_ value_str) { try { string result_data = ""; string action_data; XmlDocument doc = new XmlDocument(); XmlNode actions = doc.CreateNode(XmlNodeType.Element, xomngapi.WANSync_ c.xo  actions, ""); XmlNode commonNode = doc.CreateNode(XmlNodeType.Element, xomngapi.WANSync_c.action_common_lab, ""); XmlAttribute attrSession = doc.CreateAttribute(xomngapi.WANSync_c.action_com_ session_id); XmlAttribute attrScenario = doc.CreateAttribute(xomngapi.WANSync_c.action_com_ scenario_id); XmlAttribute attrHostindex = doc.CreateAttribute(xomngapi.WANSync_c.action_com_ host index); XmlAttribute attrUsedfor = doc.CreateAttribute(xomngapi.WANSync_c.action_used_ for); attrSession.Value = xomngapi.WANSync_c.WANSync.session_id.ToString(); attrScenario.Value = this.id.ToString(); attrUsedfor.Value = xomngapi.WANSync_c.action_x_command_data; commonNode.Attributes.Append(attrSession); commonNode.Attributes.Append(attrScenario); commonNode.Attributes.Append(attrHostindex); commonNode.Attributes.Append(attrUsedfor); XmlNode xo_cmd = doc.CreateNode(XmlNodeType.Element, xomngapi.WANSync_ c.xo_cmd, ""); XmlAttribute cmd_name = doc.CreateAttribute(xomngapi.WANSync_c.action_cmd_ name); XmlAttribute cmd_data = doc.CreateAttribute(xomngapi.WANSync_c.action_cmd_ data); XmlAttribute cmd_value = doc.CreateAttribute(xomngapi.WANSync_c.action_cmd_ value); cmd_name.Value = cmd_name_str; cmd_data.Value = cmd_data_str; cmd_value.Value = cmd_value_str; xo_cmd.Attributes.Append(cmd_name); xo_cmd.Attributes.Append(cmd_data); xo_cmd.Attributes.Append(cmd_value); actions.AppendChild(commonNode); commonNode.AppendChild(xo_cmd); doc.AppendChild(actions); action_data = doc.OuterXml; string error; return get_mng().execute_action(action_data, true, out result_data, out error); } catch (System.Exception) { return false; }
Is-aliveは、ノードのステ一タスを識別するために、レプリカサーバがマスタサーバに送信する電子信号です。ハイアベイラビリティシナリオの実行中に、レプリカサーバは定期的に電子信号( ping)をマスタサーバに送信します。デフォルトでは、 pingの間隔は30秒です。事前定義された期間(デフォルトでは300秒)の経過後、レプリカサーバがマスタサーバに対してpingを実行できない場合、スイッチオーバーイベントをトリガできます。 start  is  alive API関数を使用すると、is-aliveチェックを再開できます。引敦
start  is  alive API関数には、以下のテーブルに記述されている引数が含まれています。
灵明植
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。気public bool start_is_alive_example() { try { uint scenario_id = _ha_scenario_id; string err_messages = ""; bool execute_sync = true; return get_mng().start_is_alive(session_id, scenario_id, execute_sync, out err_ messages); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
VSSスナップショット管理 API
以下のセクションでは、VSSスナップショットを管理するためのAPIについて説明します。このセクションには、以下のトピックが含まれます。
mount_snapshot API関数を使用すると、VSSスナップショットをレプリカサーバ上の特定のフォルダにマウントできます。引数mount  snapshot API関数には、以下のテーブルに記述されている引数が含まれています。
灵明植戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。気public bool mount_snapshot_example() { try { string host_name = "155.35.66.142"; string ip_string = "155.35.66.142"; ushort host_port = 25000; string mount_path = "c:/mount"; string snapshot_id = "{9CFDE664-62D5-4fd8-A304-2B664900B98F}"; string why_not_reason = ""; return get_mng().mount_snapshot(session_id, host_name, ip_string, host_port, snapshot_id, mount_path, out why_not_reason); } catch (Exception ex) System.Windows.Forms.MessageBox.Show(ex.Message); }
return false; }
unmount_snapshot API関数を使用すると、VSSスナップショットをフォルダからマウント解除できます。引数unmount  snapshot API関数には、以下のテーブルに記述されている引数が含まれています。
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。例public bool unmount_snapshot_example() { try { string host_name = "155.35.66.142"; string ip_string = "155.35.66.142"; ushort host_port = 25000; string snapshot_id = "{9CFDE664-62D5-4fd8-A304-2B664900B98F}"; string why_not_reason = ""; return get_mng().unmount_snapshot(session_id, host_name, ip_string, host_port, snapshot_id, out why_not_reason); } catch (Exception ex) System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
delete_snapshot API関数を使用すると、VSSスナップショットをレプリカサーバから削除できます。引敦delete  snapshot API関数には、以下のテーブルに記述されている引数が含まれています。
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。例public bool delete_snapshot_example() { try { string host_name = "155.35.66.142"; string ip_string = "155.35.66.142"; ushort host_port = 25000; string snapshot_id = "{9CFDE664-62D5-4fd8-A304-2B664900B98F}"; string why_not_reason = ""; return get_mng().delete_snapshot(session_id, host_name, ip_string, host_port, snapshot_id, out why_not_reason); } catch (Exception ex) System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
get_snapshot_list API関数を使用すると、ホストからVSSスナップショットのリストを取得できます。引敦get_snapshot_list API関数には、以下のテーブルに記述されている引数が含まれています。
戻り値のタイプはブールです。戻り値がtrueの場合、APIは正常に完了しています。戻り値がfalseの場合、APIは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。例public bool get_snapshot_list_example() { try { string host_name = "155.35.66.142"; string ip   string = "155.35.66.142"; ushort host_port = 25000; string snapshot_list = ""; string why_not_reason = ""; return get_mng().get_snapshot_list(session_id, host_name, ip_string, host_port, out snapshot_list, out why_not_reason); } catch (Exception ex) System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }
統計収集API
以下のセクションでは、シナリオに関する統計を収集するプロセスを管理するためのAPIについて説明します。このセクションには、以下のトピックが含まれます。
▪シナリオの統計の取得: get scenario data()
get_data_ex API関数を使用すると、以下のようなシナリオ情報をすべて取得できます。 ◾シナリオイベント▪シナリオの状態▪同期およびレプリケーションの統計パラメ一タmanager_dataはXML形式の文字列です。このデータにはすべてのシナリオ情報が含まれます。たとえば、シナリオステ一タス(実行中、停止など) 、イベント、シナリオ統計などです。XML形式の文字列とは、以下のようなものです。 <?xml version="1.0"?> <manager_data> • <scenarios> + <scenario signature="4636778060728034734" ha_type="Forward" is_arcserve_integrated="False" is_cdp="Fa id='1094498606'> + <scenario signature="4334615870148788711" is_arcserve_integrated="False" is_cdp="False" is_ass_rec="Fal +<scenario signature="14684688067413199200" ha type="Forward" is arcserve integrated="False" is cdp="f + <scenario signature="15270013466011305316" ha_type="Forward" is_arcserve_integrated="False" is_cdp="f id='43557253'> + <scenario signature="5773759741404806146" is_arcserve_integrated="False" is_cdp="False" is_ass_rec="Fal + <scenario signature="7020398949829650879" is_arcserve_integrated="False" is_cdp="False" is_ass_rec="Fal +<scenario signature="7044671085026122361" is_arcserve_integrated="False" is_cdp="False" is_ass_rec="Tru +<scenario signature="7920379657132428156" ha_type="Forward" is_arcserve_integrated="False" is_cdp="Fa d='3423940998'> </scenarios> + <scenario_groups> </manager_data>以下のセクションでは、XML文字列の使用方法を示します。
引数
このget  data  ex APIには、以下のテーブルに記述されている引数が含まれています。

長明値
戻り値のタイプはブールです。戻り値がtrueの場合、コマンドは正常に完了しています。戻り値がfalseの場合、コマンドは正常に完了しませんでした。戻り値がfalseの場合は、メッセージを確認してAPIが失敗した理由を特定してください。例例 1: public bool get_data_ex_example() { try { uint[] scenarios_with_statistics = new uint[] { _scenario_id }; uint request_flag = 1; ulong last_update_time = 0; string manager_data = ""; bool res = get_mng().get_data_ex(_session_id, scenarios_with_statistics, request_ flag, ref last_update_time, out manager_data); return res; } catch (Exception ex) System.Windows.Forms.MessageBox.Show(ex.Message); { } return false; }例 2:この関数は、get_data_ex()関数によって返されたXMLバッファデータ( manager_ data)を解析します。以下の例は、シナリオの実行時または停止時にシナリオの状態を取得する方法を示します。 string get_scenario_state (string manager_data, string scenario_name_or_id) { string scenario_state = "unknown"; XmlDocument manager_data_doc = new XmlDocument(); manager_data_doc.LoadXml(manager_data); XmlNode root_node = manager_data_doc.SelectSingleNode(".//manager_data"); if (root_node == null) { return scenario_state; } //get all the scenario data information XmlNode scenario_nodes = root_node.SelectSingleNode(".//シナリオ"); if (scenario_nodes == null) { return scenario_state; } foreach (XmlNode scenario_node in scenario_nodes.ChildNodes) { uint scenario_id = 0; string scenario_name = ""; XmlAttribute id_attr = scenario_node.Attributes["id"]; if (id_attr ! = null) scenario_id = Convert.ToUlnt32(id_attr.Value); XmlAttribute name_attr = scenario_node.Attributes["name"]; if (name_attr ! = null) scenario_name = name_attr.Value; if (scenario_name_or_id ! = scenario_id.ToString() && scenario_name_or_id.ToLower () ! = scenario_name.ToLower()) continue; //get the scenario status, running or stopped foreach (XmlNode node in scenario_node.ChildNodes) { //get the scenario state, running or stop if (0 == string.Compare("state", node.Name, true)) { if (node.Attributes["val"] ! = null) { scenario_state = node.Attributes["val"].Value.ToLower(); } } } } return scenario_state; }例3:この関数は、get_data_ex()関数によって返されたXMLバッファデータ( manager_ data)を解析します。以下の例は、シナリオのすべてのイベントを取得する方法を示します。 void get_scenario_events(string manager_data, string scenario_name_or_id, ref ArrayList events) { XmlDocument manager_data_doc = new XmlDocument(); manager_data_doc.LoadXml(manager_data); XmlNode root_node = manager_data_doc.SelectSingleNode(".//manager_data"); if (root_node == null) { return ; } //get all the scenario data information XmlNode scenario_nodes = root_node.SelectSingleNode(".//シナリオ"); if (scenario_nodes == null) { return ; } foreach (XmlNode scenario_node in scenario_nodes.ChildNodes) { uint scenario_id = 0; string scenario_name = ""; XmlAttribute id_attr = scenario_node.Attributes["id"]; if (id_attr ! = null) scenario_id = Convert.ToUlnt32(id_attr.Value); XmlAttribute name_attr = scenario_node.Attributes["name"]; if (name_attr ! = null) scenario_name = name_attr.Value; if (scenario_name_or_id ! = scenario_id.ToString() && scenario_name_or_id.ToLower () ! = scenario  name.ToLower()) continue; //get the scenario status, running or stopped foreach (XmlNode node in scenario_node.ChildNodes) { //get the scenario state, running or stop if (0 == string.Compare("gen", node.Name, true)) events.Add(new event_data_c(node)); } } } }例4:シナリオの同期/レプリケーションの統計を取得するには、scenarios_with_statisticsパラメ一タを定義します。このパラメ一タは配列です。複数のシナリオの統計を取得するには、それらのシナリオのIDを配列に追加します。 get_data_exは以下の統計を取得します:注も以下の画面は、転送および同期の統計情報のプロセスを示します。
最後の同期の統計情報:ファイル同期
†
この関数は、get_data_ex()関数によって返されたXMLバッファデータ( manager_ data)を解析します。以下のコードは、転送および同期の統計情報を取得する方法を示します(前の画面を参照してください) 。 void get_scenario_sync_statistics(string manager_data, string scenario_name_or_id, ref ArrayList sync_statistics) { XmlDocument manager_data_doc = new XmlDocument(); manager_data_doc.LoadXml(manager_data); XmlNode root_node = manager_data_doc.SelectSingleNode(".//manager_data"); if (root_node == null) { return; } //get all the scenario data information XmlNode scenario_nodes = root_node.SelectSingleNode(".//シナリオ"); if (scenario_nodes == null) { return; } foreach (XmlNode scenario_node in scenario_nodes.ChildNodes) { uint scenario_id = 0; string scenario_name = ""; XmlAttribute id_attr = scenario_node.Attributes["id"]; if (id_attr ! = null) scenario_id = Convert.ToUlnt32(id_attr.Value); XmlAttribute name_attr = scenario_node.Attributes["name"]; if (name_attr ! = null) scenario_name = name_attr.Value; if (scenario_name_or_id ! = scenario_id.ToString() && scenario_name_or_id.ToLower () ! = scenario_name.ToLower()) continue; //get the scenario status, running or stopped foreach (XmlNode node in scenario_node.ChildNodes) //get the scenario state, running or stop if (0 == string.Compare("statistics", node.Name, true)) { sync_statistics.Add(new host_statistics_c(node)); } } } }例5:以下のコードは、シナリオの同期統計情報を取得する方法を示します。 ArrayList sync_statistics = new ArrayList(); get_scenario_sync_statistics(manager_data, "FileServer 1", ref sync_statistics); //show the statistics foreach (host_statistics_c stat in sync_statistics) { //host name string host_name = stat.host_name; //transmission statistics foreach (transfer_to_replica_c trans in stat.trans_to_reps) { //handle the transfer data such as speed. ulong speed = trans.transmission_speed; } //sync statistics foreach (sync_statistics_host_c sync_host in stat.children_hosts) { //root directory foreach(sync_statistics_root_dir_c root_dir in sync_host.sync_root_dirs) { //root_dir.total_size } } }
get_scenario_data API関数を使用すると、シナリオIDを取得できます。引数get_scenario_data API関数には、以下のテーブルに記述されている引数が含まれています。
展明値戻り値は、シナリオのデータを提供します。気public bool get_scenario_data_example() { try { uint scenario_id = _scenario_id; string scenario_data_str = get_mng().get_scenario_data(session_id.scenario_id); return true; } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } return false; }