69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require_relative "request_handler" | ||
|  | 
 | ||
|  | module Devops | ||
|  |   module API3 | ||
|  |     module Handler | ||
|  |       class JobTask < RequestHandler | ||
|  | 
 | ||
|  |         def options | ||
|  |           params = @request.params | ||
|  |           options = {} | ||
|  |           ["project", "environment", "category", "type", "created_by", "status", "server_id", "max_number"].each do |k| | ||
|  |             options[k] = params[k] unless params[k].nil? | ||
|  |           end | ||
|  |           fill_date_params_for_searching(options) | ||
|  | 
 | ||
|  |           #attributes_keys = params.keys.select{|k| k =~ /attributes\.*/} | ||
|  |           #attributes_keys.each do |ak| | ||
|  |           #  options[ak] = params[ak] | ||
|  |           #end | ||
|  |           options | ||
|  |         end | ||
|  | 
 | ||
|  |         def all | ||
|  |           sort = extract_sort_params_for_searching | ||
|  |           limit = extract_limit_params_for_searching(10) | ||
|  |           Devops::Model::JobTask.where(options).sort(sort).limit(limit) | ||
|  |         end | ||
|  | 
 | ||
|  |         def all_latest | ||
|  |           # TODO: | ||
|  |           #Devops::Db.connector.latest_reports(options()) | ||
|  |           [] | ||
|  |         end | ||
|  | 
 | ||
|  |         def attributes name | ||
|  |           # TODO: | ||
|  |           #Devops::Db.connector.reports_attributes_values(name) | ||
|  |           [] | ||
|  |         end | ||
|  | 
 | ||
|  |         def task id | ||
|  |           Devops::Model::JobTask.find(id) | ||
|  |         rescue Mongoid::Errors::DocumentNotFound => e | ||
|  |           raise Devops::Exception::RecordNotFound.new("JobTask '#{id}' does not exist") | ||
|  |         end | ||
|  | 
 | ||
|  |         def report id | ||
|  |           t = task(id) | ||
|  |           tstatus = t.status | ||
|  |           if tstatus == Worker::STATUS::IN_QUEUE | ||
|  |             return "Task '#{id}' has been queued", false | ||
|  |           end | ||
|  |           file = t.file | ||
|  |           raise Devops::Exception::RecordNotFound.new("JobTask '#{id}' file does not exist") unless File.exists? file | ||
|  |           completed = (tstatus == "completed" or tstatus == "failed") | ||
|  |           return Rack::Utils.escape_html(File.read(file).encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')), completed | ||
|  |         end | ||
|  | 
 | ||
|  |         def status id | ||
|  |           t = task(id) | ||
|  |           t.status | ||
|  |         end | ||
|  | 
 | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end | ||
|  | 
 |