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

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

@@ -650,12 +650,45 @@ class BaseRegionService(
         super(BaseRegionService, self).__init__(provider)
         self._service_event_pattern += ".compute.regions"
 
-    def find(self, **kwargs):
+    @implement(event_pattern="provider.compute.regions.find",
+               priority=BaseCloudService.STANDARD_EVENT_PRIORITY)
+    def _find(self, **kwargs):
         obj_list = self
         filters = ['name']
         matches = cb_helpers.generic_find(filters, kwargs, obj_list)
         return ClientPagedResultList(self._provider, list(matches))
 
+    def get(self, region_id):
+        """
+        Returns a region given its ID. Returns ``None`` if the region
+        does not exist.
+
+        :type region_id: str
+        :param region_id: The id of the desired region.
+
+        :rtype: ``Region``
+        :return:  ``None`` is returned if the region does not exist, and
+                  the region's provider-specific CloudBridge object is
+                  returned if the region is found.
+        """
+        return self.dispatch(self, "provider.compute.regions.get",
+                             region_id)
+
+    def find(self, **kwargs):
+        """
+        Returns a list of regions filtered by the given keyword arguments.
+        Accepted search arguments are: 'name'
+        """
+        return self.dispatch(self, "provider.compute.regions.find",
+                             **kwargs)
+
+    def list(self, limit=None, marker=None):
+        """
+        List all regions.
+        """
+        return self.dispatch(self, "provider.compute.regions.list",
+                             limit=limit, marker=marker)
+
 
 class BaseNetworkingService(NetworkingService, BaseCloudService):
 

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

@@ -735,7 +735,9 @@ class AWSRegionService(BaseRegionService):
     def __init__(self, provider):
         super(AWSRegionService, self).__init__(provider)
 
-    def get(self, region_id):
+    @implement(event_pattern="provider.compute.regions.get",
+               priority=BaseRegionService.STANDARD_EVENT_PRIORITY)
+    def _get(self, region_id):
         log.debug("Getting AWS Region Service with the id: %s",
                   region_id)
         region = [r for r in self if r.id == region_id]
@@ -744,7 +746,9 @@ class AWSRegionService(BaseRegionService):
         else:
             return None
 
-    def list(self, limit=None, marker=None):
+    @implement(event_pattern="provider.compute.regions.list",
+               priority=BaseRegionService.STANDARD_EVENT_PRIORITY)
+    def _list(self, limit=None, marker=None):
         regions = [
             AWSRegion(self.provider, region) for region in
             self.provider.ec2_conn.meta.client.describe_regions()

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

@@ -948,7 +948,9 @@ class AzureRegionService(BaseRegionService):
     def __init__(self, provider):
         super(AzureRegionService, self).__init__(provider)
 
-    def get(self, region_id):
+    @implement(event_pattern="provider.compute.regions.get",
+               priority=BaseRegionService.STANDARD_EVENT_PRIORITY)
+    def _get(self, region_id):
         region = None
         for azureRegion in self.provider.azure_client.list_locations():
             if azureRegion.name == region_id:
@@ -956,7 +958,9 @@ class AzureRegionService(BaseRegionService):
                 break
         return region
 
-    def list(self, limit=None, marker=None):
+    @implement(event_pattern="provider.compute.regions.list",
+               priority=BaseRegionService.STANDARD_EVENT_PRIORITY)
+    def _list(self, limit=None, marker=None):
         regions = [AzureRegion(self.provider, region)
                    for region in self.provider.azure_client.list_locations()]
         return ClientPagedResultList(self.provider, regions,

+ 6 - 2
cloudbridge/cloud/providers/gce/services.py

@@ -270,12 +270,16 @@ class GCERegionService(BaseRegionService):
     def __init__(self, provider):
         super(GCERegionService, self).__init__(provider)
 
-    def get(self, region_id):
+    @implement(event_pattern="provider.compute.regions.get",
+               priority=BaseRegionService.STANDARD_EVENT_PRIORITY)
+    def _get(self, region_id):
         region = self.provider.get_resource('regions', region_id,
                                             region=region_id)
         return GCERegion(self.provider, region) if region else None
 
-    def list(self, limit=None, marker=None):
+    @implement(event_pattern="provider.compute.regions.list",
+               priority=BaseRegionService.STANDARD_EVENT_PRIORITY)
+    def _list(self, limit=None, marker=None):
         max_result = limit if limit is not None and limit < 500 else 500
         regions_response = (self.provider
                                 .gce_compute

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

@@ -833,12 +833,16 @@ class OpenStackRegionService(BaseRegionService):
     def __init__(self, provider):
         super(OpenStackRegionService, self).__init__(provider)
 
-    def get(self, region_id):
+    @implement(event_pattern="provider.compute.regions.get",
+               priority=BaseRegionService.STANDARD_EVENT_PRIORITY)
+    def _get(self, region_id):
         log.debug("Getting OpenStack Region with the id: %s", region_id)
         region = (r for r in self if r.id == region_id)
         return next(region, None)
 
-    def list(self, limit=None, marker=None):
+    @implement(event_pattern="provider.compute.regions.list",
+               priority=BaseRegionService.STANDARD_EVENT_PRIORITY)
+    def _list(self, limit=None, marker=None):
         # pylint:disable=protected-access
         if self.provider._keystone_version == 3:
             os_regions = [OpenStackRegion(self.provider, region)