Просмотр исходного кода

BucketService list refactoring

almahmoud 7 лет назад
Родитель
Сommit
192d0ed1c6

+ 30 - 1
cloudbridge/cloud/base/services.py

@@ -109,6 +109,7 @@ class BaseBucketService(
         self._service_event_name = "provider.storage.buckets"
         self._init_get()
         self._init_find()
+        self._init_list()
 
     @property
     def service_event_name(self):
@@ -140,7 +141,7 @@ class BaseBucketService(
         return self.provider.events.emit(event_name, args)
 
     def _find_pre_log(self, **kwargs):
-        log.debug("Finding {} buckets with the the following arguments: {}"
+        log.debug("Finding {} buckets with the following arguments: {}"
                   .format(self.provider.name, kwargs))
 
     def _find_post_log(self, result, **kwargs):
@@ -177,6 +178,34 @@ class BaseBucketService(
         event_name = ".".join((self.service_event_name, "find"))
         return self.provider.events.emit(event_name, kwargs)
 
+    def _list_pre_log(self, limit, marker):
+        message = "Listing {} buckets".format(self.provider.name)
+        if limit:
+            message += " with limit: {}".format(limit)
+        if marker:
+            message += " with marker: {}".format(marker)
+        log.debug(message)
+
+    def _list_post_log(self, result, limit, marker):
+        log.debug("Returned bucket objects: {}".format(result))
+
+    def _init_list(self):
+        event_name = ".".join((self.service_event_name, "list"))
+        self.provider.events.subscribe(event_name, 20000,
+                                       self._list_pre_log)
+        self.provider.events.subscribe(event_name, 20500,
+                                       self._list,
+                                       self._list_post_log)
+
+    def list(self, limit=None, marker=None):
+        """
+        List all buckets.
+        """
+        args = locals()
+        args.pop('self')
+        event_name = ".".join((self.service_event_name, "list"))
+        return self.provider.events.emit(event_name, args)
+
 
 class BaseComputeService(ComputeService, BaseCloudService):
 

+ 1 - 1
cloudbridge/cloud/providers/aws/services.py

@@ -327,7 +327,7 @@ class AWSBucketService(BaseBucketService):
         # For all other responses, it's assumed that the bucket does not exist.
         return None
 
-    def list(self, limit=None, marker=None):
+    def _list(self, limit, marker):
         return self.svc.list(limit=limit, marker=marker)
 
     def create(self, name, location=None):

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

@@ -391,10 +391,7 @@ class AzureBucketService(BaseBucketService):
             log.exception(error)
             return None
 
-    def list(self, limit=None, marker=None):
-        """
-        List all containers.
-        """
+    def _list(self, limit, marker):
         buckets = [AzureBucket(self.provider, bucket)
                    for bucket in self.provider.azure_client.list_containers()]
         return ClientPagedResultList(self.provider, buckets,

+ 1 - 4
cloudbridge/cloud/providers/openstack/services.py

@@ -439,10 +439,7 @@ class OpenStackBucketService(BaseBucketService):
                       if name in c.get("name")]
         return oshelpers.to_server_paged_list(self.provider, cb_buckets)
 
-    def list(self, limit=None, marker=None):
-        """
-        List all containers.
-        """
+    def _list(self, limit, marker):
         _, container_list = self.provider.swift.get_account(
             limit=oshelpers.os_result_limit(self.provider, limit),
             marker=marker)