Repository: libcloud Updated Branches: refs/heads/trunk f8634a8cd -> f95203052
LIBCLOUD-986: Add prefix option to azure blob list and iterate container methods Signed-off-by: Quentin Pradet <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/1af5caf9 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/1af5caf9 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/1af5caf9 Branch: refs/heads/trunk Commit: 1af5caf92a97092f7f11221ca881127e90807cb5 Parents: f8634a8 Author: jhawk <[email protected]> Authored: Wed Mar 21 12:08:02 2018 -0700 Committer: Quentin Pradet <[email protected]> Committed: Fri Mar 23 09:27:28 2018 +0400 ---------------------------------------------------------------------- libcloud/storage/drivers/azure_blobs.py | 21 +++++++++++++++++++-- libcloud/test/storage/test_azure_blobs.py | 22 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/1af5caf9/libcloud/storage/drivers/azure_blobs.py ---------------------------------------------------------------------- diff --git a/libcloud/storage/drivers/azure_blobs.py b/libcloud/storage/drivers/azure_blobs.py index 82ee03a..2475793 100644 --- a/libcloud/storage/drivers/azure_blobs.py +++ b/libcloud/storage/drivers/azure_blobs.py @@ -381,11 +381,12 @@ class AzureBlobsStorageDriver(StorageDriver): if not params['marker']: break - def iterate_container_objects(self, container): + def iterate_container_objects(self, container, ex_prefix=None): """ @inherits: :class:`StorageDriver.iterate_container_objects` """ - params = {'restype': 'container', + params = {'prefix': ex_prefix, + 'restype': 'container', 'comp': 'list', 'maxresults': RESPONSES_PER_REQUEST, 'include': 'metadata'} @@ -416,6 +417,22 @@ class AzureBlobsStorageDriver(StorageDriver): if not params['marker']: break + 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: Only return objects starting with ex_prefix + :type ex_prefix: ``str`` + + :return: A list of Object instances. + :rtype: ``list`` of :class:`Object` + """ + return list(self.iterate_container_objects(container, + ex_prefix=ex_prefix)) + def get_container(self, container_name): """ @inherits: :class:`StorageDriver.get_container` http://git-wip-us.apache.org/repos/asf/libcloud/blob/1af5caf9/libcloud/test/storage/test_azure_blobs.py ---------------------------------------------------------------------- diff --git a/libcloud/test/storage/test_azure_blobs.py b/libcloud/test/storage/test_azure_blobs.py index 95ab3f1..69bdebb 100644 --- a/libcloud/test/storage/test_azure_blobs.py +++ b/libcloud/test/storage/test_azure_blobs.py @@ -447,6 +447,28 @@ class AzureBlobsTests(unittest.TestCase): self.assertTrue('content_encoding' in obj.extra) self.assertTrue('content_language' in obj.extra) + def test_list_container_objects_with_prefix(self): + self.mock_response_klass.type = None + AzureBlobsStorageDriver.RESPONSES_PER_REQUEST = 2 + + container = Container(name='test_container', extra={}, + driver=self.driver) + objects = self.driver.list_container_objects(container=container, + ex_prefix='test_prefix') + self.assertEqual(len(objects), 4) + + obj = objects[1] + self.assertEqual(obj.name, 'object2.txt') + self.assertEqual(obj.hash, '0x8CFB90F1BA8CD8F') + self.assertEqual(obj.size, 1048576) + self.assertEqual(obj.container.name, 'test_container') + self.assertTrue('meta1' in obj.meta_data) + self.assertTrue('meta2' in obj.meta_data) + self.assertTrue('last_modified' in obj.extra) + self.assertTrue('content_type' in obj.extra) + self.assertTrue('content_encoding' in obj.extra) + self.assertTrue('content_language' in obj.extra) + def test_get_container_doesnt_exist(self): self.mock_response_klass.type = None try:
