[ARVADOS] created: dcf5e0cef46e3aa3baba27da3f922b1c357ba3f3
git at public.curoverse.com
git at public.curoverse.com
Fri Sep 12 16:32:09 EDT 2014
at dcf5e0cef46e3aa3baba27da3f922b1c357ba3f3 (commit)
commit dcf5e0cef46e3aa3baba27da3f922b1c357ba3f3
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Fri Sep 12 16:32:01 2014 -0400
Working on recent pipelines/collections tables
diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb
index f147207..a0ed2ea 100644
--- a/apps/workbench/app/controllers/application_controller.rb
+++ b/apps/workbench/app/controllers/application_controller.rb
@@ -694,7 +694,22 @@ class ApplicationController < ActionController::Base
helper_method :running_pipelines
def running_pipelines
- PipelineInstance.where(state: "RunningOnServer").sort_by { |x| x.started_at }.reverse
+ PipelineInstance.filter([["state", "=", "RunningOnServer"]]).sort_by { |x| (x.started_at rescue x.modified_at) }
+ end
+
+ helper_method :finished_pipelines
+ def finished_pipelines lim
+ PipelineInstance.limit(lim).filter([["state", "in", ["Completed", "Failed", "Cancelled"]]]).sort_by { |x| (x.finished_at rescue x.modified_at) }.reverse
+ end
+
+ helper_method :recent_collections
+ def recent_collections lim
+ c = Collection.limit(lim).filter([["owner_uuid", "is_a", "arvados#group"]]).sort_by { |x| x.modified_at }.reverse
+ own = {}
+ Group.filter([["uuid", "in", c.map(&:owner_uuid)]]).each do |g|
+ own[g[:uuid]] = g
+ end
+ {collections: c, owners: own}
end
helper_method :my_project_tree
diff --git a/apps/workbench/app/views/projects/_compute_node_status.html.erb b/apps/workbench/app/views/projects/_compute_node_status.html.erb
index 5342a17..db7326e 100644
--- a/apps/workbench/app/views/projects/_compute_node_status.html.erb
+++ b/apps/workbench/app/views/projects/_compute_node_status.html.erb
@@ -2,7 +2,7 @@
<% nodes = Node.all %>
- <div class="col-sm-4 compute-summary-numbers">
+ <div class="col-sm-3 compute-summary-numbers">
<div class="panel panel-default">
<table>
<colgroup>
@@ -26,7 +26,7 @@
</table>
</div>
</div>
- <div class="col-sm-8">
+ <div class="col-sm-9">
<div class="clearfix" style="margin-top:0.5em; margin-bottom:0.5em">
<% nodes.sort_by { |n| n.hostname || "" }.each do |n| %>
<% if n.crunch_worker_state.in? ["busy", "idle"] %>
diff --git a/apps/workbench/app/views/projects/index.html.erb b/apps/workbench/app/views/projects/index.html.erb
index 92ec186..4288c69 100644
--- a/apps/workbench/app/views/projects/index.html.erb
+++ b/apps/workbench/app/views/projects/index.html.erb
@@ -53,12 +53,17 @@
<%= render partial: 'compute_node_status' %>
<div class="row">
- <div class="col-md-4">
+ <div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">Pipelines running</div>
<div class="panel-body">
<% running_pipelines.each do |p| %>
- <%= p %>
+ <div>
+ <%= link_to_if_arvados_object p, friendly_name: true %>
+ </div>
+ <div>
+ [Progress] <span class="pull-right"><%= p[:modified_at] %></span>
+ </div>
<% end %>
</div>
</div>
@@ -67,13 +72,28 @@
<div class="panel panel-default">
<div class="panel-heading">Recently finished pipelines</div>
<div class="panel-body">
+ <% finished_pipelines(8).each do |p| %>
+ <div>
+ <%= link_to_if_arvados_object p, friendly_name: true %>
+ </div>
+ <% end %>
</div>
</div>
</div>
- <div class="col-md-4">
+ <div class="col-md-5">
<div class="panel panel-default">
<div class="panel-heading">Recent collections</div>
- <div class="panel-body">
+ <div class="panel-body" style="overflow-x: scroll;">
+ <% r = recent_collections(8) %>
+ <% r[:collections].each do |p| %>
+ <div>
+ <i class="fa fa-fw fa-folder-o"></i><%= link_to_if_arvados_object r[:owners][p[:owner_uuid]], friendly_name: true %>/
+ <span class="pull-right"><%= p[:modified_at] %></span>
+ </div>
+ <div style="margin-left: 1em">
+ <i class="fa fa-fw fa-archive"></i><%= link_to_if_arvados_object p, friendly_name: true %>
+ </div>
+ <% end %>
</div>
</div>
</div>
commit 90ecfcca3bcfd82b91d396c271e19698ae970715
Merge: 63b52a3 c78412e
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Fri Sep 12 15:52:30 2014 -0400
Merge branch 'master' into 3605-improved-dashboard
commit 63b52a3a8d2fb55bd6aa0386e7d86851915be5af
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Fri Sep 12 15:52:03 2014 -0400
3605: Dashboard compute node and pipeline status work in progress
diff --git a/apps/workbench/app/assets/javascripts/application.js b/apps/workbench/app/assets/javascripts/application.js
index cf0812a..950ee50 100644
--- a/apps/workbench/app/assets/javascripts/application.js
+++ b/apps/workbench/app/assets/javascripts/application.js
@@ -205,4 +205,9 @@ jQuery(function($){
});
});
+ $(document).on('click', '.compute-detail', function(e) {
+ console.log("woble");
+ $(e.target).collapse('hide');
+ });
+
});
diff --git a/apps/workbench/app/assets/stylesheets/projects.css.scss b/apps/workbench/app/assets/stylesheets/projects.css.scss
index 53b352d..724c40a 100644
--- a/apps/workbench/app/assets/stylesheets/projects.css.scss
+++ b/apps/workbench/app/assets/stylesheets/projects.css.scss
@@ -10,3 +10,28 @@ div.scroll-20em {
height: 20em;
overflow-y: scroll;
}
+
+.compute-summary {
+ margin: 0.1em;
+}
+
+.compute-summary-head {
+ margin-left: 0.3em;
+}
+
+.compute-detail {
+ border: 1px solid;
+ border-color: #DDD;
+ border-radius: 3px;
+ padding: 0.2em;
+ position: absolute;
+ z-index: 1;
+ background: white;
+}
+
+.compute-summary-numbers table {
+ width: 100%;
+ td,th {
+ text-align: center;
+ }
+}
\ No newline at end of file
diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb
index 8acaa60..f147207 100644
--- a/apps/workbench/app/controllers/application_controller.rb
+++ b/apps/workbench/app/controllers/application_controller.rb
@@ -692,6 +692,11 @@ class ApplicationController < ActionController::Base
end.reverse
end
+ helper_method :running_pipelines
+ def running_pipelines
+ PipelineInstance.where(state: "RunningOnServer").sort_by { |x| x.started_at }.reverse
+ end
+
helper_method :my_project_tree
def my_project_tree
build_project_trees
diff --git a/apps/workbench/app/views/projects/_compute_node_status.html.erb b/apps/workbench/app/views/projects/_compute_node_status.html.erb
new file mode 100644
index 0000000..5342a17
--- /dev/null
+++ b/apps/workbench/app/views/projects/_compute_node_status.html.erb
@@ -0,0 +1,48 @@
+<div class="row">
+
+ <% nodes = Node.all %>
+
+ <div class="col-sm-4 compute-summary-numbers">
+ <div class="panel panel-default">
+ <table>
+ <colgroup>
+ <col width="25%">
+ <col width="25%">
+ <col width="25%">
+ <col width="25%">
+ </colgroup>
+ <tr>
+ <td>0</td>
+ <td><%= nodes.select {|n| n.crunch_worker_state.in? ["busy", "idle"] }.size %></td>
+ <td><%= nodes.select {|n| n.crunch_worker_state == "busy" }.size %></td>
+ <td><%= nodes.select {|n| n.crunch_worker_state == "idle" }.size %></td>
+ </tr>
+ <tr>
+ <th>Queue</th>
+ <th>Nodes</th>
+ <th>Busy</th>
+ <th>Idle</th>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div class="col-sm-8">
+ <div class="clearfix" style="margin-top:0.5em; margin-bottom:0.5em">
+ <% nodes.sort_by { |n| n.hostname || "" }.each do |n| %>
+ <% if n.crunch_worker_state.in? ["busy", "idle"] %>
+ <div class="pull-left compute-summary">
+ <a data-toggle="collapse" href="#detail_<%= n.hostname %>" class="compute-summary-head label label-<%= if n.crunch_worker_state == 'busy' then 'primary' else 'default' end %>">
+ <%= n.hostname %>
+ </a>
+ <div id="detail_<%= n.hostname %>" class="collapse compute-detail">
+ state: <%= n.crunch_worker_state %><br>
+ <% [:total_cpu_cores, :total_ram_mb, :total_scratch_mb].each do |i| %>
+ <%= i.to_s.gsub '_', ' ' %>: <%= n.info[i] %><br>
+ <% end %>
+ </div>
+ </div>
+ <% end %>
+ <% end %>
+ </div>
+ </div>
+</div>
diff --git a/apps/workbench/app/views/projects/index.html.erb b/apps/workbench/app/views/projects/index.html.erb
index 219bad2..92ec186 100644
--- a/apps/workbench/app/views/projects/index.html.erb
+++ b/apps/workbench/app/views/projects/index.html.erb
@@ -49,6 +49,36 @@
</div>
</div>
</div>
+
+ <%= render partial: 'compute_node_status' %>
+
+ <div class="row">
+ <div class="col-md-4">
+ <div class="panel panel-default">
+ <div class="panel-heading">Pipelines running</div>
+ <div class="panel-body">
+ <% running_pipelines.each do |p| %>
+ <%= p %>
+ <% end %>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="panel panel-default">
+ <div class="panel-heading">Recently finished pipelines</div>
+ <div class="panel-body">
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="panel panel-default">
+ <div class="panel-heading">Recent collections</div>
+ <div class="panel-body">
+ </div>
+ </div>
+ </div>
+ </div>
+
<div class="row">
<div class="col-sm-12">
<div class="panel panel-default">
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list