| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  | require_relative "request_handler" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-30 14:27:42 +03:00
										 |  |  | module Devops | 
					
						
							| 
									
										
										
										
											2015-07-27 11:14:01 +03:00
										 |  |  |   module API2_0 | 
					
						
							| 
									
										
										
										
											2015-06-30 14:27:42 +03:00
										 |  |  |     module Handler | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |       class Report < RequestHandler | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def options | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |           params = @request.params | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |           options = {} | 
					
						
							|  |  |  |           ["project", "deploy_env", "type", "created_by", "date_from", "date_to", "sort", "status", "chef_node_name", "max_number"].each do |k| | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |             options[k] = params[k] unless params[k].nil? | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |           end | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |           #attributes_keys = params.keys.select{|k| k =~ /attributes\.*/} | 
					
						
							|  |  |  |           #attributes_keys.each do |ak| | 
					
						
							|  |  |  |           #  options[ak] = params[ak] | 
					
						
							|  |  |  |           #end | 
					
						
							| 
									
										
										
										
											2015-07-23 16:56:51 +03:00
										 |  |  |           options | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def all | 
					
						
							|  |  |  |           Devops::Db.connector.reports(options) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def all_latest | 
					
						
							|  |  |  |           Devops::Db.connector.latest_reports(options()) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def attributes name | 
					
						
							|  |  |  |           Devops::Db.connector.reports_attributes_values(name) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def report id | 
					
						
							|  |  |  |           r = Devops::Db.connector.report(id) | 
					
						
							|  |  |  |           file = r.file | 
					
						
							|  |  |  |           raise RecordNotFound.new("Report '#{id}' does not exist") unless File.exists? file | 
					
						
							|  |  |  |           return Rack::Utils.escape_html(File.read(file)), completed?(id) | 
					
						
							|  |  |  |         rescue RecordNotFound => e | 
					
						
							|  |  |  |           if status(id) == Worker::STATUS::IN_QUEUE | 
					
						
							|  |  |  |             return "Task '#{id}' has been queued", false | 
					
						
							|  |  |  |           else | 
					
						
							|  |  |  |             raise e | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def status id | 
					
						
							|  |  |  |           Sidekiq.redis do |connection| | 
					
						
							|  |  |  |             connection.hget("devops", id) | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def completed? id | 
					
						
							|  |  |  |           r = self.status(id) | 
					
						
							|  |  |  |           r == "completed" or r == "failed" | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-30 14:27:42 +03:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 |