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 |