Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
While testing out the libcloud storage abstraction I've come across a curious omission in driver support. It seems that for many drivers there is additional support for the list_container_objects() and iterate_container_objects() to support a prefix (or ex_prefix).
This functionality is not present in the Azure driver for some reason. I've gone and checked the list_blobs API and it also supports this functionality as seen here:
https://docs.microsoft.com/en-us/rest/api/storageservices/list-blobs
I've attempted a quick and dirty patch that seems to work as well.
azure_blobs.py Line 384 - def iterate_container_objects(self, container): + def iterate_container_objects(self, container, ex_prefix=None): """ @inherits: :class:`StorageDriver.iterate_container_objects` """ params = {'restype': 'container', 'comp': 'list', + 'prefix': ex_prefix, 'maxresults': RESPONSES_PER_REQUEST, 'include': 'metadata'} Line 419 (Add new function) 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))
I've just worked around this at a higher level for now. There isn't any urgency on my end, but it would be nice if the abstraction was more consistent so I could remove the workaround code.
Attachments
Issue Links
- links to