Add 'tools/arvbox/' from commit 'd3d368758db1f4a9fa5b89f77b5ee61d68ef5b72'
[arvados.git] / services / api / app / models / container_request.rb
index 4e76a0e08aa00ecb974026caa279248d2fd68ed5..acb751c89401424e04d03b950d5acc675dceaca8 100644 (file)
@@ -62,6 +62,12 @@ class ContainerRequest < ArvadosModel
     %w(modified_by_client_uuid container_uuid requesting_container_uuid)
   end
 
+  def container_completed!
+    # may implement retry logic here in the future.
+    self.state = ContainerRequest::Final
+    self.save!
+  end
+
   protected
 
   def fill_field_defaults
@@ -70,7 +76,6 @@ class ContainerRequest < ArvadosModel
     self.runtime_constraints ||= {}
     self.mounts ||= {}
     self.cwd ||= "."
-    self.priority ||= 1
   end
 
   # Turn a container request into a container.
@@ -119,6 +124,10 @@ class ContainerRequest < ArvadosModel
         errors.add :container_uuid, "has not been resolved to a container."
       end
 
+      if priority.nil?
+        errors.add :priority, "cannot be nil"
+      end
+
       # Can update priority, container count.
       permitted.push :priority, :container_count_max, :container_uuid
 
@@ -131,6 +140,10 @@ class ContainerRequest < ArvadosModel
       end
 
     when Final
+      if not current_user.andand.is_admin
+        errors.add :state, "of container request can only be set to Final by system."
+      end
+
       if self.state_changed?
           permitted.push :state
       else