18590: Merge branch 'main' into 18590-fix-discovery-doc
authorWard Vandewege <ward@curii.com>
Thu, 16 Dec 2021 15:38:14 +0000 (10:38 -0500)
committerWard Vandewege <ward@curii.com>
Thu, 16 Dec 2021 15:38:14 +0000 (10:38 -0500)
Arvados-DCO-1.1-Signed-off-by: Ward Vandewege <ward@curii.com>

services/api/app/models/container_request.rb
services/api/test/unit/container_request_test.rb

index 4a580816cd737674966781d63dfee9a1b4a1dbee..badb40ba5fe7ff5ce3cf432f615a02147cb7b367 100644 (file)
@@ -401,13 +401,13 @@ class ContainerRequest < ArvadosModel
     if self.new_record? || self.state_was == Uncommitted
       # Allow create-and-commit in a single operation.
       permitted.push(*AttrsPermittedBeforeCommit)
-    elsif mounts_changed? && mounts_was.keys == mounts.keys
+    elsif mounts_changed? && mounts_was.keys.sort == mounts.keys.sort
       # Ignore the updated mounts if the only changes are default/zero
       # values as added by controller, see 17774
       only_defaults = true
       mounts.each do |path, mount|
         (mount.to_a - mounts_was[path].to_a).each do |k, v|
-          if !["", false, nil].index(v)
+          if ![0, "", false, nil].index(v)
             only_defaults = false
           end
         end
index 9f412c7bb09ad57a74dae753d83816c325cdefaa..43d062af878c99550e9b4c3a62b8ab6bb6ebef9b 100644 (file)
@@ -1078,6 +1078,7 @@ class ContainerRequestTest < ActiveSupport::TestCase
    # controller, does not have any real effect and should be
    # accepted/ignored rather than causing an error when the CR state
    # dictates those attributes are not allowed to change.
+   ['Committed', true, {priority: 0, mounts: {"/out" => {"capacity" => 0, "kind" => "tmp"}}}, {mounts: {"/out" => {"kind" => "tmp"}}}],
    ['Committed', true, {priority: 0, mounts: {"/out" => {"capacity" => 1000000, "kind" => "tmp", "exclude_from_output": false}}}],
    ['Committed', true, {priority: 0, mounts: {"/out" => {"capacity" => 1000000, "kind" => "tmp", "repository_name": ""}}}],
    ['Committed', true, {priority: 0, mounts: {"/out" => {"capacity" => 1000000, "kind" => "tmp", "content": nil}}}],
@@ -1106,12 +1107,18 @@ class ContainerRequestTest < ActiveSupport::TestCase
    ['Final', false, {container_count: 2}],
    ['Final', true, {name: "foobar"}],
    ['Final', true, {name: "foobar", description: "baz"}],
-  ].each do |state, permitted, updates|
+  ].each do |state, permitted, updates, create_attrs|
     test "state=#{state} can#{'not' if !permitted} update #{updates.inspect}" do
       act_as_user users(:active) do
-        cr = create_minimal_req!(priority: 1,
-                                 state: "Committed",
-                                 container_count_max: 1)
+        attrs = {
+          priority: 1,
+          state: "Committed",
+          container_count_max: 1
+        }
+        if !create_attrs.nil?
+          attrs.merge!(create_attrs)
+        end
+        cr = create_minimal_req!(attrs)
         case state
         when 'Committed'
           # already done