reports controller
This commit is contained in:
parent
98aa9d2779
commit
efb2f2ffcf
105
devops-service/report.rb
Normal file
105
devops-service/report.rb
Normal file
@ -0,0 +1,105 @@
|
||||
require 'sinatra/base'
|
||||
|
||||
class Report< Sinatra::Base
|
||||
|
||||
def initialize config, version
|
||||
super()
|
||||
@@config = config
|
||||
@paths = {
|
||||
"server" => @@config[:server_report_dir_v2],
|
||||
"deploy" => @@config[:deploy_report_dir_v2],
|
||||
"project" => @@config[:project_report_dir_v2]
|
||||
}
|
||||
end
|
||||
|
||||
enable :inline_templates
|
||||
|
||||
get "/all" do
|
||||
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
|
||||
end
|
||||
|
||||
get "/server/:id" do
|
||||
dir = @paths["server"] || ""
|
||||
file = File.join(dir, params[:id])
|
||||
return [404, "Report '#{params[:id]}' does not exist"] unless File.exists? file
|
||||
@text = File.read(file)
|
||||
@done = completed?(params[:id])
|
||||
erb :index
|
||||
end
|
||||
|
||||
get "/deploy/:id" do
|
||||
dir = @paths["deploy"] || ""
|
||||
file = File.join(dir, params[:id])
|
||||
return [404, "Report '#{params[:id]}' does not exist"] unless File.exists? file
|
||||
@text = File.read(file)
|
||||
@done = completed?(params[:id])
|
||||
erb :index
|
||||
end
|
||||
|
||||
get "/project/:project/:env/:id" do
|
||||
dir = @paths["project"] || ""
|
||||
file = File.join(dir, params[:project], params[:env], params[:id])
|
||||
return [404, "Report '#{params[:id]}' for project '#{params[:project]}' and env '#{params[:env]}' 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>
|
||||
Loading…
Reference in New Issue
Block a user