class Kontena::Cli::Nodes::ListCommand

Public Instance Methods

execute() click to toggle source
# File lib/kontena/cli/nodes/list_command.rb, line 93
def execute
  print_table(node_data)
end
fields() click to toggle source
# File lib/kontena/cli/nodes/list_command.rb, line 49
def fields
  return ['name'] if quiet?
  {
    name:    'name',
    version: 'agent_version',
    status:  'status',
    initial: 'initial',
    labels:  'labels',
  }
end
grid_nodes(grid_name) click to toggle source
# File lib/kontena/cli/nodes/list_command.rb, line 64
def grid_nodes(grid_name)
  client.get("grids/#{grid_name}/nodes")['nodes']
end
grids() click to toggle source
# File lib/kontena/cli/nodes/list_command.rb, line 60
def grids
  all? ? client.get("grids")['grids'] : [client.get("grids/#{current_grid}")]
end
node_data() click to toggle source
# File lib/kontena/cli/nodes/list_command.rb, line 68
def node_data
  grids.flat_map do |grid|
    grid_nodes = []

    grid_nodes(grid['id']).each do |node|
      node['name'] = node_name(node, grid)
      grid_nodes << node
      next if quiet?
      node['agent_version'] ||= '-'
      node['initial'] = node_initial(node, grid)
      node['status'] = node_status(node)
      node['labels'] = node_labels(node)
    end

    unless quiet?
      grid_health = grid_health(grid, grid_nodes)
      grid_nodes.each do |node|
        node['name'] = health_icon(node_health(node, grid_health)) + " " + (node['name'] || node['node_id'])
      end
    end

    grid_nodes.sort_by { |n| n['node_number'] }
  end
end
node_initial(node, grid) click to toggle source
# File lib/kontena/cli/nodes/list_command.rb, line 40
def node_initial(node, grid)
  return '-' unless node['initial_member']
  "#{node['node_number']} / #{grid['initial_size']}"
end
node_labels(node) click to toggle source
# File lib/kontena/cli/nodes/list_command.rb, line 45
def node_labels(node)
  (node['labels'] || ['-']).join(',')
end
node_name(node, grid) click to toggle source
# File lib/kontena/cli/nodes/list_command.rb, line 18
def node_name(node, grid)
  return node['name'] unless all?
  "#{grid['name']}/#{node['name']}"
end
node_status(node) click to toggle source
# File lib/kontena/cli/nodes/list_command.rb, line 23
def node_status(node)
  case node_status = node['status']
  when 'created'
    "#{pastel.dark('created')} #{time_since(node['created_at'], terse: true)}"
  when 'connecting'
    "#{pastel.cyan('connecting')} #{time_since(node['connected_at'], terse: true)}"
  when 'online'
    "#{pastel.green('online')} #{time_since(node['connected_at'], terse: true)}"
  when 'drain'
    "#{pastel.yellow('drain')}"
  when 'offline'
    "#{pastel.red('offline')} #{time_since(node['disconnected_at'], terse: true)}"
  else
    pastel.white(node_status.to_s)
  end
end