Uploaded image for project: 'Libcloud'
  1. Libcloud
  2. LIBCLOUD-986

List / Iterate container with prefix for Azure Blob service (This support exists in the other drivers already)

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Storage
    • Labels:
      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

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                sehafoc Joshua Hawkinson
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: