class Eclair::K8sItem

Attributes

pod[R]

Public Class Methods

new(pod) click to toggle source
Calls superclass method Eclair::Item::new
# File lib/eclair/providers/k8s/k8s_item.rb, line 10
def initialize pod
  super()
  @pod = pod
end

Public Instance Methods

color() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 19
def color
  if @selected
    [Curses::COLOR_YELLOW, -1, Curses::A_BOLD]
  elsif !connectable?
    [Curses::COLOR_BLACK, -1, Curses::A_BOLD]
  else
    [Curses::COLOR_WHITE, -1]
  end
end
command() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 33
def command
  "kubectl exec --namespace #{namespace} -ti #{name} #{exec_command}"
end
connectable?() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 56
def connectable?
  status == "running"
end
exec_command() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 29
def exec_command
  @pod["metadata"]["labels"]["eclair_exec_command"] || "/bin/sh"
end
header() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 37
    def header
      <<-EOS
      #{name}
      launched at #{launch_time.to_time}
      EOS
    end
id() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 15
def id
  @pod["metadata"]["uid"]
end
label() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 44
def label
  " - #{name} [#{launched_at}]"
end
name() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 52
def name
  @pod["metadata"]["name"]
end
namespace() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 48
def namespace
  @pod["metadata"]["namespace"]
end
search_key() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 60
def search_key
  name.downcase
end

Private Instance Methods

launch_time() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 70
def launch_time
  Time.parse(@pod["metadata"]["creationTimestamp"])
end
launched_at() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 74
def launched_at
  diff = Time.now - launch_time
  {
    "year" => 31557600,
    "month" => 2592000,
    "day" => 86400,
    "hour" => 3600,
    "minute" => 60,
    "second" => 1
  }.each do |unit,v|
    if diff >= v
      value = (diff/v).to_i
      return "#{value} #{unit}#{value > 1 ? "s" : ""}"
    end
  end
  "now"
end
status() click to toggle source
# File lib/eclair/providers/k8s/k8s_item.rb, line 66
def status
  @pod["status"]["containerStatuses"].first["state"].keys.first rescue nil
end