Class: Kontena::Cli::Nodes::ListCommand

Inherits:
Kontena::Command show all
Includes:
Common, GridOptions, Helpers::HealthHelper
Defined in:
lib/kontena/cli/nodes/list_command.rb

Instance Attribute Summary

Attributes inherited from Kontena::Command

#arguments, #exit_code, #result

Instance Method Summary collapse

Methods included from Helpers::HealthHelper

#grid_health, #health_icon, #node_health

Methods included from GridOptions

included

Methods included from Common

#access_token=, #add_master, #any_key_to_continue, #any_key_to_continue_with_timeout, #api_url, #api_url=, #api_url_version, #ask, #clear_current_grid, #client, #cloud_auth?, #cloud_client, #config, #confirm, #confirm_command, #current_account, #current_grid, #current_grid=, #current_master, #current_master=, #current_master_index, #display_account_login_info, #display_login_info, #display_logo, #display_master_login_info, #error, #exit_with_error, #kontena_account, #logger, #pastel, #print, #prompt, #puts, #require_api_url, #require_current_account, #require_current_grid, #require_current_master, #require_token, #reset_client, #reset_cloud_client, #running_silent?, #running_verbose?, #settings, #settings_filename, #spinner, #sprint, #sputs, #stdin_input, #use_refresh_token, #vfakespinner, #vputs, #vspinner, #warning, #yes?

Methods inherited from Kontena::Command

banner, callback_matcher, #help_requested?, inherited, load_subcommand, requires_current_account_token, requires_current_account_token?, requires_current_grid, requires_current_grid?, requires_current_master, requires_current_master?, requires_current_master_token, requires_current_master_token?, #run, #run_callbacks, #verify_current_account_token, #verify_current_grid, #verify_current_master, #verify_current_master_token

Instance Method Details

#execute ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/kontena/cli/nodes/list_command.rb', line 39

def execute
  require_api_url
  require_current_grid
  token = require_token

  puts "%s %-70s %-10s %-10s %-10s %-s" % [health_icon(nil), "Name", "Version", "Status", "Initial", "Labels"]

  if all?
    grids = client(token).get("grids")
    grids['grids'].each do |grid|
      nodes = client(require_token).get("grids/#{grid['id']}/nodes")['nodes']

      show_grid_nodes(grid, nodes, multi: true)
    end
  else
    grid = client(token).get("grids/#{current_grid}")
    nodes = client(require_token).get("grids/#{current_grid}/nodes")['nodes']

    show_grid_nodes(grid, nodes)
  end
end

#node_initial(node, grid) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/kontena/cli/nodes/list_command.rb', line 11

def node_initial(node, grid)
  if node['initial_member']
    return "#{node['node_number']} / #{grid['initial_size']}"
  else
    return "-"
  end
end

#node_labels(node) ⇒ Object



19
20
21
# File 'lib/kontena/cli/nodes/list_command.rb', line 19

def node_labels(node)
  (node['labels'] || ['-']).join(",")
end

#show_grid_nodes(grid, nodes, multi: false) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/kontena/cli/nodes/list_command.rb', line 23

def show_grid_nodes(grid, nodes, multi: false)
  grid_health = grid_health(grid, nodes)

  nodes = nodes.sort_by{|n| n['node_number'] }
  nodes.each do |node|
    puts [
      "%s" % health_icon(node_health(node, grid_health)),
      "%-70.70s" % [multi ? "#{grid['name']}/#{node['name']}" : node['name']],
      "%-10s" % node['agent_version'],
      "%-10s" % (node['connected'] ? "online" : "offline"),
      "%-10s" % node_initial(node, grid),
      "%s" % [node_labels(node)],
    ].join ' '
  end
end