Sha256: 9883782565cedf0202cbd20d2bd3569d458870ab2102c206e59535812c07b3ce

Contents?: true

Size: 1.44 KB

Versions: 22

Compression:

Stored size: 1.44 KB

Contents

module Kontena::Cli::Containers
  class ListCommand < Kontena::Command
    include Kontena::Util
    include Kontena::Cli::Common
    include Kontena::Cli::GridOptions
    include Kontena::Cli::TableGenerator::Helper

    option ['-a', '--all'], :flag, 'Show all containers'

    requires_current_master
    requires_current_master_token

    NON_STOP_STATES = ['paused', 'restarting', 'oom_killed', 'dead', 'running']

    def fields
      return ['id'] if quiet?
      { container_id: 'id', image: 'image', command: 'cmd', created: 'created_at', status: 'state' }
    end

    def execute
      result = spin_if(!quiet?, "Retrieving container list") do
        Array(client.get("containers/#{current_grid}#{'?all=1' if all?}")['containers'])
      end

      print_table(result.reverse) do |row|
        row['id'] = container_id(row)
        row['created_at'] = time_ago(row['created_at'])
        row['cmd'] = truncate_cmd(row)
        row['state'] = container_state(row)
      end
    end

    def container_id(row)
      if row['node']
        "#{row['node']['name']}/#{row['name']}"
      else
        "/#{row['name']}"
      end
    end

    def truncate_cmd(row)
      cmd = row['cmd'].nil? ? '' : row['cmd'].join(' ')
      cmd = "#{cmd[0..24]}#{pastel.cyan('..')}" if cmd.length > 26
      "\"#{cmd}\""
    end

    def container_state(row)
      NON_STOP_STATES.find { |state| row.fetch('state', {})[state] == true } || pastel.cyan('stopped')
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
krates-1.7.11 lib/kontena/cli/containers/list_command.rb
krates-1.7.10 lib/kontena/cli/containers/list_command.rb
krates-1.7.9 lib/kontena/cli/containers/list_command.rb
krates-1.7.8 lib/kontena/cli/containers/list_command.rb
krates-1.7.7 lib/kontena/cli/containers/list_command.rb
krates-1.7.6 lib/kontena/cli/containers/list_command.rb
krates-1.7.5 lib/kontena/cli/containers/list_command.rb
krates-1.7.4 lib/kontena/cli/containers/list_command.rb
krates-1.7.3 lib/kontena/cli/containers/list_command.rb
krates-1.7.2 lib/kontena/cli/containers/list_command.rb
krates-1.7.1 lib/kontena/cli/containers/list_command.rb
krates-1.7.0 lib/kontena/cli/containers/list_command.rb
krates-1.6.9 lib/kontena/cli/containers/list_command.rb
krates-1.6.8 lib/kontena/cli/containers/list_command.rb
krates-1.6.7 lib/kontena/cli/containers/list_command.rb
krates-1.6.6 lib/kontena/cli/containers/list_command.rb
krates-1.6.5 lib/kontena/cli/containers/list_command.rb
krates-1.6.4 lib/kontena/cli/containers/list_command.rb
krates-1.6.3 lib/kontena/cli/containers/list_command.rb
krates-1.6.2 lib/kontena/cli/containers/list_command.rb