fluke/devops-service/workers/job_starter.rb
2015-07-23 13:54:36 +04:00

29 lines
868 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[:owner] ||= options[:request].env['REMOTE_USER']
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