Răsfoiți Sursa

VMTypeService refactored

almahmoud 7 ani în urmă
părinte
comite
bad2f51c5b

+ 37 - 2
cloudbridge/cloud/base/services.py

@@ -597,16 +597,51 @@ class BaseVMTypeService(
         super(BaseVMTypeService, self).__init__(provider)
         self._service_event_pattern += ".compute.vm_types"
 
-    def get(self, vm_type_id):
+    @implement(event_pattern="provider.compute.vm_types.get",
+               priority=BaseCloudService.STANDARD_EVENT_PRIORITY)
+    def _get(self, vm_type_id):
         vm_type = (t for t in self if t.id == vm_type_id)
         return next(vm_type, None)
 
-    def find(self, **kwargs):
+    @implement(event_pattern="provider.compute.vm_types.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, vm_type_id):
+        """
+        Returns a vm_type given its ID. Returns ``None`` if the vm_type
+        does not exist.
+
+        :type vm_type_id: str
+        :param vm_type_id: The id of the desired VM type.
+
+        :rtype: ``VMType``
+        :return:  ``None`` is returned if the VM type does not exist, and
+                  the VM type's provider-specific CloudBridge object is
+                  returned if the VM type is found.
+        """
+        return self.dispatch(self, "provider.compute.vm_types.get",
+                             vm_type_id)
+
+    def find(self, **kwargs):
+        """
+        Returns a list of VM types filtered by the given keyword arguments.
+        Accepted search arguments are: 'name'
+        """
+        return self.dispatch(self, "provider.compute.vm_types.find",
+                             **kwargs)
+
+    def list(self, limit=None, marker=None):
+        """
+        List all VM types.
+        """
+        return self.dispatch(self, "provider.compute.vm_types.list",
+                             limit=limit, marker=marker)
+
 
 class BaseRegionService(
         BasePageableObjectMixin, RegionService, BaseCloudService):

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

@@ -721,7 +721,9 @@ class AWSVMTypeService(BaseVMTypeService):
         return [vm_type for vm_type in vm_types_list
                 if vm_type.get('pricing', {}).get(self.provider.region_name)]
 
-    def list(self, limit=None, marker=None):
+    @implement(event_pattern="provider.compute.vm_types.list",
+               priority=BaseVMTypeService.STANDARD_EVENT_PRIORITY)
+    def _list(self, limit=None, marker=None):
         vm_types = [AWSVMType(self.provider, vm_type)
                     for vm_type in self.instance_data]
         return ClientPagedResultList(self.provider, vm_types,

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

@@ -935,7 +935,9 @@ class AzureVMTypeService(BaseVMTypeService):
         r = self.provider.azure_client.list_vm_types()
         return r
 
-    def list(self, limit=None, marker=None):
+    @implement(event_pattern="provider.compute.vm_types.list",
+               priority=BaseVMTypeService.STANDARD_EVENT_PRIORITY)
+    def _list(self, limit=None, marker=None):
         vm_types = [AzureVMType(self.provider, vm_type)
                     for vm_type in self.instance_data]
         return ClientPagedResultList(self.provider, vm_types,

+ 9 - 3
cloudbridge/cloud/providers/gce/services.py

@@ -233,11 +233,15 @@ class GCEVMTypeService(BaseVMTypeService):
                         .execute())
         return response['items']
 
-    def get(self, vm_type_id):
+    @implement(event_pattern="provider.compute.vm_types.get",
+               priority=BaseVMTypeService.STANDARD_EVENT_PRIORITY)
+    def _get(self, vm_type_id):
         vm_type = self.provider.get_resource('machineTypes', vm_type_id)
         return GCEVMType(self.provider, vm_type) if vm_type else None
 
-    def find(self, **kwargs):
+    @implement(event_pattern="provider.compute.vm_types.find",
+               priority=BaseVMTypeService.STANDARD_EVENT_PRIORITY)
+    def _find(self, **kwargs):
         matched_inst_types = []
         for inst_type in self.instance_data:
             is_match = True
@@ -252,7 +256,9 @@ class GCEVMTypeService(BaseVMTypeService):
                     GCEVMType(self.provider, inst_type))
         return matched_inst_types
 
-    def list(self, limit=None, marker=None):
+    @implement(event_pattern="provider.compute.vm_types.list",
+               priority=BaseVMTypeService.STANDARD_EVENT_PRIORITY)
+    def _list(self, limit=None, marker=None):
         inst_types = [GCEVMType(self.provider, inst_type)
                       for inst_type in self.instance_data]
         return ClientPagedResultList(self.provider, inst_types,

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

@@ -816,7 +816,9 @@ class OpenStackVMTypeService(BaseVMTypeService):
     def __init__(self, provider):
         super(OpenStackVMTypeService, self).__init__(provider)
 
-    def list(self, limit=None, marker=None):
+    @implement(event_pattern="provider.compute.vm_types.list",
+               priority=BaseVMTypeService.STANDARD_EVENT_PRIORITY)
+    def _list(self, limit=None, marker=None):
         cb_itypes = [
             OpenStackVMType(self.provider, obj)
             for obj in self.provider.nova.flavors.list(