2.16. 例: Python を使用した仮想マシンのストレージディスクの作成

新規作成した仮想マシンが永続的なストレージに確実にアクセスできるようにするには、ディスクを作成してアタッチする必要があります。

例2.15 Python を使用した仮想マシンストレージの作成

以下の Python の例は、8 GB の virtio ディスクドライブを作成し、vm1 という名前の仮想マシンにアタッチします。この例のディスクは、以下の条件を満たしている必要があります。
  • data1 という名前のストレージドメイン上に格納されること。
    disk_storage_domain = params.StorageDomains(storage_domain=[api.storagedomains.get(name="data1")])
  • サイズは 8 GB とすること。
    disk_size = 8*1024*1024
  • ディスクタイプは、(data ではなく) system タイプであること。
    disk_type = "system"
  • virtio ストレージデバイスであること。
    disk_interface = "virtio"
  • cow フォーマットで格納されること。
    disk_format = "cow"
  • 使用可能なブートデバイスとしてマークされること。
    disk_bootable = True
上記のオプションは、仮想マシンの disks コレクションの add メソッドを使用してディスク自体を作成する前に、ディスクパラメーターオブジェクトに組み込みます。
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")

    vm = api.vms.get(name="vm1")

    sd = params.StorageDomains(storage_domain=[api.storagedomains.get(name="data1")])
    disk_size = 8*1024*1024
    disk_type = "system"
    disk_interface = "virtio"
    disk_format = "cow"
    disk_bootable = True

    disk_params = params.Disk(storage_domains=sd,
                              size=disk_size,
                              type_=disk_type,
                              interface=disk_interface,
                              format=disk_format,
                              bootable=disk_bootable)

    try:
        d = vm.disks.add(disk_params)
        print "Disk '%s' added to '%s'." % (d.get_name(), vm.get_name())
    except Exception as ex:
        print "Adding disk to '%s' failed: %s" % (vm.get_name(), ex)

    api.disconnect()

except Exception as ex:
    print "Unexpected error: %s" % ex
add 要求が成功した場合には、スクリプトにより以下のような出力が表示されます。
Disk 'vm1_Disk1' added to 'vm1'.