From: Tom Clegg Date: Fri, 22 Feb 2013 23:17:12 +0000 (-0800) Subject: show "sinfo" results on /nodes page X-Git-Tag: 1.1.0~3431 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/7958273916a9da637c50cf2f4729f65b85c11c52 show "sinfo" results on /nodes page --- diff --git a/app/assets/stylesheets/nodes.css b/app/assets/stylesheets/nodes.css index ba901922f1..79b7293f17 100644 --- a/app/assets/stylesheets/nodes.css +++ b/app/assets/stylesheets/nodes.css @@ -6,12 +6,32 @@ /* unknown status - might be bad */ background: #ff8888; } -.node-status-running { +.node-status-running .node-status { background: #88ff88; } -.node-status-missing { +.node-status-missing .node-status { background: #ff8888; } -.node-status-terminated { +.node-status-terminated .node-status { background: #ffffff; } + +.node-slurm-state { + /* unknown status - might be bad */ + background: #ff8888; +} +.node-status-missing .node-slurm-state { + background: #ffffff; +} +.node-status-terminated .node-slurm-state { + background: #ffffff; +} +.node-status-running .node-slurm-state-alloc { + background: #88ff88; +} +.node-status-running .node-slurm-state-idle { + background: #ffbbbb; +} +.node-status-running .node-slurm-state-down { + background: #ff8888; +} diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb index 5dce1b13cc..1b4e37dad0 100644 --- a/app/controllers/nodes_controller.rb +++ b/app/controllers/nodes_controller.rb @@ -1,5 +1,30 @@ class NodesController < ApplicationController def index @objects = model_class.order("created_at desc") + + @slurm_state = {} + IO.popen('sinfo --noheader --Node || echo "compute[1-3] foo bar DOWN"').readlines.each do |line| + tokens = line.strip.split + nodestate = tokens.last + nodenames = [] + if (re = tokens.first.match /^([^\[]*)\[([-\d,]+)\]$/) + nodeprefix = re[1] + re[2].split(',').each do |number_range| + if number_range.index('-') + range = number_range.split('-').collect(&:to_i) + (range[0]..range[1]).each do |n| + nodenames << "#{nodeprefix}#{n}" + end + else + nodenames << "#{nodeprefix}#{number_range}" + end + end + else + nodenames << tokens.first + end + nodenames.each do |nodename| + @slurm_state[nodename] = nodestate.downcase + end + end end end diff --git a/app/views/nodes/index.html.erb b/app/views/nodes/index.html.erb index d4e8aa1eda..bb346e9676 100644 --- a/app/views/nodes/index.html.erb +++ b/app/views/nodes/index.html.erb @@ -2,6 +2,8 @@ status + + sinfo uuid @@ -23,9 +25,11 @@ <% @objects.each do |o| %> - - + + <%= o.status %> + + <%= @slurm_state[o.hostname] %> <%= o.uuid %> @@ -47,7 +51,7 @@ <% if %> > - +
<% o.info.each do |k,v| %>
<%= k %>