Class: Kontena::Cli::Containers::ListCommand

Inherits:
Kontena::Command show all
Includes:
Kontena::Cli::Common, GridOptions, Util
Defined in:
lib/kontena/cli/containers/list_command.rb

Instance Attribute Summary

Attributes inherited from Kontena::Command

#arguments, #exit_code, #result

Instance Method Summary collapse

Methods included from GridOptions

included

Methods included from Kontena::Cli::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, #use_refresh_token, #vfakespinner, #vputs, #vspinner, #warning, #yes?

Methods included from Util

included, #safe_dig, #time_ago, which

Methods inherited from Kontena::Command

banner, callback_matcher, #help_requested?, inherited, 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

#container_status(container) ⇒ Object



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

def container_status(container)
  s = container['state']
  if s['paused']
    'paused'.freeze
  elsif s['restarting']
    'restarting'.freeze
  elsif s['oom_killed']
    'oom_killed'.freeze
  elsif s['dead']
    'dead'.freeze
  elsif s['running']
    'running'.freeze
  else
    'stopped'.freeze
  end
end

#executeObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/kontena/cli/containers/list_command.rb', line 11

def execute
  require_api_url
  token = require_token

  params = '?'
  params << 'all=1' if all?
  result = client(token).get("containers/#{current_grid}#{params}")
  containers = result['containers']
  id_column = longest_string_in_array(containers.map {|c| "#{c['node']['name']}/#{c['name']}"})
  image_column = longest_string_in_array(containers.map {|c| c['image'] })
  columns = "%-#{id_column + 2}s %-#{image_column + 2}s %-30s %-20s %-10s"
  puts columns % [ 'CONTAINER ID', 'IMAGE', 'COMMAND', 'CREATED', 'STATUS']
  result['containers'].reverse.each do |container|
    puts columns % [
      "#{container['node']['name']}/#{container['name']}",
      container['image'],
      "\"#{container['cmd'].to_a.join(' ')[0..26]}\"",
      "#{time_ago(container['created_at'])} ago",
      container_status(container)
    ]
  end
end

#longest_string_in_array(array) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/kontena/cli/containers/list_command.rb', line 34

def longest_string_in_array(array)
  longest = 0
  array.each do |item|
    longest = item.length if item.length > longest
  end

  longest
end