Hitachi

Hitachi Command Suite Configuration Manager REST API リファレンスガイド


21.1 サンプルコードの概要

REST APIを呼び出して使用する際の参考情報として、Pythonで書かれたサンプルコードを提供します。サンプルコードには、オブジェクトの情報取得、新規作成、属性変更といった、クライアントプログラムで必要とされる基本的なコードの構成要素が含まれています。サンプルコードでは、例としてボリューム割り当てやコピーペア作成などの操作を対象にしていますが、そのほかの操作についても、サンプルコードに含まれる構成要素を応用してプログラムを構築できます。

サンプルコードの構成要素

サンプルコードでは、次の操作を実行します。

上記の操作には、次のようなコードの構成要素が含まれます。

  1. REST APIを呼び出す前に実行する処理
    • JSON形式によるリクエストボディの生成
    • フォームデータの作成
    • リクエストヘッダの指定(既定のHTTPヘッダの場合、カスタムHTTPヘッダの場合)
    • ユーザ認証情報の設定(ユーザIDとパスワードによる認証の場合、セッションベースの認証の場合)
    • リソースのURL取得(オブジェクトIDを指定しない場合、操作結果から取得したオブジェクトIDを指定する場合、単一インスタンスなどの固定のオブジェクトIDを指定する場合
  2. REST APIを呼び出す処理
    • GET操作によるREST APIバージョン情報の取得
    • GET操作によるオブジェクトの取得(特定のオブジェクトを取得する場合)
    • GET操作によるオブジェクトの取得(情報検索で取得する場合)
    • GET操作による Action テンプレートの取得
    • PUT操作によるオブジェクトの属性変更
    • PUT操作によるAction テンプレートを使用したアクションの実行
    • PUT操作によるオブジェクトに対するアクションの実行
    • PUT操作によるサービスのアクションの実行
    • POST操作によるオブジェクトの新規作成
    • POST操作によるオブジェクトに対するアクションの実行
    • 複数装置でのセッション生成を必要とする操作(リモートコピー操作)
    • DELETE操作によるオブジェクトの削除
  3. REST APIを呼び出したあとに実行する処理
    • 取得した情報の出力
    • ジョブの実行結果の取得
    • 操作結果が反映されたリソースのURL取得
    • エラーコードの取得
    • エラーメッセージの出力
サンプルコード中での、各コードの構成要素の使用例を次に示します。コードの具体的な内容については、それぞれのサンプルコードの説明を参照してください。

コードの構成要素

サンプルコードでの使用例

対応するサンプルコード

JSON形式によるリクエストボディの生成

HTTPリクエストの発行と非同期処理の状態確認のための関数の定義

ボリューム割り当て

ShadowImageペア操作

HDPボリュームの作成

ボリューム割り当て

ShadowImageペアの作成

ShadowImageペア操作

フォームデータの作成

転送先syslogサーバのルート証明書のアップロード

転送先syslogサーバのクライアント証明書のアップロード

ファイルアップロード(監査ログ転送先設定)

リクエストヘッダの指定(既定のHTTPヘッダの場合)

ヘッダの定義

ボリューム割り当て

ShadowImageペア操作

リモートストレージシステムの情報登録

TrueCopy ペア操作

リクエストヘッダの指定(カスタムHTTPヘッダの場合)

ヘッダの定義

ShadowImageペア操作

ユーザ認証情報の設定(ユーザIDとパスワードによる認証の場合)

セッションの生成

ボリューム割り当て

ShadowImageペア操作

リモートストレージシステムの情報登録

TrueCopyペア操作

ユーザ認証情報の設定(セッションベースの認証の場合)

HTTPリクエストの発行と非同期処理の状態確認のための関数の定義

ボリューム割り当て

ShadowImageペア操作

HDPボリュームの作成

ボリューム割り当て

ShadowImageペアの分割

ShadowImageペア操作

リソースのURL取得(オブジェクトIDを指定しない場合)

HDPボリュームの作成(BlockStorageAPI.ldevs)

ボリューム割り当て

ホストグループの作成(BlockStorageAPI.host_groups)

ボリューム割り当て

ShadowImageペアの作成 (BlockStorageAPI.local_copy_pairs)

ShadowImageペア操作

リソースのURL取得(操作結果から取得したオブジェクトIDを指定する場合)

ホストグループの作成(BlockStorageAPI.affected_resource)

ボリューム割り当て

ShadowImageペアの作成 (BlockStorageAPI.affected_resource)

ShadowImageペア操作

リソースのURL取得(単一インスタンスなどの固定のオブジェクトIDを指定する場合)

転送先syslogサーバの設定(BlockStorageAPI.auditlog_syslog)

転送先syslogサーバへのテストメッセージ送信(BlockStorageAPI.auditlog_syslog_send_test)

ファイルアップロード(監査ログ転送先設定)

暗号化鍵バックアップファイルのダウンロード(BlockStorageAPI.encryption_key_file_backup)

ファイルダウンロード(暗号化鍵バックアップ)

GET操作によるREST APIバージョン情報の取得

REST APIのバージョンの確認(BlockStorageAPI.api_version)

ボリューム割り当て

ShadowImageペア操作

リモートストレージシステムの情報登録

TrueCopyペア操作

GET操作によるオブジェクトの取得(特定のオブジェクトを取得する場合)

HDPボリュームの情報取得(BlockStorageAPI.ldev)

ボリューム割り当て

ShadowImageペアの情報取得

ShadowImageペア操作

GET操作によるオブジェクトの取得(情報検索で取得する場合)

HDPボリュームの作成 (BlockStorageAPI.views_undefined_ldev)

ボリューム割り当て

GET操作によるActionテンプレートの取得

ShadowImageペアの分割 (BlockStorageAPI.split_local_copy _pair_template)

ShadowImageペア操作

GET操作によるジョブの状態取得

HTTPリクエストの発行と非同期処理の状態確認のための関数の定義

ボリューム割り当て

ShadowImageペア操作

リモートストレージシステムの情報登録

非同期処理の状態変化取得のための関数の定義

TrueCopyペア操作

PUT操作によるオブジェクトの属性変更

ホストモードの変更

ボリューム割り当て

PUT操作によるAction テンプレートを使用したアクションの実行

ShadowImageペアの分割(BlockStorageAPI.split_local_copy_pair)

ShadowImageペア操作

PUT操作によるオブジェクトに対するアクションの実行

転送先syslogサーバへのテストメッセージ送信

ファイルアップロード(監査ログ転送先設定)

PUT操作によるサービスのアクションの実行

リソースのロック

リソースのアンロック

TrueCopyペア操作

POST操作によるオブジェクトの新規作成

HDPボリュームの作成 (BlockStorageAPI.ldevs)

ホストのWWNの登録 (BlockStorageAPI.host_wwns)

ホストグループの作成(BlockStorageAPI.host_groups)

LUパスの設定(BlockStorageAPI.luns)

ボリューム割り当て

ShadowImageペアの作成 (BlockStorageAPI.local_copy_pairs)

ShadowImageペア操作

POST操作によるオブジェクトに対するアクションの実行

転送先syslogサーバのルート証明書のアップロード

転送先syslogサーバのクライアント証明書のアップロード

ファイルアップロード(監査ログ転送先設定)

複数装置でのセッション生成を必要とする操作(リモートコピー操作)

TrueCopyペアの作成

TrueCopyペア操作

DELETE 操作によるオブジェクトの削除

セッションの破棄

ボリューム割り当て

ShadowImageペア操作

リモートストレージシステムの情報登録

TrueCopyペア操作

取得した情報の出力

HDPボリュームの情報取得

ボリューム割り当て

ShadowImage ペアの 情報取得

ShadowImageペア操作

ジョブの実行結果の取得

HTTPリクエストの発行と非同期処理の状態確認のための関数の定義(BlockStorageAPI.job)

ボリューム割り当て

ShadowImageペア操作

リモートストレージシステムの情報登録

非同期処理の状態変化取得のための関数の定義

TrueCopyペア操作

操作結果が反映されたリソースのURL取得

HTTPリクエストの発行と非同期処理の状態確認のための関数の定義

ボリューム割り当て

ShadowImageペア操作

リモートストレージシステムの情報登録

非同期処理の状態変化取得のための関数の定義

TrueCopyペア操作

エラーコードの取得

HTTPリクエストの発行と非同期処理の状態確認のための関数の定義

ボリューム割り当て

ShadowImageペア操作

リモートストレージシステムの情報登録

非同期処理の状態変化取得のための関数の定義

TrueCopyペア操作

エラーメッセージの出力

エラーメッセージの出力

ボリューム割り当て

ShadowImageペア操作

リモートストレージシステムの情報登録

TrueCopyペア操作

サンプルコードの構造

サンプルコードでは、次の操作を共通化し、メインの操作から関数として呼び出して実行しています。それぞれの関数の詳細については、サンプルコードで使用している関数の説明を参照してください。
  • URLの生成 (BlockStorageAPIクラス)

    ストレージシステムへのHTTPリクエストを発行するためのURLを生成します。

  • HTTPリクエストの発行と非同期処理の状態確認(invoke_async_command)

    HTTPリクエストを発行し、さらに非同期処理の実行結果が反映されたかどうかを確認して結果を返します。

  • 非同期処理の状態変化取得(wait_until_jobstatus_is_changed)

    パラメータで指定した状態にジョブが遷移したことを確認して結果を返します。

サンプルコードのファイル

サンプルコードとして提供されるファイルとその内容について説明します。
  • register_storage.py

    ストレージシステムの情報登録のサンプルコードを記載したファイルです。

  • provisioning.py

    ボリューム割り当てのサンプルコードを記載したファイルです。

  • local_copy.py  

    ShadowImageペア操作のサンプルコードを記載したファイルです。

  • register_remote_storage.py

    リモートストレージシステムの情報登録のサンプルコードを記載したファイルです。

  • synchronous_remote_copy.py

    TrueCopyペア操作のサンプルコードを記載したファイルです。

  • auditlog_syslog_server_setting.py

    ファイルアップロード(監査ログ転送先設定)のサンプルコードを記載したファイルです。

  • backup_encryption_keys.py

    ファイルダウンロード(暗号化鍵バックアップ)のサンプルコードを記載したファイルです。

  • recreate_parity_group.py

    パリティグループ再作成(データの暗号化)のサンプルコードを記載したファイルです。

  • block_storage_api.py

    リクエストラインを生成する関数を、BlockStorageAPIクラスとして定義したファイルです。

  • rest_server_param.py

    REST APIサーバがインストールされているサーバの情報を定義したファイルです。

  • storage_param.py

    ローカルストレージシステムの情報を定義したファイルです。

  • remote_copy_param.py

    リモートストレージシステムとローカルストレージシステムの情報を定義したファイルです。

サンプルコードのファイルは、インストールメディアに格納されています。
Windowsの場合
DVD-ROMドライブ>:\ConfManager\samplecode.zip
Linuxの場合
DVD-ROMのマウントディレクトリ>/ConfManager/samplecode.tar

サンプルコードの動作環境

サンプルコードは、スクリプト言語のPythonで作成されています。Pythonは可読性に優れ、Webサービス開発において広く普及している汎用性の高い言語です。Pythonの公式サイト(https://www.python.org/)から Pythonをダウンロードし、動作環境を構築してください。

この章に記載しているサンプルコードでは、標準ライブラリ(json、sys、http.client、time、traceback)を使用します。また、標準ライブラリのほかに、サードパーティライブラリであるRequestsライブラリを使用します。 Requestsライブラリのダウンロードページからダウンロードしてください。

なお、この章に記載しているサンプルコードは、Python3.7.5およびRequests2.13.0の環境で動作確認しています。

ヒント

サンプルコードでは、REST APIクライアントとストレージシステム間のSSL通信で使用するサーバ証明書が自己署名証明書の場合に発生するエラーを回避するため、リクエスト発行時にサーバ証明書の検証処理をスキップするよう指定しています。