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