Sha256: e704c365752844a9b24205dbc66718bb5b35193a431f46bf5bcf86cf53b690eb

Contents?: true

Size: 1.78 KB

Versions: 97

Compression:

Stored size: 1.78 KB

Contents

require_relative 'services_helper'

module Kontena::Cli::Services
  class MonitorCommand < Kontena::Command
    include Kontena::Cli::Common
    include Kontena::Cli::GridOptions
    include ServicesHelper

    parameter "NAME", "Service name"
    option "--interval", "SECONDS", "How often view is refreshed", default: 2

    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 "■".colorize(color)
          end
          puts ''
        end
        sleep interval.to_f
      end
    end

    def clear_terminal
      print "\e[H\e[2J"
    end
  end
end

Version data entries

97 entries across 97 versions & 1 rubygems

Version Path
kontena-cli-1.4.3 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.3.rc1 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.2 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.2.rc1 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.2.pre1 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.1 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.1.rc1 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.1.pre1 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.3.5 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.3.5.rc1 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0.rc2 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0.rc1 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0.pre14 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0.pre13 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0.pre12 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0.pre11 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0.pre10 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0.pre9 lib/kontena/cli/services/monitor_command.rb
kontena-cli-1.4.0.pre8 lib/kontena/cli/services/monitor_command.rb