2.2. 类型


2.2.1. 创建和修改类型实例

创建或修改类型实例对服务器端没有任何影响,除非更改明确发送到调用服务方法的服务器,如下所述。服务器端的更改不会自动反映在内存中已存在的实例中。

这些类构造器具有多个可选参数,分别用于类型的每个属性。这通过使用嵌套调用多个构造器来简化对象的创建。

在以下示例中,会创建一个虚拟机的实例,并设置了其属性(集群、模板和内存):

使用属性创建虚拟机实例

vm = OvirtSDK4::Vm.new(
  name: 'myvm',
  cluster: OvirtSDK4::Cluster.new(
    name: 'mycluster'
  ),
  template: OvirtSDK4::Template.new(
    name: 'mytemplate'
  ),
  memory: 1073741824
)
Copy to Clipboard Toggle word wrap

传递给这些构造器的哈希值(如 cluster: OvirtSDK4::Cluster.new)会被递归处理。

在以下示例中,使用普通哈希而不是显式调用集群和模板类的构造器。SDK 内部将哈希转换为所需的类。

使用显示为 Plain Hashes 的属性创建虚拟机实例

vm = OvirtSDK4::Vm.new(
  name: 'myvm',
  cluster: {
    name: 'mycluster'
  },
  template: {
    name: 'mytemplate'
  },
  memory: 1073741824
)
Copy to Clipboard Toggle word wrap

建议以这种方式使用 constructors,但不是强制性的。

在以下示例中,在调用 constructor 时创建一个没有参数的虚拟机实例。您可以逐个添加虚拟机实例的属性,使用 setters,或使用集合器和构造器的组合来添加。

单独创建虚拟机实例和添加属性

vm = OvirtSDK4::Vm.new
vm.name = 'myvm'
vm.cluster = OvirtSDK4::Cluster.new(name: 'mycluster')
vm.template = OvirtSDK4::Template.new(name: 'mytemplate')
vm.memory = 1073741824
Copy to Clipboard Toggle word wrap

作为 API 规格中的对象列表定义的属性作为 Ruby 阵列实现。例如,Vm 类型的 custom_properties 属性定义为类型为 CustomProperty 的对象列表。

将属性列表添加为数组

vm = OvirtSDK4::Vm.new(
  name: 'myvm',
  custom_properties: [
    OvirtSDK4::CustomProperty.new(...),
    OvirtSDK4::CustomProperty.new(...),
    ...
  ]
)
Copy to Clipboard Toggle word wrap

在 API 中定义为枚举值的属性作为常量在与枚举类型相同的模块中实现。

以下示例演示了如何使用 VmStatus enumerated 值定义 Vm Status 类型的 status 属性。

case vm.status
when OvirtSDK4::VmStatus::DOWN
  ...
when OvirtSDK4::VmStatus::IMAGE_LOCKED
  ...
end
Copy to Clipboard Toggle word wrap
重要

在 API 规格中,枚举 类型的值较低,因为这是 XML 和 JSON 的约定。但是,在 Ruby 中,约定是对这些常数 使用大写的情况

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat