class Chef::Knife::CloudstackServerList

Public Instance Methods

print_servers(server_list,servers,options={}) click to toggle source

#Commented out as sorting of VM list is a work-in-progress

option :sort,
       :short => "-o TRUE/FALSE",
       :long => "--sort TRUE/FALSE",
       :description => "Enable or disable sorting by Zone ID then VM ID. Defaults to sorted.",
       :default => true
run() click to toggle source
# File lib/chef/knife/cloudstack_server_list.rb, line 102
def run
  $stdout.sync = true

  validate!

  server_list = [
    ui.color('Server ID', :bold),
    ui.color('Display Name', :bold),
    ui.color('IP Address', :bold),
    ui.color('Security Group', :bold),
    ui.color('Server Zone', :bold),
    ui.color('Service Offering', :bold),
    ui.color('Template', :bold),
    ui.color('Hypervisor', :bold),
    ui.color('State', :bold)
  ]

  zoneid = locate_config_value(:zoneid)
  state = locate_config_value(:state)
  # vmsort = locate_config_value(:sort)

  response = connection.list_virtual_machines['listvirtualmachinesresponse']
  Chef::Log.debug("API request: #{response}")
  if virtual_machines = response['virtualmachine']
    filters = {}
    filters[:zoneid] = zoneid unless zoneid == 'all'
    filters[:state] = state unless state == 'all'
    print_servers(server_list, virtual_machines, filters)
    puts ui.list(server_list, :uneven_columns_across, 9)
  end
end