Class: Management::Address::List

Inherits:
Command
  • Object
show all
Includes:
Helper
Defined in:
lib/management/commands/address/list.rb

Instance Method Summary collapse

Methods included from Helper

#cloud, #config, #get_address, #get_env, #get_script, #get_server, #get_type, #live_servers, #system_verbose

Methods inherited from Command

all, #arg_list, #call_with, #command_name, #fn, #help_string, inherited, maxlen, #true_arity

Instance Method Details

#runObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/management/commands/address/list.rb', line 11

def run()
  servers = live_servers

  cols = [
          {size: 20, title: "IP",         fn: ->(addr){ addr.public_ip } },
          {size: 20, title: "Server",     fn: ->(addr){ s = servers.find{|server| server.id == addr.server_id }; s ? s.name : "n/a" } },
          {size: 30, title: "Name",       fn: ->(addr){ a = config[:addresses].find{|k, v| v == addr.public_ip}; a ? a.first : "n/a" } },
          {size: 15, title: "Status",     fn: ->(addr){ s = servers.find{|server| server.id == addr.server_id }; s ? s.state : "n/a" } },
         ]

  format = cols.map{|c| "%-#{c[:size]}s"}.join("  ") + "\n"

  send :printf, *([format].concat(cols.map{|c|c[:title]}))
  send :printf, *([format].concat(cols.map{|c|'-' * c[:size]}))

  cloud.addresses.each do |address|
    send :printf, *([format].concat(cols.map{|c|c[:fn].call address}))
  end
end