2.9. 示例:使用 Python 创建 NFS 数据存储

当 Red Hat Virtualization 环境被第一次创建时,它需要定义最少一个数据存储域和一个 ISO 存储域。数据存储域被用来存储虚拟机的磁盘镜像;ISO 存储域被用来存储在虚拟机上安装操作系统所需的安装介质。
API 类提供了访问存储域集合(名为 storagedomains)的功能。这个集合包括环境中的所有存储域。storagedomains 集合也可以被用来添加和删除存储域。

注意

这个示例中所提供的代码假设,远程 NFS 共享已经为在 Red Hat Virtualization 中使用进行了预配置。请参阅 Red Hat Virtualization 管理指南 来获得关于准备 NFS 共享的信息。

例 2.8. 使用 Python 创建 NFS 数据存储

这个 Python 示例在 storagedomains 集合中添加了一个 NFS 数据域。使用 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 集合获得的主机项。
    • 添加的存储域类型(dataisoexport)。
    • 使用的存储格式(v1v2v3)。
以上的步骤被组合为:
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).