Added tests and documentation for save and save_new methods in
authorFuad Muhic <muhic.fuad@gmail.com>
Tue, 22 May 2018 15:40:15 +0000 (17:40 +0200)
committerFuad Muhic <muhic.fuad@gmail.com>
Tue, 22 May 2018 15:40:15 +0000 (17:40 +0200)
Collection class.

Arvados-DCO-1.1-Signed-off-by: Fuad Muhic <fmuhic@capeannenterprises.com>

sdk/python/arvados/collection.py
sdk/python/tests/test_collections.py

index cce7d75685628525e17775b9b6767b0017d5d969..fad28003fda01b48035a9ecf104643ec63be30cd 100644 (file)
@@ -1447,6 +1447,9 @@ class Collection(RichCollectionBase):
         the API server.  If you want to save a manifest to Keep only, see
         `save_new()`.
 
+        :storage_classes:
+          Specify desirable storage classes to be used when writing data to Keep.
+
         :merge:
           Update and merge remote changes before saving.  Otherwise, any
           remote changes will be ignored and overwritten.
@@ -1467,6 +1470,8 @@ class Collection(RichCollectionBase):
             text = self.manifest_text(strip=False)
             body={'manifest_text': text}
             if storage_classes:
+                if type(storage_classes) is not list:
+                    raise errors.ArgumentError("storage_classes must be list type.")
                 body["storage_classes_desired"] = storage_classes
 
             self._remember_api_response(self._my_api().collections().update(
@@ -1508,6 +1513,9 @@ class Collection(RichCollectionBase):
           the user, or project uuid that will own this collection.
           If None, defaults to the current user.
 
+        :storage_classes:
+          Specify desirable storage classes to be used when writing data to Keep.
+
         :ensure_unique_name:
           If True, ask the API server to rename the collection
           if it conflicts with a collection with the same name and owner.  If
@@ -1531,6 +1539,8 @@ class Collection(RichCollectionBase):
             if owner_uuid:
                 body["owner_uuid"] = owner_uuid
             if storage_classes:
+                if type(storage_classes) is not list:
+                    raise errors.ArgumentError("storage_classes must be list type.")
                 body["storage_classes_desired"] = storage_classes
 
             self._remember_api_response(self._my_api().collections().create(ensure_unique_name=ensure_unique_name, body=body).execute(num_retries=num_retries))
index 49c00191bebe02cc8e267b397212a893a33f246a..736994c671e8e92e00c937cce1cc6a411a0f7bce 100644 (file)
@@ -1300,17 +1300,22 @@ class CollectionCreateUpdateTest(run_test_server.TestCaseWithServers):
 
     def test_create_and_save(self):
         c = self.create_count_txt()
-        c.save()
+        c.save(storage_classes=['archive'])
+
         self.assertRegex(
             c.manifest_text(),
             r"^\. 781e5e245d69b566979b86e28d23f2c7\+10\+A[a-f0-9]{40}@[a-f0-9]{8} 0:10:count\.txt$",)
+        self.assertEqual(c.api_response()["storage_classes_desired"], ['archive'])
+
 
     def test_create_and_save_new(self):
         c = self.create_count_txt()
-        c.save_new()
+        c.save_new(storage_classes=['archive'])
+
         self.assertRegex(
             c.manifest_text(),
             r"^\. 781e5e245d69b566979b86e28d23f2c7\+10\+A[a-f0-9]{40}@[a-f0-9]{8} 0:10:count\.txt$",)
+        self.assertEqual(c.api_response()["storage_classes_desired"], ['archive'])
 
     def test_create_diff_apply(self):
         c1 = self.create_count_txt()