Sha256: c5ec4fff95f7f288d208a34e924bfb8b10a91a5ff01faaa03fc8b68abe8a1716

Contents?: true

Size: 1.54 KB

Versions: 3

Compression:

Stored size: 1.54 KB

Contents

require_relative 'services_helper'

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

    option ["-q", "--quiet"], :flag, "Show only service names"
    option '--stack', 'STACK', 'Stack name'

    def execute
      require_api_url
      token = require_token

      grids = client(token).get("grids/#{current_grid}/services?stack=#{stack}")
      services = grids['services'].sort_by{|s| s['updated_at'] }.reverse
      if quiet?
        services.each do |service|
          puts "#{service.dig('stack', 'id')}/#{service['name']}"
        end
      else
        titles = ['NAME', 'INSTANCES', 'STATEFUL', 'STATE', 'EXPOSED PORTS']
        puts "%-60s %-10s %-8s %-10s %-50s" % titles
        services.each do |service|
          print_service_row(service)
        end
      end
    end

    def print_service_row(service)
      stateful = service['stateful'] ? 'yes' : 'no'
      running = service['instances']['running']
      desired = service['container_count']
      instances = "#{running} / #{desired}"
      ports = service['ports'].map{|p|
        "#{p['ip']}:#{p['node_port']}->#{p['container_port']}/#{p['protocol']}"
      }.join(", ")
      health = health_status(service)
      vars = [
        health_status_icon(health),
        "#{service.dig('stack', 'name')}/#{service['name']}",
        instances,
        stateful,
        service['state'],
        ports
      ]
      puts "%s %-58s %-10.10s %-8s %-10s %-50s" % vars
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
kontena-cli-0.17.0.pre3 lib/kontena/cli/services/list_command.rb
kontena-cli-0.17.0.pre2 lib/kontena/cli/services/list_command.rb
kontena-cli-0.17.0.pre1 lib/kontena/cli/services/list_command.rb