Module: VCAP::Services::Base::AsyncJob

Includes:
Error
Included in:
Provisioner
Defined in:
lib/base/job/lock.rb,
lib/base/job/config.rb,
lib/base/job/package.rb,
lib/base/job/snapshot.rb,
lib/base/job/serialization.rb,
lib/base/job/async_job.rb

Overview

A thin layer wraps resque-status

Defined Under Namespace

Modules: Serialization, Snapshot Classes: Config, Lock, Package

Instance Method Summary collapse

Methods included from Error

#failure, #internal_fail, #parse_msg, #success, #timeout_fail

Instance Method Details

#get_all_jobsObject



48
49
50
# File 'lib/base/job/async_job.rb', line 48

def get_all_jobs()
  Resque::Plugins::Status::Hash.status_ids
end

#get_job(jobid) ⇒ Object



39
40
41
42
# File 'lib/base/job/async_job.rb', line 39

def get_job(jobid)
  res = Resque::Plugins::Status::Hash.get(jobid)
  job_to_json(res)
end

#job_repo_setupObject



31
32
33
34
35
36
37
# File 'lib/base/job/async_job.rb', line 31

def job_repo_setup
  redis = Config.redis
  @logger = Config.logger
  raise "AsyncJob requires redis configuration." unless redis
  @logger.debug("Initialize Resque using #{redis}") if @logger
  ::Resque.redis = redis
end

#job_to_json(job) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/base/job/async_job.rb', line 52

def job_to_json(job)
  return nil unless job
  res = {
    :job_id => job.uuid,
    :status => job.status,
    :start_time => job.time.to_s,
    :description => job.options[:description] || "None"
  }
  res[:complete_time] = job.complete_time if job.complete_time
  res[:result] = validate_message(job.message) if job.message
  res
end

#remove_job(jobid) ⇒ Object



44
45
46
# File 'lib/base/job/async_job.rb', line 44

def remove_job(jobid)
  Resque::Plugins::Status::Hash.remove(jobid)
end

#validate_message(msg) ⇒ Object



65
66
67
68
69
70
# File 'lib/base/job/async_job.rb', line 65

def validate_message(msg)
  Yajl::Parser.parse(msg)
rescue => e
  # generate internal error if we can't parse err msg
  ServiceError.new(ServiceError::INTERNAL_ERROR).to_hash
end