class Epi::Daemon::Responders::Job

Attributes

id[RW]
instruction[RW]

Public Instance Methods

run() click to toggle source
# File lib/epi/daemon/responders/job.rb, line 8
def run
  Jobs.beat!
  raise Exceptions::Fatal, 'Unknown job ID' unless Epi::Job === job
  case instruction
    when /^\d+$/ then set instruction.to_i
    when /^(\d+ )?(more|less)$/ then __send__ $2, ($1 || 1).to_i
    else __send__ instruction
  end
end

Private Instance Methods

job() click to toggle source
# File lib/epi/daemon/responders/job.rb, line 20
def job
  @job ||= Jobs[id]
end
less(decrease) click to toggle source
# File lib/epi/daemon/responders/job.rb, line 38
def less(decrease)
  set job.expected_count - decrease
end
max() click to toggle source
# File lib/epi/daemon/responders/job.rb, line 42
def max
  set job.allowed_processes.max
end
min() click to toggle source
# File lib/epi/daemon/responders/job.rb, line 46
def min
  set job.allowed_processes.min
end
more(increase) click to toggle source
# File lib/epi/daemon/responders/job.rb, line 34
def more(increase)
  set job.expected_count + increase
end
pause() click to toggle source
# File lib/epi/daemon/responders/job.rb, line 50
def pause
  set 0
end
reset()
Alias for: resume
restart() click to toggle source
# File lib/epi/daemon/responders/job.rb, line 59
def restart
  count = job.expected_count
  raise Exceptions::Fatal, 'This job has no processes to restart' if count == 0
  job.restart!
  "Replacing #{count} '#{job.name}' process#{count != 1 ? 'es' : ''}"
end
resume() click to toggle source
# File lib/epi/daemon/responders/job.rb, line 54
def resume
  set job.job_description.initial_processes
end
Also aliased as: reset
set(count) click to toggle source
# File lib/epi/daemon/responders/job.rb, line 24
def set(count)
  allowed = job.allowed_processes
  raise Exceptions::Fatal, "Requested count #{count} is outside allowed range #{allowed}" unless allowed === count
  original = job.expected_count
  raise Exceptions::Fatal, "Already running #{count} process#{count != 1 ? 'es' : ''}" unless original != count
  job.expected_count = count
  job.sync!
  "#{count < original ? 'De' : 'In'}creasing '#{job.name}' processes by #{(original - count).abs} (from #{original} to #{count})"
end