class Kontena::Cli::Services::MonitorCommand

Public Instance Methods

clear_terminal() click to toggle source
# File lib/kontena/cli/services/monitor_command.rb, line 54
def clear_terminal
  print "\e[H\e[2J"
end
execute() click to toggle source
# File lib/kontena/cli/services/monitor_command.rb, line 12
def execute
  require_api_url
  token = require_token

  loop do
    nodes = {}
    service = client(token).get("services/#{parse_service_id(name)}")
    result = client(token).get("services/#{parse_service_id(name)}/containers")
    result['containers'].each do |container|
      nodes[container['node']['name']] ||= []
      nodes[container['node']['name']] << container
    end
    clear_terminal
    puts "service: #{name} (#{result['containers'].size}/#{service['instances']} instances)"
    puts "strategy: #{service['strategy']}"
    puts "status: #{service['state']}"
    puts "stateful: #{service['stateful'] == true ? 'yes' : 'no' }"
    puts "nodes:"
    node_names = nodes.keys.sort
    node_names.each do |name|
      containers = nodes[name]
      puts "  #{name} (#{containers.size} instances)"
      print "  "
      containers.each do |container|
        color = container['status']
        if container['status'] == 'running'
          color = :green
        elsif container['status'] == 'killed'
          color = :red
        elsif container['status'] == 'stopped'
          color = :bright_black
        else
          color = :yellow
        end
        print pastel.send(color, "■")
      end
      puts ''
    end
    sleep interval.to_f
  end
end