class CronKubernetes::CronJob
A single job to run on a given schedule.
Attributes
command[RW]
identifier[RW]
job_manifest[RW]
name[RW]
schedule[RW]
Public Class Methods
new(schedule: nil, command: nil, job_manifest: nil, name: nil, identifier: nil)
click to toggle source
# File lib/cron_kubernetes/cron_job.rb, line 10 def initialize(schedule: nil, command: nil, job_manifest: nil, name: nil, identifier: nil) @schedule = schedule @command = command @job_manifest = job_manifest @name = name @identifier = identifier end
Public Instance Methods
cron_job_manifest()
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/cron_kubernetes/cron_job.rb, line 19 def cron_job_manifest { "apiVersion" => "batch/v1beta1", "kind" => "CronJob", "metadata" => { "name" => "#{identifier}-#{cron_job_name}", "namespace" => namespace, "labels" => {"cron-kubernetes-identifier" => identifier} }, "spec" => { "schedule" => schedule, "jobTemplate" => { "metadata" => job_metadata, "spec" => job_spec } } } end
Private Instance Methods
cron_job_name()
click to toggle source
# File lib/cron_kubernetes/cron_job.rb, line 57 def cron_job_name return name if name return job_hash(job_manifest["metadata"]["name"]) if job_manifest["metadata"] pod_template_name end
job_hash(name)
click to toggle source
rubocop:enable Metrics/AbcSize
# File lib/cron_kubernetes/cron_job.rb, line 72 def job_hash(name) "#{name}-#{Digest::SHA1.hexdigest(schedule + command.join)[0..7]}" end
job_metadata()
click to toggle source
# File lib/cron_kubernetes/cron_job.rb, line 53 def job_metadata job_manifest["metadata"] end
job_spec()
click to toggle source
# File lib/cron_kubernetes/cron_job.rb, line 46 def job_spec spec = job_manifest["spec"].dup first_container = spec["template"]["spec"]["containers"][0] first_container["command"] = command spec end
namespace()
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/cron_kubernetes/cron_job.rb, line 41 def namespace return job_manifest["metadata"]["namespace"] if job_manifest["metadata"] && job_manifest["metadata"]["namespace"] "default" end
pod_template_name()
click to toggle source
rubocop:disable Metrics/AbcSize
# File lib/cron_kubernetes/cron_job.rb, line 64 def pod_template_name return nil unless job_manifest["spec"] && job_manifest["spec"]["template"] && job_manifest["spec"]["template"]["metadata"] job_hash(job_manifest["spec"]["template"]["metadata"]["name"]) end