2.3.5. 添加


添加 方法添加新的元素到集合。它们接收描述要添加的对象、发送请求以进行添加的请求,并返回描述添加对象的类型的实例。

添加新虚拟机

# Add the virtual machine:
vm = vms_service.add(
  OvirtSDK4::Vm.new(
    name: 'myvm',
    cluster: {
      name: 'mycluster'
    },
    template: {
      name: 'mytemplate'
    }
  )
)

重要

add 方法返回的 Ruby 对象是相关类型的实例。它不是一种服务,只是数据容器。在上例中,返回的对象是 Vm 类的实例。

如果需要对刚刚添加的虚拟机执行操作,您必须找到管理该服务并调用服务 locator 的服务:

启动新虚拟机

# Add the virtual machine:
vm = vms_service.add(
  ...
)

# Find the service that manages the virtual machine:
vm_service = vms_service.vm_service(vm.id)

# Start the virtual machine:
vm_service.start

大多数对象的创建是异步任务。例如,如果您创建新虚拟机,则 add 方法将在完全创建虚拟机并准备好使用前返回虚拟机。您应该轮询对象的状态,直到完全创建为止。对于表示检查的虚拟机,直到状态变为 DOWN

推荐的方法是创建虚拟机,找到管理新虚拟机的服务,并重复检索状态,直到虚拟机状态为 DOWN,表示已创建了所有磁盘。

添加虚拟机、查找服务并检索其状态

# Add the virtual machine:
vm = vms_service.add(
  ...
)

# Find the service that manages the virtual machine:
vm_service = vms_service.vm_service(vm.id)

# Wait until the virtual machine is DOWN, indicating that all the
# disks have been created:
loop do
  sleep(5)
  vm = vm_service.get
  break if vm.status == OvirtSDK4::VmStatus::DOWN
end

如果无法创建对象,SDK 将引发一个 错误 异常,其中包含故障的详细信息。它永远不会返回 nil

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.