From: Peter Amstutz Date: Mon, 15 Oct 2018 20:20:39 +0000 (-0400) Subject: 14260: Bugfix for runtime_token/secret_mounts and retries X-Git-Tag: 1.3.0~70^2~6 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/9af5ea015328af0a423bd4e7675ee7031695d1be 14260: Bugfix for runtime_token/secret_mounts and retries Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- diff --git a/services/api/app/models/container.rb b/services/api/app/models/container.rb index 20158cad32..4c7ba51e1a 100644 --- a/services/api/app/models/container.rb +++ b/services/api/app/models/container.rb @@ -648,7 +648,11 @@ class Container < ArvadosModel container_image: self.container_image, mounts: self.mounts, runtime_constraints: self.runtime_constraints, - scheduling_parameters: self.scheduling_parameters + scheduling_parameters: self.scheduling_parameters, + secret_mounts: self.secret_mounts_was, + runtime_token: self.runtime_token_was, + runtime_user_uuid: self.runtime_user_uuid, + runtime_auth_scopes: self.runtime_auth_scopes } c = Container.create! c_attrs retryable_requests.each do |cr| diff --git a/services/api/test/unit/container_request_test.rb b/services/api/test/unit/container_request_test.rb index c7807826fc..8ff216e28c 100644 --- a/services/api/test/unit/container_request_test.rb +++ b/services/api/test/unit/container_request_test.rb @@ -677,6 +677,49 @@ class ContainerRequestTest < ActiveSupport::TestCase assert_not_equal cr2.container_uuid, cr.container_uuid end + test "Retry on container cancelled with runtime_token" do + set_user_from_auth :spectator + spec = api_client_authorizations(:active) + cr = create_minimal_req!(priority: 1, state: "Committed", + runtime_token: spec.token, + container_count_max: 2) + prev_container_uuid = cr.container_uuid + + c = act_as_system_user do + c = Container.find_by_uuid(cr.container_uuid) + assert_equal spec.token, c.runtime_token + c.update_attributes!(state: Container::Locked) + c.update_attributes!(state: Container::Running) + c + end + + cr.reload + assert_equal "Committed", cr.state + assert_equal prev_container_uuid, cr.container_uuid + prev_container_uuid = cr.container_uuid + + act_as_system_user do + c.update_attributes!(state: Container::Cancelled) + end + + cr.reload + assert_equal "Committed", cr.state + assert_not_equal prev_container_uuid, cr.container_uuid + prev_container_uuid = cr.container_uuid + + c = act_as_system_user do + c = Container.find_by_uuid(cr.container_uuid) + assert_equal spec.token, c.runtime_token + c.update_attributes!(state: Container::Cancelled) + c + end + + cr.reload + assert_equal "Final", cr.state + assert_equal prev_container_uuid, cr.container_uuid + + end + test "Output collection name setting using output_name with name collision resolution" do set_user_from_auth :active output_name = 'unimaginative name'