fluke/devops-service/report.rb

90 lines
1.7 KiB
Ruby
Raw Normal View History

2014-11-07 15:06:04 +03:00
require 'sinatra/base'
2014-11-21 12:55:07 +03:00
class ReportRoutes < Sinatra::Base
2014-11-07 15:06:04 +03:00
def initialize config, version
super()
@@config = config
end
enable :inline_templates
get "/all" do
2014-12-02 16:13:48 +03:00
options = {}
2014-12-04 13:32:33 +03:00
["project", "deploy_env", "type", "created_by", "date_from", "date_to", "sort", "status"].each do |k|
2014-12-02 16:13:48 +03:00
options[k] = params[k] unless params[k].nil?
end
json DevopsService.mongo.reports(options).map{|r| r.to_hash}
2014-11-17 14:23:59 +03:00
=begin
2014-11-07 15:06:04 +03:00
res = {}
uri = URI.parse(request.url)
pref = File.dirname(uri.path)
@paths.each do |key, dir|
files = []
Dir[File.join(dir, "/**/*")].each do |f|
next if File.directory?(f)
jid = File.basename(f)
uri.path = File.join(pref, key, f[dir.length..-1])
o = {
"file" => uri.to_s,
"created" => File.ctime(f).to_s,
"status" => task_status(jid)
}
files.push o
end
res[key] = files
end
json res
2014-11-17 14:23:59 +03:00
=end
2014-11-07 15:06:04 +03:00
end
2014-11-17 14:23:59 +03:00
get "/:id" do
r = DevopsService.mongo.report(params[:id])
file = r.file
2014-11-07 15:06:04 +03:00
return [404, "Report '#{params[:id]}' does not exist"] unless File.exists? file
@text = File.read(file)
@done = completed?(params[:id])
erb :index
end
get "/favicon.ico" do
[404, ""]
end
def completed? id
r = task_status(id)
r == "completed" or r == "failed"
end
def task_status id
r = Sidekiq.redis do |connection|
connection.hget("devops", id)
end
end
end
__END__
@@ layout
<html>
<head>
<% unless @done %>
<script>
function reload() {
location.reload();
}
setTimeout(reload, 5000);
</script>
<% end %>
</head>
<body>
<%= yield %>
</body>
</html>
@@ index
<pre>
<%= @text %>
</pre>