class Chef::Knife::VcVmSetDisks

Public Instance Methods

run() click to toggle source
# File lib/chef/knife/vm/vc_vm_set_disks.rb, line 47
def run
  $stdout.sync = true

  vm_arg = @name_args.shift

  new_disk = locate_config_value(:vm_add_disk)
  delete_disk = locate_config_value(:vm_delete_disk)
  disk_name = locate_config_value(:vm_disk_name)
  disk_size = locate_config_value(:vm_disk_size)

  raise ArgumentError, "Disk name is mandatory if using --no-add" if !new_disk && disk_name.nil?
  raise ArgumentError, "Disk size is mandatory if using --add" if new_disk && disk_size.nil?
  raise ArgumentError, "Disk name is mandatory if using --delete" if delete_disk && disk_name.nil?

  connection.login
  vm = get_vm(vm_arg)

  if !delete_disk || ui.confirm("Do you really want to #{ui.color('DELETE', :red)} disk #{disk_name}")
    task_id = connection.set_vm_disk_info vm[:id], {
                                                  :add => new_disk,
                                                  :delete => delete_disk,
                                                  :disk_size => disk_size,
                                                  :disk_name => disk_name
                                                }
    ui.msg "VM setting Disks info..."
    wait_task(connection, task_id)
  end
  connection.logout
end