Browse Source

Merge middleware into middleware3

almahmoud 7 years ago
parent
commit
34b71c9d05

+ 0 - 28
az-new.pem

@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrCv+bQZ03ve0i
-PBzovkiyhWl04c+ORTnh+2INreavDkNZTcq3jmDYSWosQCFXspAEIFb6bA/XONtm
-Wbdjd/bl1F7izBwEbHpyuUqopecjwf1em0h/amL8LUHuQBue4e9rwPJeRZAnjbma
-ow4K6Jr5jRriRy1EBYsKD+dV7p4oYYHbzO318ZY8WQbtoV2zIonHtw0t3Qlaeo4f
-UGDeTWIqyCS0wgvnIpWUUUNxdGSt5IFoVATvbK216VYU1ZLsGUK3UNIBdIaye++m
-l6DehD1vqn7yENS+3LyRWToHiFykpvJQRsHeCzWgoUehuw7VvZx2hEY+Pckgm/OH
-5TziMoH/AgMBAAECggEAYyFxuSrTEr5p1GCgpKe7/HNkBlDleWBXxshqMOFsBGMw
-125FohLLwC70cQcODAS6gRm5L1Q37hXO2sf+iJC7sMJf5/RB/LJeWWVYhtv4VXoV
-/aHj56ziB6O3RX00ROZPW9Us40RP4wy52IzOE7ZyM1X7kc+MxZKs3b0P53bvhRjj
-bn7q5+skI/hsobXa6PGsGnRFjVNlh7GkCuI4K2IRmRInntWN6mwedGoODiYDCSbj
-ZRdBK0wM1ysCDt96Vo3Y/zDXw50N/wVvgR6p4uZrP25wdobdh9E7ZHbPMjixd2SK
-YtTagzFYd+/y2XLnl15xbbTSwtXO8syqeI1OXshhSQKBgQDZVQoGiJJ1+UvooKJ1
-zcKrI+tlf71nkW5ZcaMFIL3wOkfObx7LqvKg4qFwMI9DbZz14Olc4E7vpZrOK4s1
-BB1heou1rKOQzGwmDkzF/Rmv4kSIsHCgWAltyHyp4pPIgrQorpu82a8TIQGsNkpv
-wceve/yhUtXtpfavwsynV5IXjQKBgQDJeZiWprGZ7B3jyokoBu9f2UmJB67hwmvW
-4g6+AOdD+rvtGLxPt3qzoXJy61oxd1FSJV4XdVu8FmMbLY/HeOxcaHO6KYcBuEnT
-3Nlehr/mFNTCWKBwsRtjnOH1DaSZTujxMt6y0UJe3ZMDAjSYkL+2Lr3pD9L0g3h7
-uQULuyYGuwKBgQCjDmxxLnJEVQAgzrRVEkVlxZNNGaPvWmuia+HVbRVUcUWCmlhO
-kjlrf92DoMs72beTumUbq6dNocAdwwm0gxvQEPNVIOuvLdBOVRhAy35EOc0ViNtX
-UfXxCiSOCVK7c2TbyPVLoT77aR4qKKl8Y7T/8lQ+bTnYDVah09NcEhWn2QKBgEgR
-of6JxE/uAUchhOx3hpr/q+lDgVAqbs7f8CwRQKi1gRGv3nSZil/FKZ5oB8xYBRPg
-YAb+KQFf9LWdF6hf3hS0HGmEP1HjLS2G+45vnydbXjvi3glRoR2B2eYBqlZYvsTA
-0J6gciBjHBpgaJYGeT1e/PnoeiqS+L8xENgAavrPAoGAHENhCbJ5cu8vvPxPSBMl
-17QJVnJKkR3YwkaBN/G6X2HtdbeREBhkjiHK9ZLRd+G02t09JVyRJPfiClUjbZZW
-GTv3H8WG/1t0SRXs0rLoJlz7lHVJedutgtg8lophuhTu3zjIkfJmN43Pc7JofVnc
-VYIJnrbaMG1TRSqhGG9nv8g=
------END PRIVATE KEY-----

+ 43 - 13
cloudbridge/cloud/base/services.py

@@ -55,18 +55,32 @@ class BaseCloudService(CloudService):
     def emit(self, sender, event, *args, **kwargs):
     def emit(self, sender, event, *args, **kwargs):
         return self._provider.events.emit(sender, event, *args, **kwargs)
         return self._provider.events.emit(sender, event, *args, **kwargs)
 
 
