closes #9824
[arvados.git] / services / api / app / controllers / arvados / v1 / containers_controller.rb
index 04a5ed0cb2b660b9bd71b214b6ce74dbde9e4ccd..21ee7efa53b5d4008c0f42717095194b9b0c39c6 100644 (file)
@@ -4,4 +4,19 @@ class Arvados::V1::ContainersController < ApplicationController
   accept_attribute_as_json :runtime_constraints, Hash
   accept_attribute_as_json :command, Array
 
+  def auth
+    if @object.locked_by_uuid != Thread.current[:api_client_authorization].uuid
+      raise ArvadosModel::PermissionDeniedError.new("Not locked by your token")
+    end
+    @object = @object.auth
+    show
+  end
+
+  # Updates use row locking to resolve races between multiple
+  # dispatchers trying to lock the same container.
+  def update
+    @object.with_lock do
+      super
+    end
+  end
 end