fluke/devops-service/app/api2/handlers/report.rb

65 lines
1.6 KiB
Ruby
Raw Normal View History

2015-07-23 16:56:51 +03:00
require_relative "request_handler"
2015-06-30 14:27:42 +03:00
module Devops
module Version2_0
module Handler
2015-07-23 16:56:51 +03:00
class Report < RequestHandler
2015-07-23 17:04:24 +03:00
def initialize request, params
2015-07-23 16:56:51 +03:00
@params = params
2015-06-30 14:27:42 +03:00
end
2015-07-23 16:56:51 +03:00
def options
options = {}
["project", "deploy_env", "type", "created_by", "date_from", "date_to", "sort", "status", "chef_node_name", "max_number"].each do |k|
options[k] = @params[k] unless @params[k].nil?
end
attributes_keys = @params.keys.select{|k| k =~ /attributes\.*/}
attributes_keys.each do |ak|
options[ak] = @params[ak]
end
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