17967: Test new behavior for default storage_classes_desired.
authorTom Clegg <tom@curii.com>
Mon, 9 Aug 2021 15:29:10 +0000 (11:29 -0400)
committerTom Clegg <tom@curii.com>
Mon, 9 Aug 2021 15:29:10 +0000 (11:29 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

services/api/app/models/collection.rb
services/api/app/models/container.rb
services/api/app/models/container_request.rb
services/api/test/unit/collection_test.rb
services/api/test/unit/container_request_test.rb

index 5edca82a0478c4c4f5ca73c5245d1401e8c714f7..d1d5ace0c3bbf78e413e30c96828ff4a914504bc 100644 (file)
@@ -17,7 +17,7 @@ class Collection < ArvadosModel
   # Posgresql JSONB columns should NOT be declared as serialized, Rails 5
   # already know how to properly treat them.
   attribute :properties, :jsonbHash, default: {}
-  attribute :storage_classes_desired, :jsonbArray, default: Rails.configuration.DefaultStorageClasses
+  attribute :storage_classes_desired, :jsonbArray, default: lambda { Rails.configuration.DefaultStorageClasses }
   attribute :storage_classes_confirmed, :jsonbArray, default: []
 
   before_validation :default_empty_manifest
index a880b65ac5d2c7bbd259da943475f074686fcb71..d6a44c80239d46c05d9d7ead49e14f538e19846d 100644 (file)
@@ -22,7 +22,7 @@ class Container < ArvadosModel
   attribute :secret_mounts, :jsonbHash, default: {}
   attribute :runtime_status, :jsonbHash, default: {}
   attribute :runtime_auth_scopes, :jsonbArray, default: []
-  attribute :output_storage_classes, :jsonbArray, default: Rails.configuration.DefaultStorageClasses
+  attribute :output_storage_classes, :jsonbArray, default: lambda { Rails.configuration.DefaultStorageClasses }
 
   serialize :environment, Hash
   serialize :mounts, Hash
index f603d4dd7949ce11d874b2926369c602b41f892e..4a580816cd737674966781d63dfee9a1b4a1dbee 100644 (file)
@@ -23,7 +23,7 @@ class ContainerRequest < ArvadosModel
   # already know how to properly treat them.
   attribute :properties, :jsonbHash, default: {}
   attribute :secret_mounts, :jsonbHash, default: {}
-  attribute :output_storage_classes, :jsonbArray, default: Rails.configuration.DefaultStorageClasses
+  attribute :output_storage_classes, :jsonbArray, default: lambda { Rails.configuration.DefaultStorageClasses }
 
   serialize :environment, Hash
   serialize :mounts, Hash
index 916ca095872db7a3a80d59799654dc32504e1f2b..e6912217d53fa5b484be8597ae6280465eda8ae5 100644 (file)
@@ -693,6 +693,19 @@ class CollectionTest < ActiveSupport::TestCase
     end
   end
 
+  test "storage_classes_desired default respects config" do
+    saved = Rails.configuration.DefaultStorageClasses
+    Rails.configuration.DefaultStorageClasses = ["foo"]
+    begin
+      act_as_user users(:active) do
+        c = Collection.create!
+        assert_equal ["foo"], c.storage_classes_desired
+      end
+    ensure
+      Rails.configuration.DefaultStorageClasses = saved
+    end
+  end
+
   test "storage_classes_desired cannot be empty" do
     act_as_user users(:active) do
       c = collections(:collection_owned_by_active)
index 7686e1a140618588fc15dcd8f71cb733d5af04c5..9f412c7bb09ad57a74dae753d83816c325cdefaa 100644 (file)
@@ -1292,14 +1292,20 @@ class ContainerRequestTest < ActiveSupport::TestCase
   end
 
   test "default output_storage_classes" do
-    act_as_user users(:active) do
-      cr = create_minimal_req!(priority: 1,
-                               state: ContainerRequest::Committed,
-                               output_name: 'foo')
-      run_container(cr)
-      cr.reload
-      output = Collection.find_by_uuid(cr.output_uuid)
-      assert_equal ["default"], output.storage_classes_desired
+    saved = Rails.configuration.DefaultStorageClasses
+    Rails.configuration.DefaultStorageClasses = ["foo"]
+    begin
+      act_as_user users(:active) do
+        cr = create_minimal_req!(priority: 1,
+                                 state: ContainerRequest::Committed,
+                                 output_name: 'foo')
+        run_container(cr)
+        cr.reload
+        output = Collection.find_by_uuid(cr.output_uuid)
+        assert_equal ["foo"], output.storage_classes_desired
+      end
+    ensure
+      Rails.configuration.DefaultStorageClasses = saved
     end
   end