Support searching jobs by script_version_descends_from. refs #1445
[arvados.git] / app / controllers / nodes_controller.rb
index ed5ffc0fab29e4a582cfdfaf30f177f857e361ce..1b4e37dad06e4121b13e0f9c6430724e168f8302 100644 (file)
@@ -1,6 +1,30 @@
 class NodesController < ApplicationController
-  skip_before_filter :authenticate_api_token
   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