[ 
https://issues.apache.org/jira/browse/LIBCLOUD-986?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joshua Hawkinson updated LIBCLOUD-986:
--------------------------------------
    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.
{code}
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))
    
 {code}
 
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.

  was:
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.  This functionality is not 
present in the Azure driver for some reason.   I've gone and checked the 
list_blobs API and ti 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.

{code:python}
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))
    
 {code}

 


> List / Iterate container with prefix for Azure Blob service (This support 
> exists in the other drivers already)
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: LIBCLOUD-986
>                 URL: https://issues.apache.org/jira/browse/LIBCLOUD-986
>             Project: Libcloud
>          Issue Type: Improvement
>          Components: Storage
>            Reporter: Joshua Hawkinson
>            Priority: Major
>
> 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.
> {code}
> 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))
>     
>  {code}
>  
> 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.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to