summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Freudberg <jeremyfreudberg@gmail.com>2018-07-13 13:08:12 -0400
committerLuigi Toscano <ltoscano@redhat.com>2018-07-25 22:38:42 +0200
commit1630744a18d4a4886c32013969c2bdeafec4e6e6 (patch)
treeb4e54978b58cb7d047c5dd3581c5e10490dbea70
parent0d9d8264b19c6108c8093f3a47803dfc70d6bae6 (diff)
downloadpython-saharaclient-1630744a18d4a4886c32013969c2bdeafec4e6e6.tar.gz
Clean S3 data source create/update
Docstring, unit test. Change-Id: I80328f9e6f24aaf4a9e59c739e68ddb19f4d700d
-rw-r--r--saharaclient/api/data_sources.py4
-rw-r--r--saharaclient/tests/unit/test_data_sources.py25
2 files changed, 28 insertions, 1 deletions
diff --git a/saharaclient/api/data_sources.py b/saharaclient/api/data_sources.py
index 93a1efb..ccfd39b 100644
--- a/saharaclient/api/data_sources.py
+++ b/saharaclient/api/data_sources.py
@@ -76,7 +76,9 @@ class DataSourceManagerV1(base.ResourceManager):
* url
* is_public
* is_protected
- * credentials - dict with `user` and `password` keyword arguments
+ * credentials - dict with the keys `user` and `password` for data
+ source in Swift, or with the keys `accesskey`, `secretkey`,
+ `endpoint`, `ssl`, and `bucket_in_path` for data source in S3
"""
if self.version >= 2:
diff --git a/saharaclient/tests/unit/test_data_sources.py b/saharaclient/tests/unit/test_data_sources.py
index 13476d1..594d654 100644
--- a/saharaclient/tests/unit/test_data_sources.py
+++ b/saharaclient/tests/unit/test_data_sources.py
@@ -15,6 +15,7 @@
from saharaclient.api import data_sources as ds
from saharaclient.tests.unit import base
+import mock
from oslo_serialization import jsonutils as json
@@ -92,3 +93,27 @@ class DataSourceTest(base.BaseTestCase):
updated = self.client.data_sources.update("id", self.update_json)
self.assertEqual(self.update_json["name"], updated.name)
self.assertEqual(self.update_json["url"], updated.url)
+
+ @mock.patch('saharaclient.api.base.ResourceManager._create')
+ def test_create_data_source_s3_or_swift_credentials(self, create):
+ # Data source without any credential arguments
+ self.client.data_sources.create('ds', '', 'swift', 'swift://path')
+ self.assertNotIn('credentials', create.call_args[0][1])
+
+ # Data source with Swift credential arguments
+ self.client.data_sources.create('ds', '', 'swift', 'swift://path',
+ credential_user='user')
+ self.assertIn('credentials', create.call_args[0][1])
+
+ # Data source with S3 credential arguments
+ self.client.data_sources.create('ds', '', 'swift', 'swift://path',
+ s3_credentials={'accesskey': 'a'})
+ self.assertIn('credentials', create.call_args[0][1])
+ self.assertIn('accesskey', create.call_args[0][1]['credentials'])
+
+ # Data source with both S3 and swift credential arguments
+ self.client.data_sources.create('ds', '', 's3', 's3://path',
+ credential_user='swift_user',
+ s3_credentials={'accesskey': 's3_a'})
+ self.assertIn('user', create.call_args[0][1]['credentials'])
+ self.assertNotIn('accesskey', create.call_args[0][1]['credentials'])