module Resque::Kubernetes::ManifestConformance

Provides functions to ensure a manifest conforms to a job specification and includes details needed for resque-kubernetes

Public Instance Methods

add_labels(manifest) click to toggle source
# File lib/resque/kubernetes/manifest_conformance.rb, line 15
def add_labels(manifest)
  manifest.deep_add(%w[metadata labels resque-kubernetes], "job")
  manifest["metadata"]["labels"]["resque-kubernetes-group"] = manifest["metadata"]["name"]
  manifest.deep_add(%w[spec template metadata labels resque-kubernetes], "pod")
end
adjust_manifest(manifest) click to toggle source
# File lib/resque/kubernetes/manifest_conformance.rb, line 8
def adjust_manifest(manifest)
  add_labels(manifest)
  ensure_term_on_empty(manifest)
  ensure_reset_policy(manifest)
  update_job_name(manifest)
end
container_term_on_empty(container) click to toggle source
# File lib/resque/kubernetes/manifest_conformance.rb, line 29
def container_term_on_empty(container)
  container["env"] ||= []
  term_on_empty = container["env"].find { |env| env["name"] == "INTERVAL" }
  unless term_on_empty
    term_on_empty = {"name" => "INTERVAL"}
    container["env"] << term_on_empty
  end
  term_on_empty["value"] = "0"
end
ensure_namespace(manifest) click to toggle source
# File lib/resque/kubernetes/manifest_conformance.rb, line 43
def ensure_namespace(manifest)
  manifest["metadata"]["namespace"] ||= @default_namespace
end
ensure_reset_policy(manifest) click to toggle source
# File lib/resque/kubernetes/manifest_conformance.rb, line 39
def ensure_reset_policy(manifest)
  manifest["spec"]["template"]["spec"]["restartPolicy"] ||= "OnFailure"
end
ensure_term_on_empty(manifest) click to toggle source
# File lib/resque/kubernetes/manifest_conformance.rb, line 21
def ensure_term_on_empty(manifest)
  manifest["spec"]["template"]["spec"] ||= {}
  manifest["spec"]["template"]["spec"]["containers"] ||= []
  manifest["spec"]["template"]["spec"]["containers"].each do |container|
    container_term_on_empty(container)
  end
end
update_job_name(manifest) click to toggle source
# File lib/resque/kubernetes/manifest_conformance.rb, line 47
def update_job_name(manifest)
  manifest["metadata"]["name"] += "-#{DNSSafeRandom.random_chars}"
end