搜索

2.2. 类型

download PDF

2.2.1. 创建和修改类型实例

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

这些类的构造器具有多个可选参数,各自对应于 type 的各个属性。这简化了对象的创建,使用嵌套的调用来处理多个构造器。

在以下示例中,将创建虚拟机的实例及其属性(cluster、template 和 memory):

使用属性创建虚拟机实例

vm = OvirtSDK4::Vm.new(
  name: 'myvm',
  cluster: OvirtSDK4::Cluster.new(
    name: 'mycluster'
  ),
  template: OvirtSDK4::Template.new(
    name: 'mytemplate'
  ),
  memory: 1073741824
)

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

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

创建机器实例,带有显示为 Plain Hashs 的属性

vm = OvirtSDK4::Vm.new(
  name: 'myvm',
  cluster: {
    name: 'mycluster'
  },
  template: {
    name: 'mytemplate'
  },
  memory: 1073741824
)

建议以这种方式使用构造器,但不强制要求。

在以下示例中,会创建一个虚拟机实例,它调用中没有参数到构造者。您可以使用 setter 或使用 setter 和 constructors 的组合来逐一添加虚拟机实例的属性。

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

vm = OvirtSDK4::Vm.new
vm.name = 'myvm'
vm.cluster = OvirtSDK4::Cluster.new(name: 'mycluster')
vm.template = OvirtSDK4::Template.new(name: 'mytemplate')
vm.memory = 1073741824

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

添加属性列表作为数组

vm = OvirtSDK4::Vm.new(
  name: 'myvm',
  custom_properties: [
    OvirtSDK4::CustomProperty.new(...),
    OvirtSDK4::CustomProperty.new(...),
    ...
  ]
)

API 中以枚举值定义的属性作为模块中的常数实施,其名称与枚举类型相同。

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

case vm.status
when OvirtSDK4::VmStatus::DOWN
  ...
when OvirtSDK4::VmStatus::IMAGE_LOCKED
  ...
end
重要

在 API 规格中,枚举类型的值为小写,因为这是 XML 和 JSON 的惯例。但是,在 Ruby 中,这些常数是 使用大写的

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.