module KBE

Constants

VERSION

Public Class Methods

get_pods(selector:nil, name:nil, only_running: true) click to toggle source
# File lib/kbe.rb, line 43
def self.get_pods(selector:nil, name:nil, only_running: true)
  parts = []
  parts << "kubectl get pods --no-headers -o custom-columns=':metadata.name'"
  if selector
    parts << "--field-selector=status.phase=Running" if only_running
    parts << "--selector=#{selector}"
  else
    parts << name
  end

  cmd = parts.join " "
  # dev/null supresses the "pod not found" by name
  `#{cmd} 2>/dev/null`.split("\n")
end
kubectl(*args) click to toggle source
# File lib/kbe.rb, line 5
def self.kubectl(*args)
  cmd = []
  cmd << "kubectl"
  cmd << args

  cmd_string = cmd.join " "
  STDERR.puts cmd_string.colorize(:light_black)
  exec cmd_string
end
pod_by(name_or_selector, only_running: true) click to toggle source
# File lib/kbe.rb, line 15
def self.pod_by(name_or_selector, only_running: true)
  pods = if name_or_selector.match? "="
    get_pods selector: name_or_selector, only_running: only_running
  else
    get_pods name: name_or_selector, only_running: only_running
  end

  if pods.empty?
    ["app", "job-name"].each do |selector_prefix|
      magic_selector = "#{selector_prefix}=#{name_or_selector}"

      pods = get_pods selector: magic_selector, only_running: only_running
      break if pods.any?
    end
  end

  if pods.size == 1
    return pods.first
  elsif pods.size > 1
    STDERR.puts "too many pods found:"
    STDERR.p pods
  else
    STDERR.puts "no pods found."
  end

  exit 1
end