13973: Set priority of child container requests based on parent
[arvados.git] / services / api / app / models / container_request.rb
index a0ebdbab06aa44298d7e4a8ff17e728413b62f3c..4d3dde0a55a4bca4b76071b4ee57298205d1441a 100644 (file)
@@ -239,6 +239,11 @@ class ContainerRequest < ArvadosModel
       if !Rails.configuration.preemptible_instances and scheduling_parameters['preemptible']
         errors.add :scheduling_parameters, "preemptible instances are not allowed"
       end
+      if scheduling_parameters.include? 'max_run_time' and
+        (!scheduling_parameters['max_run_time'].is_a?(Integer) ||
+          scheduling_parameters['max_run_time'] < 0)
+          errors.add :scheduling_parameters, "max_run_time must be positive integer"
+      end
     end
   end
 
@@ -316,7 +321,13 @@ class ContainerRequest < ArvadosModel
     c = get_requesting_container()
     if !c.nil?
       self.requesting_container_uuid = c.uuid
-      self.priority = c.priority>0 ? 1 : 0
+      # Determine the priority of container request for the requesting
+      # container.
+      self.priority = ContainerRequest.
+            where('container_uuid=? and priority>0', self.requesting_container_uuid).
+            map do |cr|
+        cr.priority
+      end.max || 0
     end
   end