2.16. 例:Python を使用した ISO イメージの仮想マシンへのアタッチ
新しく作成された仮想マシンにゲストオペレーティングシステムのインストールを開始するには、オペレーティングシステムのインストールメディアを含む ISO ファイルを割り当てる必要があります。
例2.15 ISO イメージの特定
ISO イメージは、ISO ストレージドメインにアタッチされた
ファイル
コレクションにあります。この例では、ISO ストレージドメイン上の files
コレクションの内容を一覧表示します。
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") sd = api.storagedomains.get(name="iso1") iso = sd.files.list() for i in iso: print "%s" % i.get_name() except Exception as ex: print "Unexpected error: %s" % ex
成功すると、スクリプトは
files
コレクションにある各ファイルで以下のようなエントリーを出力します。
RHEL6.3-Server-x86_64-DVD1.iso
ISO ドメインのファイルは、ファイルの
id
属性と name
属性を一意に付ける必要があるため、共有されている必要があることに注意してください。
例2.16 Python を使用した仮想マシンへの ISO イメージのアタッチ
この Python の例では、
RHEL6.3-Server-x86_64-DVD1.iso
ISO イメージファイルを vm1
仮想マシンに割り当てます。イメージファイルが特定されると、仮想マシンの cdroms
コレクションの 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") sd = api.storagedomains.get(name="iso1") cd_iso = sd.files.get(name="RHEL6.3-Server-x86_64-DVD1.iso") cd_vm = api.vms.get(name="vm1") cd_params = params.CdRom(file=cd_iso) try: cd_vm.cdroms.add(cd_params) print "Attached CD to '%s'." % cd_vm.get_name() except Exception as ex: print "Failed to attach CD to '%s': %s" % (cd_vm.get_name(), ex) api.disconnect() except Exception as ex: print "Unexpected error: %s" % ex
追加
要求に成功すると、スクリプトにより以下が出力されます。
Attached CD to 'vm1'.
注記
この手順では、ステータスが
Down
の仮想マシンに ISO イメージをアタッチします。Up
ステータスの仮想マシンに ISO をアタッチするには、2 番目の try
ステートメントを以下のように変更します。
try: cdrom=cd_vm.cdroms.get(id="00000000-0000-0000-0000-000000000000") cdrom.set_file(cd_iso) cdrom.update(current=True) print "Attached CD to '%s'." % cd_vm.get_name() except: print "Failed to attach CD to '%s': %s" % (cd_vm.get_name(), ex)
例2.17 Python を使用した仮想マシンからの CD-ROM の取り出し
仮想マシンの
cdrom
コレクションから ISO を取り出します。
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") sd = api.storagedomains.get(name="iso1") vm = api.vms.get(name="vm1") try: vm.cdroms.get(id="00000000-0000-0000-0000-000000000000").delete() print "Removed CD from '%s'." % vm.get_name() except Exception as ex: print "Failed to remove CD from '%s': %s" % (vm.get_name(), ex) api.disconnect() except Exception as ex: print "Unexpected error: %s" % ex