almahmoud 7 лет назад
Родитель
Сommit
6864ebe81d

+ 31 - 0
cloudbridge/cloud/base/services.py

@@ -106,6 +106,37 @@ class BaseBucketService(
 
     def __init__(self, provider):
         super(BaseBucketService, self).__init__(provider)
+        self._service_event_name = "provider.storage.buckets"
+        self._init_get()
+
+    @property
+    def service_event_name(self):
+        return self._service_event_name
+
+    def _get_pre_log(self, bucket_id):
+        log.debug("Getting {} bucket with the id: {}".format(
+            self.provider.name, bucket_id))
+
+    def _get_post_log(self, result, bucket_id):
+        log.debug("Returned bucket object: {}".format(result))
+
+    def _init_get(self):
+        event_name = ".".join((self.service_event_name, "get"))
+        self.provider.events.subscribe(event_name, 20000,
+                                       self._get_pre_log)
+        self.provider.events.subscribe(event_name, 20500,
+                                       self._get,
+                                       self._get_post_log)
+
+    def get(self, bucket_id):
+        """
+        Returns a bucket given its ID. Returns ``None`` if the bucket
+        does not exist.
+        """
+        args = locals()
+        args.pop('self')
+        event_name = ".".join((self.service_event_name, "get"))
+        return self.provider.events.emit(event_name, args)
 
 
 class BaseComputeService(ComputeService, BaseCloudService):

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

@@ -299,12 +299,11 @@ class AWSBucketService(BaseBucketService):
                                  cb_resource=AWSBucket,
                                  boto_collection_name='buckets')
 
-    def get(self, bucket_id):
+    def _get(self, bucket_id):
         """
         Returns a bucket given its ID. Returns ``None`` if the bucket
         does not exist.
         """
-        log.debug("Getting AWS Bucket Service with the id: %s", bucket_id)
         try:
             # Make a call to make sure the bucket exists. There's an edge case
             # where a 403 response can occur when the bucket exists but the

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

@@ -379,7 +379,7 @@ class AzureBucketService(BaseBucketService):
     def __init__(self, provider):
         super(AzureBucketService, self).__init__(provider)
 
-    def get(self, bucket_id):
+    def _get(self, bucket_id):
         """
         Returns a bucket given its ID. Returns ``None`` if the bucket
         does not exist.

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

@@ -411,12 +411,11 @@ class OpenStackBucketService(BaseBucketService):
     def __init__(self, provider):
         super(OpenStackBucketService, self).__init__(provider)
 
-    def get(self, bucket_id):
+    def _get(self, bucket_id):
         """
         Returns a bucket given its ID. Returns ``None`` if the bucket
         does not exist.
         """
-        log.debug("Getting OpenStack bucket with the id: %s", bucket_id)
         _, container_list = self.provider.swift.get_account(
             prefix=bucket_id)
         if container_list: