From: Ward Vandewege Date: Thu, 16 Dec 2021 15:38:14 +0000 (-0500) Subject: 18590: Merge branch 'main' into 18590-fix-discovery-doc X-Git-Tag: 2.4.0~133^2 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/69a34fc0050898ca7dfc33303d2846db1a339aca?hp=49ef11e68168170d3ba4bebf17a428d99759178f 18590: Merge branch 'main' into 18590-fix-discovery-doc Arvados-DCO-1.1-Signed-off-by: Ward Vandewege --- diff --git a/services/api/app/models/container_request.rb b/services/api/app/models/container_request.rb index 4a580816cd..badb40ba5f 100644 --- a/services/api/app/models/container_request.rb +++ b/services/api/app/models/container_request.rb @@ -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 diff --git a/services/api/test/unit/container_request_test.rb b/services/api/test/unit/container_request_test.rb index 9f412c7bb0..43d062af87 100644 --- a/services/api/test/unit/container_request_test.rb +++ b/services/api/test/unit/container_request_test.rb @@ -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