28 lines
803 B
Ruby
28 lines
803 B
Ruby
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
|