class Chef::Knife::LinodeServerList

Public Instance Methods

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

  validate!

  server_list = [
    ui.color("Linode ID", :bold),
    ui.color("Name", :bold),
    ui.color("IPs", :bold),
    ui.color("Status", :bold),
    ui.color("Backups", :bold),
    ui.color("Datacenter", :bold),
  ]

  dc_location = {}

  connection.data_centers.map { |dc| dc_location[dc.id] = dc.location }

  connection.servers.each do |server|
    server_list << server.id.to_s
    server_list << server.name
    server_list << server.ips.map { |x| x.ip }.join(",")
    server_list << status_to_ui(server.status)
    server_list << case connection.linode_list(server.id).body["DATA"][0]["BACKUPSENABLED"]
                   when 0
                     ui.color("No", :red)
                   when 1
                     ui.color("Yes", :green)
                   else
                     ui.color("UNKNOWN", :yellow)
                   end
    server_list << dc_location[connection.linode_list(server.id).body["DATA"][0]["DATACENTERID"]]
  end

  puts ui.list(server_list, :columns_across, 6)
end