12707: Adds default value setting on collection creation.
authorLucas Di Pentima <ldipentima@veritasgenetics.com>
Mon, 26 Feb 2018 17:26:41 +0000 (14:26 -0300)
committerLucas Di Pentima <ldipentima@veritasgenetics.com>
Mon, 26 Feb 2018 17:26:41 +0000 (14:26 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <ldipentima@veritasgenetics.com>

services/api/app/models/collection.rb

index 221176e056e09af1ea9ff75ac92ff1231e5cf584..a088d48e68f466a6b36ad4d663a031008cc95fd7 100644 (file)
@@ -19,6 +19,7 @@ class Collection < ArvadosModel
   serialize :storage_classes_confirmed, Array
 
   before_validation :default_empty_manifest
+  before_validation :default_storage_classes, on: :create
   before_validation :check_encoding
   before_validation :check_manifest_validity
   before_validation :check_signatures
@@ -453,6 +454,16 @@ class Collection < ArvadosModel
 
   protected
 
+  # Although the defaults for these columns is already set up on the schema,
+  # collection creation from an API client seems to ignore them, making the
+  # validation on empty desired storage classes return an error.
+  def default_storage_classes
+    if self.storage_classes_desired.nil? || self.storage_classes_desired.empty?
+      self.storage_classes_desired = ["default"]
+    end
+    self.storage_classes_confirmed ||= []
+  end
+
   def portable_manifest_text
     self.class.munge_manifest_locators(manifest_text) do |match|
       if match[2] # size