15087: Make container status a separate panel
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Fri, 14 Jun 2019 14:00:06 +0000 (10:00 -0400)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Fri, 14 Jun 2019 14:00:06 +0000 (10:00 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

apps/workbench/app/views/projects/_compute_node_summary.html.erb
apps/workbench/app/views/projects/_container_summary.html.erb [new file with mode: 0644]
apps/workbench/app/views/projects/_show_dashboard.html.erb

index 613751cb02b6205a961f9832ac4ed8a1a9920004..40a212e5b642e3ecfb8ab9d6bc76627a26bb876a 100644 (file)
@@ -9,23 +9,12 @@ SPDX-License-Identifier: AGPL-3.0 %>
         <col width="50%">
       </colgroup>
       <tr>
-       <% queued_containers = Container.order("modified_at asc").filter([["state", "in", ["Queued", "Locked"]], ["priority", ">", 0]]).limit(1) %>
-       <% running_containers = Container.order("started_at desc").where(state: "Running").limit(1) %>
-        <td><%= queued_containers.items_available %></td>
-        <td><%= running_containers.items_available %></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>Pending containers</th>
-        <th>Running containers</th>
-      </tr>
-      <tr>
-        <th><%= if queued_containers.first then render_runtime(Time.now - queued_containers.first.modified_at, false, false) else "-" end %></th>
-        <th><%= if running_containers.first then render_runtime(Time.now - running_containers.first.started_at, false, false) else "-" end %></th>
-      </tr>
-      <tr>
-        <th>Queue wait</th>
-        <th>Last start</th>
+        <th>Busy nodes</th>
+        <th>Idle nodes</th>
       </tr>
     </table>
-
 </div>
diff --git a/apps/workbench/app/views/projects/_container_summary.html.erb b/apps/workbench/app/views/projects/_container_summary.html.erb
new file mode 100644 (file)
index 0000000..1a411af
--- /dev/null
@@ -0,0 +1,31 @@
+<%# Copyright (C) The Arvados Authors. All rights reserved.
+
+SPDX-License-Identifier: AGPL-3.0 %>
+
+<div class="compute-summary-numbers">
+    <table>
+      <colgroup>
+        <col width="50%">
+        <col width="50%">
+      </colgroup>
+      <tr>
+       <% pending_containers = Container.order("modified_at asc").filter([["state", "in", ["Queued", "Locked"]], ["priority", ">", 0]]).limit(1) %>
+       <% running_containers = Container.order("started_at asc").where(state: "Running").limit(1) %>
+        <td><%= pending_containers.items_available %></td>
+        <td><%= running_containers.items_available %></td>
+      </tr>
+      <tr>
+        <th>Pending containers</th>
+        <th>Running containers</th>
+      </tr>
+      <tr>
+        <th><%= if pending_containers.first then render_runtime(Time.now - pending_containers.first.modified_at, false, false) else "-" end %></th>
+        <th><%= if running_containers.first then render_runtime(Time.now - running_containers.first.started_at, false, false) else "-" end %></th>
+      </tr>
+      <tr>
+        <th>Oldest pending</th>
+        <th>Longest running</th>
+      </tr>
+    </table>
+
+</div>
index d4ea2de155af7384a844d0c4593314ebd201867c..3152af7747dcc3d992fa697f9b763408fa9c5932 100644 (file)
@@ -186,6 +186,16 @@ SPDX-License-Identifier: AGPL-3.0 %>
           </div>
         </div>
       </div>
+      <% end %>
+       <% if Container.api_exists?(:index) %>
+      <div class="panel panel-default" style="min-height: 10.5em">
+        <div class="panel-heading"><span class="panel-title">Container status</span></div>
+        <div class="panel-body compute-node-summary-pane">
+          <div>
+            <%= render partial: 'container_summary' %>
+         </div>
+       </div>
+      </div>
       <% end %>
       <% if Rails.configuration.show_recent_collections_on_dashboard %>
       <div class="panel panel-default">