class Chef::Knife::VcCatalogItemShow

Public Instance Methods

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

  item_arg = @name_args.first

  connection.login
  catalog_item = get_catalog_item(item_arg)
  connection.logout

  if catalog_item[:type] == "vAppTemplate"
    header = [
        ui.color('Name', :bold),
        ui.color('Template ID', :bold)
    ]

    ui.msg "#{ui.color('Description:', :cyan)} #{catalog_item[:description]}"
    list = header

    catalog_item[:items].each do |item|
      list << (item[:name] || '')
      list << (item[:id] || '')
      # TODO: show VMs using this item? item[:vms_hash]
    end

    ui.msg ui.list(list, :columns_across, 2)

  elsif catalog_item[:type] == "media"
    header = [
        ui.color('Name', :bold),
        ui.color('Media ID', :bold)
    ]

    ui.msg "#{ui.color('Description:', :cyan)} #{catalog_item[:description]}"
    list = header

    list << (catalog_item[:name] || '')
    list << (catalog_item[:id] || '')

    ui.msg ui.list(list, :columns_across, 2)

  elsif catalog_item[:type] == "unknown"

    ui.msg "#{ui.color('Description:', :cyan)} #{catalog_item[:description]}"
    ui.msg "#{ui.color('Unknown catalog item type', :bold)}"
  end
end