+    def _generate_event_pattern(self, func_name):
+        return ".".join((self._service_event_pattern, func_name))
+
+    def observe(self, func_name, priority, callback):
+        event_pattern = self._generate_event_pattern(func_name)
+        self.provider.events.observe(event_pattern, priority, callback)
+
+    def call(self, func_name, priority, callback, **kwargs):
+        event_pattern = self._generate_event_pattern(func_name)
+        return self.provider.events.call(event_pattern, priority, callback,
+                                         **kwargs)
+
 
 
 class BaseSecurityService(SecurityService, BaseCloudService):
 class BaseSecurityService(SecurityService, BaseCloudService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseSecurityService, self).__init__(provider)
         super(BaseSecurityService, self).__init__(provider)
+        self._service_event_pattern += ".security"
 
 
 
 
 class BaseKeyPairService(
 class BaseKeyPairService(
-        BasePageableObjectMixin, KeyPairService, BaseCloudService):
+        BasePageableObjectMixin, KeyPairService, BaseSecurityService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseKeyPairService, self).__init__(provider)
         super(BaseKeyPairService, self).__init__(provider)
+        self._service_event_pattern += ".key_pairs"
 
 
     def delete(self, key_pair_id):
     def delete(self, key_pair_id):
         """
         """
@@ -88,10 +102,11 @@ class BaseKeyPairService(
 
 
 
 
 class BaseVMFirewallService(
 class BaseVMFirewallService(
-        BasePageableObjectMixin, VMFirewallService, BaseCloudService):
+        BasePageableObjectMixin, VMFirewallService, BaseSecurityService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseVMFirewallService, self).__init__(provider)
         super(BaseVMFirewallService, self).__init__(provider)
+        self._service_event_pattern += ".vm_firewalls"
 
 
     def find(self, **kwargs):
     def find(self, **kwargs):
         obj_list = self
         obj_list = self
@@ -112,27 +127,31 @@ class BaseStorageService(StorageService, BaseCloudService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseStorageService, self).__init__(provider)
         super(BaseStorageService, self).__init__(provider)
+        self._service_event_pattern += ".storage"
 
 
 
 
 class BaseVolumeService(
 class BaseVolumeService(
-        BasePageableObjectMixin, VolumeService, BaseCloudService):
+        BasePageableObjectMixin, VolumeService, BaseStorageService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseVolumeService, self).__init__(provider)
         super(BaseVolumeService, self).__init__(provider)
+        self._service_event_pattern += ".volumes"
 
 
 
 
 class BaseSnapshotService(
 class BaseSnapshotService(
-        BasePageableObjectMixin, SnapshotService, BaseCloudService):
+        BasePageableObjectMixin, SnapshotService, BaseStorageService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseSnapshotService, self).__init__(provider)
         super(BaseSnapshotService, self).__init__(provider)
+        self._service_event_pattern += ".snapshots"
 
 
 
 
 class BaseBucketService(
 class BaseBucketService(
-        BasePageableObjectMixin, BucketService, BaseCloudService):
+        BasePageableObjectMixin, BucketService, BaseStorageService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseBucketService, self).__init__(provider)
         super(BaseBucketService, self).__init__(provider)
+        self._service_event_pattern += ".buckets"
 
 
     @observe(event_pattern="provider.storage.buckets.get", priority=2000)
     @observe(event_pattern="provider.storage.buckets.get", priority=2000)
     def _pre_log_get(self, event_args, bucket_id):
     def _pre_log_get(self, event_args, bucket_id):
@@ -215,15 +234,17 @@ class BaseBucketService(
         """
         """
         Create a new bucket.
         Create a new bucket.
         """
         """
+        BaseBucket.assert_valid_resource_name(name)
         return self.emit(self, "provider.storage.buckets.create",
         return self.emit(self, "provider.storage.buckets.create",
                          name, location=location)
                          name, location=location)
 
 
 
 
 class BaseBucketObjectService(
 class BaseBucketObjectService(
-        BasePageableObjectMixin, BucketObjectService, BaseCloudService):
+        BasePageableObjectMixin, BucketObjectService, BaseStorageService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseBucketObjectService, self).__init__(provider)
         super(BaseBucketObjectService, self).__init__(provider)
+        self._service_event_pattern += ".bucket_objects"
         self._bucket = None
         self._bucket = None
 
 
     def set_bucket(self, bucket):
     def set_bucket(self, bucket):
@@ -256,27 +277,31 @@ class BaseComputeService(ComputeService, BaseCloudService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseComputeService, self).__init__(provider)
         super(BaseComputeService, self).__init__(provider)
+        self._service_event_pattern += ".compute"
 
 
 
 
 class BaseImageService(
 class BaseImageService(
-        BasePageableObjectMixin, ImageService, BaseCloudService):
+        BasePageableObjectMixin, ImageService, BaseComputeService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseImageService, self).__init__(provider)
         super(BaseImageService, self).__init__(provider)
+        self._service_event_pattern += ".images"
 
 
 
 
 class BaseInstanceService(
 class BaseInstanceService(
-        BasePageableObjectMixin, InstanceService, BaseCloudService):
+        BasePageableObjectMixin, InstanceService, BaseComputeService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseInstanceService, self).__init__(provider)
         super(BaseInstanceService, self).__init__(provider)
+        self._service_event_pattern += ".instances"
 
 
 
 
 class BaseVMTypeService(
 class BaseVMTypeService(
-        BasePageableObjectMixin, VMTypeService, BaseCloudService):
+        BasePageableObjectMixin, VMTypeService, BaseComputeService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseVMTypeService, self).__init__(provider)
         super(BaseVMTypeService, self).__init__(provider)
+        self._service_event_pattern += ".vm_types"
 
 
     def get(self, vm_type_id):
     def get(self, vm_type_id):
         vm_type = (t for t in self if t.id == vm_type_id)
         vm_type = (t for t in self if t.id == vm_type_id)
@@ -290,10 +315,11 @@ class BaseVMTypeService(
 
 
 
 
 class BaseRegionService(
 class BaseRegionService(
-        BasePageableObjectMixin, RegionService, BaseCloudService):
+        BasePageableObjectMixin, RegionService, BaseComputeService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseRegionService, self).__init__(provider)
         super(BaseRegionService, self).__init__(provider)
+        self._service_event_pattern += ".regions"
 
 
     def find(self, **kwargs):
     def find(self, **kwargs):
         obj_list = self
         obj_list = self
@@ -306,13 +332,15 @@ class BaseNetworkingService(NetworkingService, BaseCloudService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseNetworkingService, self).__init__(provider)
         super(BaseNetworkingService, self).__init__(provider)
+        self._service_event_pattern += ".networking"
 
 
 
 
 class BaseNetworkService(
 class BaseNetworkService(
-        BasePageableObjectMixin, NetworkService, BaseCloudService):
+        BasePageableObjectMixin, NetworkService, BaseNetworkingService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseNetworkService, self).__init__(provider)
         super(BaseNetworkService, self).__init__(provider)
+        self._service_event_pattern += ".networks"
 
 
     @property
     @property
     def subnets(self):
     def subnets(self):
@@ -339,10 +367,11 @@ class BaseNetworkService(
 
 
 
 
 class BaseSubnetService(
 class BaseSubnetService(
-        BasePageableObjectMixin, SubnetService, BaseCloudService):
+        BasePageableObjectMixin, SubnetService, BaseNetworkingService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseSubnetService, self).__init__(provider)
         super(BaseSubnetService, self).__init__(provider)
+        self._service_event_pattern += ".subnets"
 
 
     def find(self, **kwargs):
     def find(self, **kwargs):
         obj_list = self
         obj_list = self
@@ -364,10 +393,11 @@ class BaseSubnetService(
 
 
 
 
 class BaseRouterService(
 class BaseRouterService(
-        BasePageableObjectMixin, RouterService, BaseCloudService):
+        BasePageableObjectMixin, RouterService, BaseNetworkingService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
         super(BaseRouterService, self).__init__(provider)
         super(BaseRouterService, self).__init__(provider)
+        self._service_event_pattern += ".routers"
 
 
     def delete(self, router):
     def delete(self, router):
         if isinstance(router, Router):
         if isinstance(router, Router):

+ 26 - 0
test/test_block_store_service.py

@@ -19,6 +19,32 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
 
 
     _multiprocess_can_split_ = True
     _multiprocess_can_split_ = True
 
 
+    @helpers.skipIfNoService(['storage.volumes', 'storage.volumes'])
+    def test_storage_services_event_pattern(self):
+        self.assertEqual(self.provider.storage._service_event_pattern,
+                         "provider.storage",
+                         "Event pattern for {} service should be '{}', "
+                         "but found '{}'.".format("storage",
+                                                  "provider.storage",
+                                                  self.provider.storage.
+                                                  _service_event_pattern))
+        self.assertEqual(
+            self.provider.storage.volumes._service_event_pattern,
+            "provider.storage.volumes",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("volumes",
+                                     "provider.storage.volumes",
+                                     self.provider.storage.volumes.
+                                     _service_event_pattern))
+        self.assertEqual(
+            self.provider.storage.snapshots._service_event_pattern,
+            "provider.storage.snapshots",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("snapshots",
+                                     "provider.storage.snapshots",
+                                     self.provider.storage.snapshots.
+                                     _service_event_pattern))
+
     @helpers.skipIfNoService(['storage.volumes'])
     @helpers.skipIfNoService(['storage.volumes'])
     def test_crud_volume(self):
     def test_crud_volume(self):
         def create_vol(label):
         def create_vol(label):

+ 18 - 0
test/test_compute_service.py

@@ -20,6 +20,24 @@ class CloudComputeServiceTestCase(ProviderTestBase):
 
 
     _multiprocess_can_split_ = True
     _multiprocess_can_split_ = True
 
 
+    @helpers.skipIfNoService(['compute.instances'])
+    def test_storage_services_event_pattern(self):
+        self.assertEqual(self.provider.compute._service_event_pattern,
+                         "provider.compute",
+                         "Event pattern for {} service should be '{}', "
+                         "but found '{}'.".format("compute",
+                                                  "provider.compute",
+                                                  self.provider.compute.
+                                                  _service_event_pattern))
+        self.assertEqual(
+            self.provider.compute.instances._service_event_pattern,
+            "provider.compute.instances",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("instances",
+                                     "provider.compute.instances",
+                                     self.provider.compute.instances.
+                                     _service_event_pattern))
+
     @helpers.skipIfNoService(['compute.instances', 'networking.networks'])
     @helpers.skipIfNoService(['compute.instances', 'networking.networks'])
     def test_crud_instance(self):
     def test_crud_instance(self):
         label = "cb-instcrud-{0}".format(helpers.get_uuid())
         label = "cb-instcrud-{0}".format(helpers.get_uuid())

+ 10 - 0
test/test_image_service.py

@@ -11,6 +11,16 @@ class CloudImageServiceTestCase(ProviderTestBase):
 
 
     _multiprocess_can_split_ = True
     _multiprocess_can_split_ = True
 
 
+    @helpers.skipIfNoService(['compute.images'])
+    def test_storage_services_event_pattern(self):
+        self.assertEqual(self.provider.compute.images._service_event_pattern,
+                         "provider.compute.images",
+                         "Event pattern for {} service should be '{}', "
+                         "but found '{}'.".format("images",
+                                                  "provider.compute.images",
+                                                  self.provider.compute.images.
+                                                  _service_event_pattern))
+
     @helpers.skipIfNoService(['compute.images', 'networking.networks',
     @helpers.skipIfNoService(['compute.images', 'networking.networks',
                               'compute.instances'])
                               'compute.instances'])
     def test_create_and_list_image(self):
     def test_create_and_list_image(self):

+ 36 - 0
test/test_network_service.py

@@ -16,6 +16,42 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
 
 
     _multiprocess_can_split_ = True
     _multiprocess_can_split_ = True
 
 
+    @helpers.skipIfNoService(['networking.subnets',
+                              'networking.networks',
+                              'networking.routers'])
+    def test_storage_services_event_pattern(self):
+        self.assertEqual(self.provider.networking._service_event_pattern,
+                         "provider.networking",
+                         "Event pattern for {} service should be '{}', "
+                         "but found '{}'.".format("networking",
+                                                  "provider.networking",
+                                                  self.provider.networking.
+                                                  _service_event_pattern))
+        self.assertEqual(
+            self.provider.networking.networks._service_event_pattern,
+            "provider.networking.networks",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("networks",
+                                     "provider.networking.networks",
+                                     self.provider.networking.networks.
+                                     _service_event_pattern))
+        self.assertEqual(
+            self.provider.networking.subnets._service_event_pattern,
+            "provider.networking.subnets",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("subnets",
+                                     "provider.networking.subnets",
+                                     self.provider.networking.subnets.
+                                     _service_event_pattern))
+        self.assertEqual(
+            self.provider.networking.routers._service_event_pattern,
+            "provider.networking.routers",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("routers",
+                                     "provider.networking.routers",
+                                     self.provider.networking.routers.
+                                     _service_event_pattern))
+
     @helpers.skipIfNoService(['networking.networks'])
     @helpers.skipIfNoService(['networking.networks'])
     def test_crud_network(self):
     def test_crud_network(self):
 
 

+ 26 - 0
test/test_object_store_service.py

@@ -21,6 +21,32 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
 
 
     _multiprocess_can_split_ = True
     _multiprocess_can_split_ = True
 
 
+    @helpers.skipIfNoService(['storage.bucket_objects', 'storage.buckets'])
+    def test_storage_services_event_pattern(self):
+        self.assertEqual(self.provider.storage._service_event_pattern,
+                         "provider.storage",
+                         "Event pattern for {} service should be '{}', "
+                         "but found '{}'.".format("storage",
+                                                  "provider.storage",
+                                                  self.provider.storage.
+                                                  _service_event_pattern))
+        self.assertEqual(
+            self.provider.storage.buckets._service_event_pattern,
+            "provider.storage.buckets",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("buckets",
+                                     "provider.storage.buckets",
+                                     self.provider.storage.buckets.
+                                     _service_event_pattern))
+        self.assertEqual(
+            self.provider.storage.bucket_objects._service_event_pattern,
+            "provider.storage.bucket_objects",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("bucket_objects",
+                                     "provider.storage.bucket_objects",
+                                     self.provider.storage.bucket_objects.
+                                     _service_event_pattern))
+
     @helpers.skipIfNoService(['storage.buckets'])
     @helpers.skipIfNoService(['storage.buckets'])
     def test_crud_bucket(self):
     def test_crud_bucket(self):
 
 

+ 11 - 0
test/test_region_service.py

@@ -11,6 +11,17 @@ class CloudRegionServiceTestCase(ProviderTestBase):
 
 
     _multiprocess_can_split_ = True
     _multiprocess_can_split_ = True
 
 
+    @helpers.skipIfNoService(['compute.regions'])
+    def test_storage_services_event_pattern(self):
+        self.assertEqual(
+            self.provider.compute.regions._service_event_pattern,
+            "provider.compute.regions",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("regions",
+                                     "provider.compute.regions",
+                                     self.provider.compute.regions.
+                                     _service_event_pattern))
+
     @helpers.skipIfNoService(['compute.regions'])
     @helpers.skipIfNoService(['compute.regions'])
     def test_get_and_list_regions(self):
     def test_get_and_list_regions(self):
         regions = list(self.provider.compute.regions)
         regions = list(self.provider.compute.regions)

+ 27 - 0
test/test_security_service.py

@@ -15,6 +15,33 @@ class CloudSecurityServiceTestCase(ProviderTestBase):
 
 
     _multiprocess_can_split_ = True
     _multiprocess_can_split_ = True
 
 
+    @helpers.skipIfNoService(['security.vm_firewalls'])
+    def test_storage_services_event_pattern(self):
+        self.assertEqual(self.provider.security._service_event_pattern,
+                         "provider.security",
+                         "Event pattern for {} service should be '{}', "
+                         "but found '{}'.".format("security",
+                                                  "provider.security",
+                                                  self.provider.security.
+                                                  _service_event_pattern))
+        self.assertEqual(self.provider.security.key_pairs.
+                         _service_event_pattern,
+                         "provider.security.key_pairs",
+                         "Event pattern for {} service should be '{}', "
+                         "but found '{}'.".format("key_pairs",
+                                                  "provider.security.key_pairs",
+                                                  self.provider.security.
+                                                  key_pairs.
+                                                  _service_event_pattern))
+        self.assertEqual(
+            self.provider.security.vm_firewalls._service_event_pattern,
+            "provider.security.vm_firewalls",
+            "Event pattern for {} service should be '{}', "
+            "but found '{}'.".format("vm_firewalls",
+                                     "provider.security.vm_firewalls",
+                                     self.provider.security.vm_firewalls.
+                                     _service_event_pattern))    
+
     @helpers.skipIfNoService(['security.key_pairs'])
     @helpers.skipIfNoService(['security.key_pairs'])
     def test_crud_key_pair_service(self):
     def test_crud_key_pair_service(self):
 
 

+ 11 - 0
test/test_vm_types_service.py

@@ -9,6 +9,17 @@ class CloudVMTypeServiceTestCase(ProviderTestBase):
 
 
     _multiprocess_can_split_ = True
     _multiprocess_can_split_ = True
 
 
+    @helpers.skipIfNoService(['compute.vm_types'])
+    def test_storage_services_event_pattern(self):
+        self.assertEqual(self.provider.compute.vm_types._service_event_pattern,
+                         "provider.compute.vm_types",
+                         "Event pattern for {} service should be '{}', "
+                         "but found '{}'.".format("vm_types",
+                                                  "provider.compute.vm_types",
+                                                  self.provider.compute.
+                                                  vm_types.
+                                                  _service_event_pattern))
+
     @helpers.skipIfNoService(['compute.vm_types'])
     @helpers.skipIfNoService(['compute.vm_types'])
     def test_vm_type_properties(self):
     def test_vm_type_properties(self):