Sha256: f11e45c63a9e43f2f70c1c27642687e671858aba69bcea6e8fd4cedcbd2d6b6f

Contents?: true

Size: 1.48 KB

Versions: 45

Compression:

Stored size: 1.48 KB

Contents

class Kubes::CLI
  class Logs < Base
    include Kubes::Logging
    include Kubes::Util::Sh

    def run
      compile
      sh("kubectl logs #{args}")
    end

  private
    def args
      args = pod_name || deployment_args

      unless args
        logger.info <<~EOL
          Unable to find a pod to show logs for. This means there was no deployment found.
          You can also try using the -p option and specifying enough of the pod name. Example:

              kubes logs -p web

        EOL
        exit 1
      end

      follow = " -f" if @options[:follow]
      "#{args}#{follow}"
    end

    def deployment_args
      deployment = Kubes::Kubectl::Fetch::Deployment.new(@options)
      metadata = deployment.metadata
      return unless metadata

      name = metadata['name']
      ns = metadata['namespace']

      container = container(deployment)
      c = " -c #{container}" if container
      "deployment/#{name} -n #{ns}#{c}"
    end

    def container(deployment)
      container = @options[:container]
      return container if container

      spec = deployment.spec
      containers = spec['template']['spec']['containers']
      names = containers.map { |c| c['name'] }
      if containers.size > 1
        logger.info <<~EOL
          INFO: More than one container found.
          Container names: #{names.join(', ')}
          Using #{names.first}
          Note: You can specify the container to use with --container or -c
        EOL

        names.first
      end
    end
  end
end

Version data entries

45 entries across 45 versions & 1 rubygems

Version Path
kubes-0.9.3 lib/kubes/cli/logs.rb
kubes-0.9.2 lib/kubes/cli/logs.rb
kubes-0.9.1 lib/kubes/cli/logs.rb
kubes-0.9.0 lib/kubes/cli/logs.rb
kubes-0.8.10 lib/kubes/cli/logs.rb
kubes-0.8.9 lib/kubes/cli/logs.rb
kubes-0.8.8 lib/kubes/cli/logs.rb
kubes-0.8.7 lib/kubes/cli/logs.rb
kubes-0.8.6 lib/kubes/cli/logs.rb
kubes-0.8.5 lib/kubes/cli/logs.rb
kubes-0.8.4 lib/kubes/cli/logs.rb
kubes-0.8.3 lib/kubes/cli/logs.rb
kubes-0.8.2 lib/kubes/cli/logs.rb
kubes-0.8.1 lib/kubes/cli/logs.rb
kubes-0.8.0 lib/kubes/cli/logs.rb
kubes-0.7.10 lib/kubes/cli/logs.rb
kubes-0.7.9 lib/kubes/cli/logs.rb
kubes-0.7.8 lib/kubes/cli/logs.rb
kubes-0.7.7 lib/kubes/cli/logs.rb
kubes-0.7.6 lib/kubes/cli/logs.rb