You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by an...@apache.org on 2019/01/27 21:08:35 UTC
[libcloud] branch trunk updated: Adds missing docs for param
``ex_prefix`` within list_container_objects method.
This is an automated email from the ASF dual-hosted git repository.
anthonyshaw pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/libcloud.git
The following commit(s) were added to refs/heads/trunk by this push:
new 09af52a Adds missing docs for param ``ex_prefix`` within list_container_objects method.
new 469bda9 Merge pull request #1275 from richardARPANET/corrects-list-container-objects-docs
09af52a is described below
commit 09af52a3918258606b5696e6fbe6add2fc072e3c
Author: Richard O'Dwyer <ri...@richard.do>
AuthorDate: Tue Jan 8 15:01:50 2019 +0100
Adds missing docs for param ``ex_prefix`` within list_container_objects method.
Also adds ex_prefix functionality to the DummyStore, since all other stores have this feature.
---
libcloud/storage/base.py | 5 ++++-
libcloud/storage/drivers/dummy.py | 7 ++++--
libcloud/test/storage/test_dummy.py | 45 +++++++++++++++++++++++++++++++++++++
3 files changed, 54 insertions(+), 3 deletions(-)
diff --git a/libcloud/storage/base.py b/libcloud/storage/base.py
index 052725b..85a132d 100644
--- a/libcloud/storage/base.py
+++ b/libcloud/storage/base.py
@@ -221,13 +221,16 @@ class StorageDriver(BaseDriver):
raise NotImplementedError(
'iterate_container_objects not implemented for this driver')
- def list_container_objects(self, container):
+ def list_container_objects(self, container, ex_prefix=None):
"""
Return a list of objects for the given container.
:param container: Container instance.
:type container: :class:`Container`
+ :param ex_prefix: Filter objects starting with a prefix.
+ :type ex_prefix: ``str``
+
:return: A list of Object instances.
:rtype: ``list`` of :class:`Object`
"""
diff --git a/libcloud/storage/drivers/dummy.py b/libcloud/storage/drivers/dummy.py
index 1200e51..6b5c3c3 100644
--- a/libcloud/storage/drivers/dummy.py
+++ b/libcloud/storage/drivers/dummy.py
@@ -178,10 +178,13 @@ class DummyStorageDriver(StorageDriver):
for container in list(self._containers.values()):
yield container['container']
- def list_container_objects(self, container):
+ def list_container_objects(self, container, ex_prefix=None):
container = self.get_container(container.name)
- return container.objects
+ objects = list(self._containers[container.name]['objects'].values())
+ if ex_prefix is not None:
+ objects = [o for o in objects if o.name.startswith(ex_prefix)]
+ return objects
def get_container(self, container_name):
"""
diff --git a/libcloud/test/storage/test_dummy.py b/libcloud/test/storage/test_dummy.py
new file mode 100644
index 0000000..b627cfa
--- /dev/null
+++ b/libcloud/test/storage/test_dummy.py
@@ -0,0 +1,45 @@
+import pytest
+
+from libcloud.storage.drivers.dummy import DummyStorageDriver
+
+
+@pytest.fixture
+def driver():
+ return DummyStorageDriver('key', 'id')
+
+
+@pytest.fixture
+def container_with_contents(driver):
+ container_name = 'test'
+ object_name = 'test.dat'
+ container = driver.create_container(container_name=container_name)
+ driver.upload_object(
+ __file__, container=container, object_name=object_name
+ )
+ return container_name, object_name
+
+
+def test_list_container_objects(driver, container_with_contents):
+ container_name, object_name = container_with_contents
+ container = driver.get_container(container_name)
+
+ objects = driver.list_container_objects(container=container)
+
+ assert any(o for o in objects if o.name == object_name)
+
+
+def test_list_container_objects_filter_by_prefix(
+ driver, container_with_contents
+):
+ container_name, object_name = container_with_contents
+ container = driver.get_container(container_name)
+
+ objects = driver.list_container_objects(
+ container=container, ex_prefix=object_name[:3]
+ )
+ assert any(o for o in objects if o.name == object_name)
+
+ objects = driver.list_container_objects(
+ container=container, ex_prefix='does-not-exist.dat'
+ )
+ assert not objects