Java SDK ガイド
Red Hat Virtualization Java SDK の使用
概要
第1章 概要 リンクのコピーリンクがクリップボードにコピーされました!
バージョン 3- Java ソフトウェア開発キットバージョン 3 では、Red Hat Enterprise Virtualization 3.6 の最新リリースの時点で Java ソフトウェア開発キットで提供されているクラスとメソッド構造との後方互換性があります。Red Hat Enterprise Virtualization 3.6 の Java ソフトウェア開発キットを使用して記述されたアプリケーションは、修正なしにこのバージョンで使用することができます。
バージョン 4- Java ソフトウェア開発キットバージョン 4 では、クラスやメソッド名および署名が更新されています。Red Hat Enterprise Virtualization 3.6 の Java ソフトウェア開発キットで記述されたアプリケーションは更新してからでないと、このバージョンでは使用できません。
1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Enterprise Linux 7 がインストールされたシステム。Server バージョンと Workstation バージョンがサポートされます。
- Red Hat Hat Virtualization エンタイトルメントのサブスクリプション。
重要
1.2. Java ソフトウェア開発キットのインストール リンクのコピーリンクがクリップボードにコピーされました!
手順1.1 Java ソフトウェア開発キットのインストール
- 必要なチャンネルを有効にします。
subscription-manager repos --enable=rhel-7-server-rpms subscription-manager repos --enable=rhel-7-server-rhv-4.0-rpms subscription-manager repos --enable=jb-eap-7-for-rhel-7-server-rpms
# subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-7-server-rhv-4.0-rpms # subscription-manager repos --enable=jb-eap-7-for-rhel-7-server-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 必要なパッケージをインストールします。
- バージョン 3 の場合:
yum install ovirt-engine-sdk-java ovirt-engine-sdk-javadoc
# yum install ovirt-engine-sdk-java ovirt-engine-sdk-javadocCopy to Clipboard Copied! Toggle word wrap Toggle overflow - バージョン 4 の場合:
yum install java-ovirt-engine-sdk4
# yum install java-ovirt-engine-sdk4Copy to Clipboard Copied! Toggle word wrap Toggle overflow
/usr/share/java/rhevm-sdk-java のディレクトリーにダウンロードされ、Java プロジェクトに追加できる状態となりました。
1.3. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
commons-beanutils.jarcommons-codec.jarhttpclient.jarhttpcore.jarjakarta-commons-logging.jarlog4j.jar
/usr/share/java から入手できます。
1.4. SSL の設定 リンクのコピーリンクがクリップボードにコピーされました!
1.4.1. SSL の設定 リンクのコピーリンクがクリップボードにコピーされました!
手順1.2 SSL の設定
- Red Hat Virtualization Manager で使用する証明書をダウンロードします。
注記
デフォルトでは、Red Hat Virtualization Manager で使用する証明書の場所は/etc/pki/ovirt-engine/ca.pemです。 - トラストストアを作成します。
keytool -import -alias "server.crt truststore" -file ca.crt -keystore server.truststore
$ keytool -import -alias "server.crt truststore" -file ca.crt -keystore server.truststoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow ApiまたはConnectionオブジェクトのインスタンスを構築する際には、trustStoreFileおよびtrustStorePasswordの引数を指定します。myBuilder.trustStoreFile("/home/username/server.truststore"); myBuilder.trustStorePassword("p@ssw0rd");myBuilder.trustStoreFile("/home/username/server.truststore"); myBuilder.trustStorePassword("p@ssw0rd");Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記
接続の作成時にtrustStoreFileオプションを指定しない場合には、Java SDK はシステム変数javax.net.ssl.trustStoreで指定したデフォルトのトラストストアを使用するように試行します。このシステム変数がトラストストアを指定しない場合は、Java SDK は$JAVA_HOME/lib/security/jssecacertsまたは$JAVA_HOME/lib/security/cacertsで指定のトラストストアを使用するように試行します。
1.4.2. ホストの検証 リンクのコピーリンクがクリップボードにコピーされました!
Connection クラスのインスタンスを構築している場合に、以下の引数を渡すとこの検証を無効にできます。
myBuilder.insecure(true);
myBuilder.insecure(true);
重要
第2章 ソフトウェア開発キットの使用 リンクのコピーリンクがクリップボードにコピーされました!
2.1. バージョン 3 での Red Hat Enterprise Virtualization Manager への接続 リンクのコピーリンクがクリップボードにコピーされました!
Api クラスは Red Hat Enterprise Virtualization 環境のオブジェクトに接続して操作するために使用する主要なクラスです。このクラスのインスタンスを宣言するには、ApiBuilder クラスのインスタンスを宣言して、builder メソッドでこのインスタンスに必要な引数を渡し、このインスタンス上で build メソッドを呼び出します。build メソッドは、Api クラスのインスタンスを返し、その後にこのクラスを変数に割り当てて、後続のアクションを実行する際に使用することができます。
例2.1 Red Hat Enterprise Virtualization Manager への接続
ApiBuilder クラスのインスタンスに渡すことができる主要な引数の一覧については、「付録A ApiBuilder メソッド」を参照してください。
注記
Api クラスは、Autocloseable インターフェースを実装しない点に注意してください。そのため、上記の例のように finally ブロック内の Api クラスのインスタンスをシャットダウンして Red Hat Virtualization Manager との接続が正常にシャットダウンされるようにすることを推奨します。
2.2. バージョン 4 での Red Hat Virtualization Manager への接続 リンクのコピーリンクがクリップボードにコピーされました!
Connection クラスは Red Hat Virtualization 環境のオブジェクトに接続して操作するために使用する主要なクラスです。このクラスのインスタンスを宣言するには、ConnectionBuilder クラスのインスタンスを宣言して、builder メソッドでこのインスタンスに必要な引数を渡し、このインスタンス上で build メソッドを呼び出します。build メソッドは、Connection クラスのインスタンスを返し、その後にこのクラスを変数に割り当てて、後続のアクションを実行する際に使用することができます。
例2.2 Red Hat Virtualization Manager への接続
ConnectionBuilder クラスのインスタンスに渡すことができる主要な引数の一覧については、「付録B ConnectionBuilder メソッド」を参照してください。
2.3. エンティティーの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
Api クラスの getVMs() メソッドを使用して一覧表示します。
手順2.1 エンティティーの一覧表示
- 一覧表示するエンティティーのタイプの
Listを宣言し、対応するメソッドを使用してエンティティーを一覧表示します。List<VM> vms = api.getVMs().list();
List<VM> vms = api.getVMs().list();Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. リソースの属性の変更 リンクのコピーリンクがクリップボードにコピーされました!
手順2.2 リソースの属性の変更
- 属性を変更するリソースのインスタンスを宣言します。
VM vm = api.getVMs().get("test");VM vm = api.getVMs().get("test");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 新しい属性値を設定します。
vm.setDescription("java_sdk");vm.setDescription("java_sdk");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用する仮想マシンを更新します。
VM newVM = vm.update();
VM newVM = vm.update();Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. リソースの取得 リンクのコピーリンクがクリップボードにコピーされました!
name および UUID の 2 つの属性で参照することができます。そのオブジェクトが存在している場合には、いずれも指定した属性のオブジェクトが返されます。
name 属性値を使用してリソースを取得するには、以下の方法を使用します。
VM vm = api.getVMs().get("test");
VM vm = api.getVMs().get("test");
UUID 属性値を使用してリソースを取得するには、以下の方法を使用します。
VM vm = api.getVMs().get(UUID.fromString("5a89a1d2-32be-33f7-a0d1-f8b5bc974ff6"));
VM vm = api.getVMs().get(UUID.fromString("5a89a1d2-32be-33f7-a0d1-f8b5bc974ff6"));
2.6. リソースの追加 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、VM クラスを宣言して、追加する新規仮想マシンを表現し、次にその仮想マシンの属性を希望する値に設定した後、最後に新規仮想マシンを Manager に追加します。
VM vm = api.getVMs().add(vmParams);
VM vm = api.getVMs().add(vmParams);
以下の例では、VM クラスのインスタンスは、例 1 と同じ方法で宣言しますが、get メソッドを使用して Manager 内の既存のオブジェクトを参照する方法の代わりに、各属性のインスタンスを宣言することによってその属性を参照します。最後に新規仮想マシンを Manager に追加します。
VM vm = api.getVMs().add(vmParams);
VM vm = api.getVMs().add(vmParams);
2.7. リソースに対するアクションの実行 リンクのコピーリンクがクリップボードにコピーされました!
手順2.3 リソースに対するアクションの実行
- リソースのインスタンスを宣言します。
VM vm = api.getVMs().get("test");VM vm = api.getVMs().get("test");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - リソースに送るアクションパラメーターを宣言します。
Action actionParam = new Action(); org.ovirt.engine.sdk.entities.VM vmParam = new org.ovirt.engine.sdk.entities.VM(); actionParam.setVm(vmParam);
Action actionParam = new Action(); org.ovirt.engine.sdk.entities.VM vmParam = new org.ovirt.engine.sdk.entities.VM(); actionParam.setVm(vmParam);Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アクションを実行します。
Action res = vm.start(actionParam);
Action res = vm.start(actionParam);Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8. サブリソースの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
手順2.4 サブリソースの一覧表示
- 一覧表示するサブリソースが含まれているリソースのインスタンスを宣言します。
VM vm = api.getVMs().get("test");VM vm = api.getVMs().get("test");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - サブリソースを一覧表示します。
List<VMDisk> disks = vm.getDisks().list();
List<VMDisk> disks = vm.getDisks().list();Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9. サブリソースの取得 リンクのコピーリンクがクリップボードにコピーされました!
手順2.5 リソースのサブリソースの取得
- 参照するサブリソースが含まれているリソースのインスタンスを宣言します。
VM vm = api.getVMs().get("test");VM vm = api.getVMs().get("test");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 参照するサブリソースのインスタンスを宣言します。
VMDisk disk = vm.getDisks().get("my disk");VMDisk disk = vm.getDisks().get("my disk");Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.10. リソースへのサブリソース追加 リンクのコピーリンクがクリップボードにコピーされました!
手順2.6 リソースへのサブソースの追加
- サブリソースを追加するリソースのインスタンスを宣言します。
VM vm = api.getVMs().get("test");VM vm = api.getVMs().get("test");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - そのリソースの属性を定義するパラメーターを作成します。
Disk diskParam = new Disk(); diskParam.setProvisionedSize(1073741824L); diskParam.setInterface("virtio"); diskParam.setFormat("cow");Disk diskParam = new Disk(); diskParam.setProvisionedSize(1073741824L); diskParam.setInterface("virtio"); diskParam.setFormat("cow");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - サブリソースを追加します。
Disk disk = vm.getDisks().add(diskParam);
Disk disk = vm.getDisks().add(diskParam);Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.11. サブリソースの変更 リンクのコピーリンクがクリップボードにコピーされました!
手順2.7 サブリソースの更新
- 変更するサブリソースが含まれているリソースのインスタンスを宣言します。
VM vm = api.getVMs().get("test");VM vm = api.getVMs().get("test");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更するサブリソースのインスタンスを宣言します。
VMDisk disk = vm.getDisks().get("test_Disk1");VMDisk disk = vm.getDisks().get("test_Disk1");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 新しい属性値を設定します。
disk.setAlias("test_Disk1_updated");disk.setAlias("test_Disk1_updated");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - サブリソースを更新します。
VMDisk updateDisk = disk.update();
VMDisk updateDisk = disk.update();Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.12. サブリソースに対するアクションの実行 リンクのコピーリンクがクリップボードにコピーされました!
手順2.8 サブリソースに対するアクションの実行
- アクションを実行する対象となるサブリソースが含まれているリソースのインスタンスを宣言します。
VM vm = api.getVMs().get("test");VM vm = api.getVMs().get("test");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - サブリソースのインスタンスを宣言します。
VMDisk disk = vm.getDisks().get("test_Disk1");VMDisk disk = vm.getDisks().get("test_Disk1");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - サブリソースに送信するアクションパラメーターを宣言します。
Action actionParam = new Action();
Action actionParam = new Action();Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アクションを実行します。
Action result = disk.activate(actionParam);
Action result = disk.activate(actionParam);Copy to Clipboard Copied! Toggle word wrap Toggle overflow
付録A ApiBuilder メソッド リンクのコピーリンクがクリップボードにコピーされました!
ApiBuilder クラスで利用可能な主要メソッドについて説明します。
| メソッド | 引数タイプ | 説明 |
|---|---|---|
user | 文字列 | Manager への接続に使用するユーザー。admin@internal のようにユーザー名とドメインの両方を指定する必要があります。このメソッドは、password メソッドと合わせて使用する必要があります。 |
password | 文字列 | Manager への接続に使用するユーザーのパスワード。 |
sessionID | 文字列 | Manager への接続に使用するセッションの ID。Manager の認証が済んでいて、セッションが利用できる場合には、ユーザー名とパスワードではなくこの引数を指定することができます。 |
requestTimeout | 整数 | 要求に応答するまで待機するタイムアウトの値 (秒)。この値よりも長く、要求に応答するまでに時間がかかった場合には、要求はキャンセルされ、例外が送出されます。この引数は任意です。 |
sessionTimeout | 整数 | Manager に要求が出されない場合にアクティブなセッションを破棄する |
persistentAuth | ブール値 | cookie を使用した永続的な認証を有効化または無効化します。デフォルトではこのオプションは有効となっているため、このオプションを無効にする場合のみこのメソッドが必要です。 |
noHostVerification | ブール値 | Manager のホスト先のサーバーが公開する SSL 証明書のホスト名の検証を有効化または無効化します。デフォルトでは、ホスト名のアイデンティティーは検証され、ホスト名が正しくない場合には接続が拒否されます。そのため、このオプションを無効にする場合のみこのメソッドが必要です。 |
keyStorePath | 文字列 | Manager のホスト先のサーバーが公開する証明書の検証に使用する CA 証明書が含まれるファイルの場所を指定します。このメソッドは、keyStorePassword メソッドと合わせて使用する必要があります。 |
keyStorePassword | 文字列 | keyStorePath メソッドで指定するキーストアファイルにアクセスする際に使用するパスワード。 |
filter | ブール値 | 要求を行うユーザーのパーミッションをベースにしたオブジェクトのフィルタリングを有効化または無効化します。デフォルトでは、このオプションは無効になっており、この環境内のオブジェクトがすべてユーザーに表示されます。このメソッドは、要求を行うユーザーにだけ環境内のオブジェクトを表示するように制限する際にのみ必要です。 |
debug | ブール値 | デバッグの出力を有効化または無効化します。デフォルトでは、このオプションは無効になっています。 |
付録B ConnectionBuilder メソッド リンクのコピーリンクがクリップボードにコピーされました!
ConnectionBuilder クラスで利用可能な主要メソッドについて説明します。
| メソッド | 引数タイプ | 説明 |
|---|---|---|
user | 文字列 | Manager への接続に使用するユーザー。admin@internal のようにユーザー名とドメインの両方を指定する必要があります。このメソッドは、password メソッドと合わせて使用する必要があります。 |
password | 文字列 | Manager への接続に使用するユーザーのパスワード。 |
compress | ブール値 | Manager をホストしているサーバーからの応答を圧縮するべきかどうかを指定します。デフォルトでは、このオプションは無効になっているため、このオプションを有効にする場合のみにこのメソッドは必要です。 |
timeout | 整数 | 要求に応答するまで待機するタイムアウトの値 (秒)。要求への応答時間がこの値よりも長い場合には、要求はキャンセルされ、例外が送出されます。この引数は任意です。 |
ssoUrl | 文字列 | Manager をホストするサーバーのベース URL。たとえば、パスワード認証には https://server.example.com/ovirt-engine/sso/oauth/token?\grant_type=password&scope=ovirt-app-api を使用します。 |
ssoRevokeUrl | 文字列 | SSO 呼び出しサービスのベース URL。外部認証サービスを使用する場合にのみこのオプションを指定する必要があります。デフォルトでは、engine の一部となっている SSO サービスを使用して SSO トークンの呼び出しが実行されるように、この URL は自動的に url オプションの値から算出されます。 |
ssoTokenName | 文字列 | SSO サーバーから返される JSON SSO の応答にあるトークン名。デフォルトでは、この値は access_token です。 |
insecure | ブール値 | Manager のホスト先のサーバーが公開する SSL 証明書のホスト名の検証を有効化または無効化します。デフォルトでは、ホスト名のアイデンティティーは検証され、ホスト名が正しくない場合には接続が拒否されます。そのため、このオプションを無効にする場合のみこのメソッドが必要です。 |
trustStoreFile | 文字列 | Manager のホスト先のサーバーが公開する証明書の検証に使用する CA 証明書が含まれるファイルの場所を指定します。このメソッドは、trustStorePassword メソッドと合わせて使用する必要があります。 |
trustStorePassword | 文字列 | trustStorePath メソッドで指定するキーストアファイルにアクセスする際に使用するパスワード。 |
付録C 改訂履歴 リンクのコピーリンクがクリップボードにコピーされました!
| 改訂履歴 | |||
|---|---|---|---|
| 改訂 4.0-1.1 | Thu Aug 25 2016 | ||
| |||
| 改訂 4.0-1 | Wed 15 Jun 2016 | ||
| |||