closes #9824
[arvados.git] / services / api / app / controllers / arvados / v1 / containers_controller.rb
index 67ec5b99f36de10e4352ede7b7a9fecdbd78eabb..21ee7efa53b5d4008c0f42717095194b9b0c39c6 100644 (file)
@@ -1,2 +1,22 @@
 class Arvados::V1::ContainersController < ApplicationController
+  accept_attribute_as_json :environment, Hash
+  accept_attribute_as_json :mounts, Hash
+  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