Make MAX_SLOTS a configurable parameter, and rename it to max_compute_nodes.
authorWard Vandewege <ward@curoverse.com>
Wed, 6 May 2015 19:46:28 +0000 (15:46 -0400)
committerWard Vandewege <ward@curoverse.com>
Wed, 6 May 2015 19:46:28 +0000 (15:46 -0400)
refs #5926

services/api/app/models/node.rb
services/api/config/application.default.yml

index bf27f6ff99104879da00019bd09bd7f975fbfd74..6c056502d44170efd09bcec2db0696341f1a3166 100644 (file)
@@ -13,8 +13,7 @@ class Node < ArvadosModel
   belongs_to(:job, foreign_key: :job_uuid, primary_key: :uuid)
   attr_accessor :job_readable
 
-  MAX_SLOTS = 64
-
+  @@max_compute_nodes = Rails.configuration.max_compute_nodes
   @@dns_server_conf_dir = Rails.configuration.dns_server_conf_dir
   @@dns_server_conf_template = Rails.configuration.dns_server_conf_template
   @@dns_server_reload_command = Rails.configuration.dns_server_reload_command
@@ -114,7 +113,7 @@ class Node < ArvadosModel
         rescue ActiveRecord::RecordNotUnique
           try_slot += 1
         end
-        raise "No available node slots" if try_slot == MAX_SLOTS
+        raise "No available node slots" if try_slot == @@max_compute_nodes
       end while true
       self.hostname = self.class.hostname_for_slot(self.slot_number)
     end
@@ -192,7 +191,7 @@ class Node < ArvadosModel
   # At startup, make sure all DNS entries exist.  Otherwise, slurmctld
   # will refuse to start.
   if @@dns_server_conf_dir and @@dns_server_conf_template
-    (0..MAX_SLOTS-1).each do |slot_number|
+    (0..@@max_compute_nodes-1).each do |slot_number|
       hostname = hostname_for_slot(slot_number)
       hostfile = File.join @@dns_server_conf_dir, "#{hostname}.conf"
       if !File.exists? hostfile
index 864610754e9fccf3ffbbc185e0dc71caa226dfee..9ebaa50f4d7af68246b6ae446b879a223271cb0b 100644 (file)
@@ -304,3 +304,6 @@ common:
   # have been finished for at least this many seconds, and delete their
   # stderr logs from the logs table.
   clean_job_log_rows_after: <%= 30.days %>
+
+  # The maximum number of compute nodes that can be in use simultaneously
+  max_compute_nodes: 64