fluke/devops-service/workers/job_starter.rb

28 lines
803 B
Ruby
Raw Normal View History

2015-07-23 12:54:36 +03:00
require 'commands/commands_storage'
require 'workers/workers_storage'
module JobStarter
def self.start_job(strategy, job_name, job_options)
case strategy
when :worker
start_job_as_worker(WorkersStorage.workers[job_name], job_options)
end
end
def self.start_job_as_worker(worker_class, options)
job_options = options.dup
job_options[:config] ||= DevopsConfig.config
job_options[:dir] ||= DevopsConfig[:report_dir_v2]
job_options[:url] ||= options[:request].url
jid = worker_class.perform_async(job_options)
Worker.set_status jid, Worker::STATUS::IN_QUEUE
DevopsLogger.logger.info "Job '#{jid}' has been started"
uri = URI.parse(job_options[:url])
uri.path = "#{job_options[:config][:url_prefix]}/v2.0/report/#{jid}"
uri.to_s
end
end