class Bosh::Director::Jobs::BaseJob

Attributes

task_id[RW]

Public Class Methods

job_type() click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 5
def self.job_type
  raise NotImplementedError.new('Subclasses must return a symbol representing type')
end
perform(task_id, *args) click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 9
def self.perform(task_id, *args)
  Bosh::Director::JobRunner.new(self, task_id).run(*args)
end
schedule_message() click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 13
def self.schedule_message
  "scheduled #{name.split('::').last}"
end

Public Instance Methods

begin_stage(stage_name, n_steps) click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 44
def begin_stage(stage_name, n_steps)
  @event_log_stage = Config.event_log.begin_stage(stage_name, n_steps)
  logger.info(stage_name)
end
dns_manager() click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 27
def dns_manager
  @dns_manager ||= DnsManagerProvider.create
end
event_manager() click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 65
def event_manager
  @event_manager ||= Api::EventManager.new(Config.record_events)
end
logger() click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 19
def logger
  @logger ||= Config.logger
end
result_file() click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 23
def result_file
  @result_file ||= Config.result
end
single_step_stage(stage_name) { || ... } click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 56
def single_step_stage(stage_name)
  begin_stage(stage_name, 1)
  track_and_log(stage_name, false) { yield }
end
task_cancelled?() click to toggle source

@return [Boolean] Has task been cancelled?

# File lib/bosh/director/jobs/base_job.rb, line 32
def task_cancelled?
  return false if task_id.nil?
  task = task_manager.find_task(task_id)
  task && (task.state == 'cancelling' || task.state == 'timeout' || task.state == 'cancelled')
end
task_checkpoint() click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 38
def task_checkpoint
  if task_cancelled?
    raise TaskCancelled, "Task #{task_id} cancelled"
  end
end
track_and_log(task, log = true) { |ticker| ... } click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 49
def track_and_log(task, log = true)
  @event_log_stage.advance_and_track(task) do |ticker|
    logger.info(task) if log
    yield ticker if block_given?
  end
end
username() click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 61
def username
  @user ||= task_manager.find_task(task_id).username
end

Private Instance Methods

task_manager() click to toggle source
# File lib/bosh/director/jobs/base_job.rb, line 71
def task_manager
  @task_manager ||= Api::TaskManager.new
end