Module: KubeQueue

Defined in:
lib/kube_queue.rb,
lib/kube_queue/client.rb,
lib/kube_queue/worker.rb,
lib/kube_queue/version.rb,
lib/kube_queue/executor.rb,
lib/kube_queue/worker/dsl.rb,
lib/kube_queue/configuration.rb,
lib/kube_queue/manifest_builder.rb,
lib/kube_queue/job_specification.rb

Defined Under Namespace

Modules: Worker Classes: Client, Configuration, Executor, JobNotFound, JobSpecification, ManifestBuilder

Constant Summary collapse

VERSION =
"0.3.0".freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.default_envObject



52
53
54
55
56
57
58
59
60
61
# File 'lib/kube_queue.rb', line 52

def default_env
  return @default_env if @default_env

  return {} unless defined?(Rails)

  {
    RAILS_LOG_TO_STDOUT: ENV['RAILS_LOG_TO_STDOUT'],
    RAILS_ENV: ENV['RAILS_ENV']
  }
end

.executorObject



14
15
16
# File 'lib/kube_queue.rb', line 14

def executor
  @executor ||= default_executor
end

Class Method Details

.clientObject



22
23
24
# File 'lib/kube_queue.rb', line 22

def client
  @client ||= Client.new
end

.configurationObject



34
35
36
# File 'lib/kube_queue.rb', line 34

def configuration
  @configuration ||= Configuration.new
end

.configure(&block) ⇒ Object



30
31
32
# File 'lib/kube_queue.rb', line 30

def configure(&block)
  configuration.configure(&block)
end

.default_executorObject



26
27
28
# File 'lib/kube_queue.rb', line 26

def default_executor
  Executor.new
end

.fetch_worker(name) ⇒ Object



63
64
65
# File 'lib/kube_queue.rb', line 63

def fetch_worker(name)
  worker_registry.fetch(name)
end

.kubernetes_configure {|client| ... } ⇒ Object

Yields:



18
19
20
# File 'lib/kube_queue.rb', line 18

def kubernetes_configure
  yield client
end

.list(namespace = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/kube_queue.rb', line 38

def list(namespace = nil)
  client.list_job(namespace).map do |job|
    worker = fetch_worker(job..annotations['kube-queue-job-class'])
    job_id = job..annotations['kube-queue-job-id']
    payload = deserialize(job..annotations['kube-queue-message-payload'])

    job = worker.new(*payload)
    job.job_id = job_id
    job
  end
end

.register_worker(name, klass) ⇒ Object



67
68
69
# File 'lib/kube_queue.rb', line 67

def register_worker(name, klass)
  worker_registry[name] = klass
end

.worker_registryObject



71
72
73
# File 'lib/kube_queue.rb', line 71

def worker_registry
  @worker_registry ||= {}
end