Pārlūkot izejas kodu

Azure Buckets server-side paging

almahmoud 7 gadi atpakaļ
vecāks
revīzija
7b8313fe79

+ 6 - 2
cloudbridge/cloud/providers/azure/azure_client.py

@@ -408,8 +408,12 @@ class AzureClient(object):
         return self.network_management_client.security_rules. \
             delete(self.resource_group, vm_firewall, name).result()
 
-    def list_containers(self, prefix=None):
-        return self.blob_service.list_containers(prefix=prefix)
+    def list_containers(self, prefix=None, limit=None, marker=None):
+        results = self.blob_service.list_containers(prefix=prefix,
+                                                    num_results=limit,
+                                                    marker=marker)
+        return (results.items, results.next_marker)
+
 
     def create_container(self, container_name):
         try:

+ 9 - 4
cloudbridge/cloud/providers/azure/services.py

@@ -227,10 +227,15 @@ class AzureBucketService(BaseBucketService):
         """
         List all containers.
         """
-        buckets = [AzureBucket(self.provider, bucket)
-                   for bucket in self.provider.azure_client.list_containers()]
-        return ClientPagedResultList(self.provider, buckets,
-                                     limit=limit, marker=marker)
+        buckets, resume_marker = self.provider.azure_client.list_containers(
+            limit=limit or self.provider.config.default_result_limit,
+            marker=marker)
+        results = [AzureBucket(self.provider, bucket)
+                   for bucket in buckets]
+        return ServerPagedResultList(is_truncated=resume_marker,
+                                     marker=resume_marker,
+                                     supports_total=False,
+                                     data=results)
 
     def create(self, name, location=None):
         """