ruby-on-rails - 如何在 Ruby 中使用 RbVmomi 调整 VM 磁盘大小

标签 ruby-on-rails ruby vmware vsphere rbvmomi

我正在做一个项目,我正在使用 RbVmomi 克隆一个 VM,在克隆完成后我想重新配置 VM。

克隆工作得很好,但是当我想更改 VM 的磁盘大小时我遇到了一些问题。我可以更改 CPU 数量和内存大小,但是当我尝试更改磁盘大小时出现错误:

RbVmomi::Fault (InvalidDeviceSpec: Invalid configuration for device '0'.):

代码:

if json.has_key?('CPU_COUNT') && json.has_key?('RAM')
  vm_cfg = {
      :numCPUs => json['CPU_COUNT'],
      :memoryMB => json['RAM'],
      :deviceChange => [
          :operation => :edit, #also tried with :add
          :fileOperation => :create,
          :device => RbVmomi::VIM.VirtualDisk(
              :key => 0,
              :backing => RbVmomi::VIM.VirtualDiskFlatVer2BackingInfo(
              :fileName => '[datastore]',
              :diskMode => :persistent,
              :thinProvisioned => true
          ),
          :controllerKey => 1000,
          :unitNumber => 0,
          :capacityInKB => json['DISK_SIZE'] * 1024 * 1024
      )
  ]
  }

  dc.find_vm(vmID).ReconfigVM_Task(:spec => vm_cfg).wait_for_completion

最佳答案

由于您正在尝试重新配置现有的 VirtualMachine,您可以这样做:

#Get the disk from the VM (assuming you only have one disk)
disk = vm.config.hardware.device.grep(RbVmomi::VIM::VirtualDisk).first

#Set new capacity
disk.capacityInKB = new_capacity_in_kb

#Add the disk to the devicechange, specifying operation edit
vm_cfg = {
    :deviceChange => [
        {
            :device => disk,
            :operation => :edit
        }
    ]
}

#Start the ReconfigVM_Task with the disk edit on the VM
vm.ReconfigVM_Task(:spec => vm_cfg).wait_for_completion

关于ruby-on-rails - 如何在 Ruby 中使用 RbVmomi 调整 VM 磁盘大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090844/

相关文章:

ruby-on-rails - 使用 Ruby on Rails 保持项目列表有序的最佳方法是什么?

ruby-on-rails - ruby rails : How to delete unused tags with acts-as-taggable-on?

ruby-on-rails - 为模型定义几种json格式

sockets - VMWare/Cygwin/Sockets环境中的Netcat异常

vmware - 使用 VMWare Player 5,如何通过外部机器访问在 VM 中运行的 Web 服务器?

sql - Rails组/具有/计数查询

ruby-on-rails - Rails View 中的三元运算符

ruby - 处理除 Ruby 中的一种错误之外的所有类型的错误?

javascript - 如何验证在tinymce(gem)编辑器rails应用程序中输入的字符数

虚拟服务器的硬件要求