class Chef::Knife::VcVmShow

Public Instance Methods

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

  vm_arg = @name_args.first

  connection.login

  vm = get_vm(vm_arg)

  vm_info = connection.get_vm_info vm[:id]
  vm_disks = connection.get_vm_disk_info vm[:id]
  connection.logout

  out_msg("VM Name", vm[:vm_name])
  out_msg("OS Name", vm[:os_desc])
  out_msg("Status", vm[:status])

  list = []
  list << ['', '']
  vm_info.each do |section, values|
    list << ui.color(section.capitalize, :bold)
    list << ''

    list << (values[:description] || '')
    list << (values[:name] || '')

    list << ['', '']
  end

  list << [ui.color('Disks', :bold), '']
  vm_disks.each do |values|
    list << (values[:name] || '')
    list << (values[:capacity] || '')
  end

  list << ['', '', ui.color('Networks', :bold), '']
  vm[:networks].each do |network, values|
    # remove NetworkConnectionIndex from network hash key
    network =~ /^(.*)_[0-9]+$/
    list << [$1 || '', '']
    values.each do |k, v|
      list << "  #{(pretty_symbol(k) || '')}"
      list << (v || '')
    end
  end

  list << ['', '', ui.color('Guest Customizations', :bold), '']
  list.flatten!
  vm[:guest_customizations].each do |k, v|
    list << (pretty_symbol(k) || '')
    list << (v || '')
  end
  ui.msg ui.list(list, :columns_across, 2)
end