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_jobs ⇒ Object
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_setup ⇒ Object
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
ServiceError.new(ServiceError::INTERNAL_ERROR).to_hash
end
|