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
 | |
| 
 | 
