X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0f7c52a790a95484c4358251937ad4105abc5071..e5164c27fbc150deba2e47d6e5143cf3cd65ee92:/services/api/app/models/container_request.rb diff --git a/services/api/app/models/container_request.rb b/services/api/app/models/container_request.rb index 3c3896771e..0a8e33d05f 100644 --- a/services/api/app/models/container_request.rb +++ b/services/api/app/models/container_request.rb @@ -12,12 +12,15 @@ class ContainerRequest < ArvadosModel include CommonApiTemplate include WhitelistUpdate - belongs_to :container, foreign_key: :container_uuid, primary_key: :uuid - belongs_to :requesting_container, { - class_name: 'Container', - foreign_key: :requesting_container_uuid, - primary_key: :uuid, - } + belongs_to :container, + foreign_key: 'container_uuid', + primary_key: 'uuid', + optional: true + belongs_to :requesting_container, + class_name: 'Container', + foreign_key: 'requesting_container_uuid', + primary_key: 'uuid', + optional: true # Posgresql JSONB columns should NOT be declared as serialized, Rails 5 # already know how to properly treat them. @@ -164,7 +167,7 @@ class ContainerRequest < ArvadosModel end elsif state == Committed # Behave as if the container is cancelled - update_attributes!(state: Final) + update!(state: Final) end return true end @@ -228,10 +231,17 @@ class ContainerRequest < ArvadosModel end end end - update_attributes!(state: Final) + update!(state: Final) end def update_collections(container:, collections: ['log', 'output']) + + # Check if parent is frozen or trashed, in which case it isn't + # valid to create new collections in the project, so return + # without creating anything. + owner = Group.find_by_uuid(self.owner_uuid) + return if owner && !owner.admin_change_permitted + collections.each do |out_type| pdh = container.send(out_type) next if pdh.nil? @@ -301,7 +311,7 @@ class ContainerRequest < ArvadosModel end def set_priority_zero - self.update_attributes!(priority: 0) if self.priority > 0 && self.state != Final + self.update!(priority: 0) if self.priority > 0 && self.state != Final end protected