2.9. 例: Python を使用した NFS データストレージの作成

Red Hat Virtualization 環境の初回作成時には、少なくともデータストレージドメインを 1 つと ISO ストレージドメインを 1 つ定義する必要があります。データストレージドメインは、仮想マシンのディスクイメージを格納するのに使用する一方、ISO ストレージドメインはゲストオペレーティングシステムのインストールメディアを格納するのに使用します。
API クラスは、storagedomains という名前のストレージドメインコレクションへのアクセスを提供します。このコレクションには、環境内の全ストレージドメインが含まれています。storagedomains コレクションはストレージドメインの追加と削除に使用することができます。

注記

以下の例に記載したコードは、リモートの NFS 共有が Red Hat Virtualization 用に事前設定済みであることを前提としています。NFS 共有の使用準備に関する詳しい説明は、『Red Hat Virtualization 管理ガイド』を参照してください。

例2.8 Python を使用した NFS データストレージの作成

以下の Python の例は、NFS データドメインを storagedomains コレクションに追加します。Python を使用した NFS ストレージドメイン追加は以下のような手順で行います。
  1. datacenters コレクションの get メソッドを使用して、ストレージをアタッチする必要のあるデータセンターを特定します。
    dc = api.datacenters.get(name="Default")
  2. hosts コレクションの get メソッドを使用して、ストレージのアタッチに使用する必要のあるホストを特定します。
    h = api.hosts.get(name="Atlantic")
  3. NFS ストレージドメインの Storage パラメーターを定義します。以下の例では、NFS の場所に 192.0.43.10/storage/data を使用しています。
    s = params.Storage(address="192.0.43.10", path="/storage/data", type_="nfs")
  4. storagedomains コレクションの add メソッドを使用して、ストレージドメイン作成を要求します。Storage パラメーターに加えて、以下の情報をすべて渡す必要があります。
    • ストレージドメインの名前
    • datacenters コレクションから取得したデータセンターオブジェクト
    • hosts コレクションから取得したホストオブジェクト
    • 追加するストレージドメインのタイプ (dataiso、または export)
    • 使用するストレージフォーマット (v1v2、または v3)。
これらの手順を組み合わせた完全なスクリプトは以下のようになります。
from ovirtsdk.api import API
from ovirtsdk.xml import params

try:
    api = API (url="https://HOST",
               username="USER@DOMAIN",
               password="PASS",
               ca_file="ca.crt")

    dc = api.datacenters.get(name="Default")
    h = api.hosts.get(name="Atlantic")

    s = params.Storage(address="192.0.43.10", path="/storage/data", type_="nfs")
    sd_params = params.StorageDomain(name="data1", data_center=dc, host=h, type_="data", storage_format="v3", storage=s)

    try:
        sd = api.storagedomains.add(sd_params)
        print "Storage Domain '%s' added (%s)." % (sd.get_name())
    except Exception as ex:
        print "Adding storage domain failed: %s" % ex

    api.disconnect()

except Exception as ex:
    print "Unexpected error: %s" % ex
add メソッド呼び出しが成功した場合は、スクリプトによって以下のような出力が表示されます。
Storage Domain 'data1' added (bd954c03-d180-4d16-878c-2aedbdede566).