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
 | 
