class Kubes::CLI::Prune

Constants

KINDS

Public Instance Methods

anything_to_prune?() click to toggle source
# File lib/kubes/cli/prune.rb, line 27
def anything_to_prune?
  items = []
  return unless namespace

  with_old_items { |i| items << i }
  if items.empty?
    logger.info("There are no old resources that need pruning.") unless @options[:quiet]
  end
  !items.empty?
end
built_kinds() click to toggle source

IE: {“Secret”=>{“demo-secret”=>“ebd93b58dd”}}

# File lib/kubes/cli/prune.rb, line 80
def built_kinds
  compile # compile so built kinds are in memory
  Kubes::Compiler::Decorator::Hashable::Storage.md5s
end
capture_items(kind) click to toggle source
# File lib/kubes/cli/prune.rb, line 74
def capture_items(kind)
  data = Kubes::Kubectl.capture("get #{kind} -o json -n #{namespace}")
  data['items'] || []
end
fetcher() click to toggle source
# File lib/kubes/cli/prune.rb, line 18
def fetcher
  Kubes::Kubectl::Fetch::Base.new(@options)
end
get_all_items() click to toggle source
# File lib/kubes/cli/prune.rb, line 68
def get_all_items
  secrets = capture_items('secret')
  config_maps = capture_items('configmap')
  secrets + config_maps
end
namespace() click to toggle source
# File lib/kubes/cli/prune.rb, line 23
def namespace
  fetcher.namespace
end
old?(item) click to toggle source
# File lib/kubes/cli/prune.rb, line 52
def old?(item)
  name = item['metadata']['name']
  kind = item['kind']
  built = built_kinds[kind] || [] # IE: {"demo-secret"=>"ebd93b58dd"}
  built.each do |original_name,hash|
    return false unless name.include?(original_name)
    current = "#{original_name}-#{hash}"
    return false if name == current
    # Spec cover the tricky regexp logic
    regexp = Regexp.new("#{original_name}-\\w{10}$") # IE: # demo-secret-\w{10}$
    return true if name.match(regexp)
  end

  false
end
perform(preview:) click to toggle source
# File lib/kubes/cli/prune.rb, line 38
def perform(preview:)
  with_old_items do |item|
    prune(item, preview)
  end
end
prune(item, preview=false) click to toggle source
# File lib/kubes/cli/prune.rb, line 86
def prune(item, preview=false)
  kind = item['kind']
  name = item['metadata']['name']
  args = "delete #{kind} #{name} -n #{namespace}"
  if preview
    logger.info "    kubectl #{args}"
  else
    Kubes::Kubectl.execute(args)
  end
end
run() click to toggle source
# File lib/kubes/cli/prune.rb, line 8
def run
  return unless anything_to_prune?
  logger.info "Pruning old resources: #{KINDS.join(', ')}"
  perform(preview: true) unless @options[:yes]
  sure?("This will prune/delete resources. Are you sure?")
  run_hooks("kubes.rb", name: "prune") do
    perform(preview: false)
  end
end
with_old_items() { |i| ... } click to toggle source
# File lib/kubes/cli/prune.rb, line 44
def with_old_items
  items = get_all_items
  items.each do |i|
    next unless old?(i)
    yield(i)
  end
end