Quellcode durchsuchen

Service_event_pattern inherited for base services w/ tests

almahmoud vor 7 Jahren
Ursprung
Commit
ae61025beb

+ 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-----

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

@@ -55,14 +55,6 @@ class BaseCloudService(CloudService):
         event_pattern = self._generate_event_pattern(func_name)
         self.provider.events.observe(event_pattern, priority, callback)
 
-    def check_initialized(self, func_name):
-        event_pattern = self._generate_event_pattern(func_name)
-        return self.provider.events.check_initialized(event_pattern)
-
-    def mark_initialized(self, func_name):
-        event_pattern = self._generate_event_pattern(func_name)
-        self.provider.events.mark_initialized(event_pattern)
-
     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,
@@ -73,13 +65,15 @@ class BaseSecurityService(SecurityService, BaseCloudService):
 
     def __init__(self, provider):
         super(BaseSecurityService, self).__init__(provider)
+        self._service_event_pattern += ".security"
 
 
 class BaseKeyPairService(
-        BasePageableObjectMixin, KeyPairService, BaseCloudService):
+        BasePageableObjectMixin, KeyPairService, BaseSecurityService):
 
     def __init__(self, provider):
         super(BaseKeyPairService, self).__init__(provider)
+        self._service_event_pattern += ".key_pairs"
 
     def delete(self, key_pair_id):
         """
@@ -101,10 +95,11 @@ class BaseKeyPairService(
 
 
 class BaseVMFirewallService(
-        BasePageableObjectMixin, VMFirewallService, BaseCloudService):
+        BasePageableObjectMixin, VMFirewallService, BaseSecurityService):
 
     def __init__(self, provider):
         super(BaseVMFirewallService, self).__init__(provider)
+        self._service_event_pattern += ".vm_firewalls"
 
     def find(self, **kwargs):
         obj_list = self
@@ -125,28 +120,31 @@ class BaseStorageService(StorageService, BaseCloudService):
 
     def __init__(self, provider):
         super(BaseStorageService, self).__init__(provider)
+        self._service_event_pattern += ".storage"
 
 
 class BaseVolumeService(
-        BasePageableObjectMixin, VolumeService, BaseCloudService):
+        BasePageableObjectMixin, VolumeService, BaseStorageService):
 
     def __init__(self, provider):
         super(BaseVolumeService, self).__init__(provider)
+        self._service_event_pattern += ".volumes"
 
 
 class BaseSnapshotService(
-        BasePageableObjectMixin, SnapshotService, BaseCloudService):
+        BasePageableObjectMixin, SnapshotService, BaseStorageService):
 
     def __init__(self, provider):
         super(BaseSnapshotService, self).__init__(provider)
+        self._service_event_pattern += ".snapshots"
 
 
 class BaseBucketService(
-        BasePageableObjectMixin, BucketService, BaseCloudService):
+        BasePageableObjectMixin, BucketService, BaseStorageService):
 
     def __init__(self, provider):
         super(BaseBucketService, self).__init__(provider)
-        self._service_event_pattern = "provider.storage.buckets"
+        self._service_event_pattern += ".buckets"
 
     @observe(event_pattern="provider.storage.buckets.get", priority=2000)
     def _get_pre_log(self, bucket_id):
@@ -206,8 +204,6 @@ class BaseBucketService(
         Returns a bucket given its ID. Returns ``None`` if the bucket
         does not exist.
         """
-        if not self.check_initialized("get"):
-            self._init_get()
         return self.call("get", priority=2500, callback=self._get,
                          bucket_id=bucket_id)
 
@@ -231,8 +227,6 @@ class BaseBucketService(
         """
         Returns a list of buckets filtered by the given keyword arguments.
         """
-        if not self.check_initialized("find"):
-            self._init_find()
         return self.call("find", priority=2500, callback=self._find,
                          **kwargs)
 
@@ -240,8 +234,6 @@ class BaseBucketService(
         """
         List all buckets.
         """
-        if not self.check_initialized("list"):
-            self._init_list()
         return self.call("list", priority=2500, callback=self._list,
                          limit=limit, marker=marker)
 
@@ -249,8 +241,6 @@ class BaseBucketService(
         """
         Create a new bucket.
         """
-        if not self.check_initialized("create"):
-            self._init_create()
         BaseBucket.assert_valid_resource_name(name)
         location = location or self.provider.region_name
         return self.call("create", priority=2500, callback=self._create,
@@ -258,11 +248,11 @@ class BaseBucketService(
 
 
 class BaseBucketObjectService(
-        BasePageableObjectMixin, BucketObjectService, BaseCloudService):
+        BasePageableObjectMixin, BucketObjectService, BaseStorageService):
 
     def __init__(self, provider):
         super(BaseBucketObjectService, self).__init__(provider)
-        self._service_event_pattern = "provider.storage.bucket_objects"
+        self._service_event_pattern += ".bucket_objects"
         self._bucket = None
 
     def set_bucket(self, bucket):
@@ -295,27 +285,31 @@ class BaseComputeService(ComputeService, BaseCloudService):
 
     def __init__(self, provider):
         super(BaseComputeService, self).__init__(provider)
+        self._service_event_pattern += ".compute"
 
 
 class BaseImageService(
-        BasePageableObjectMixin, ImageService, BaseCloudService):
+        BasePageableObjectMixin, ImageService, BaseComputeService):
 
     def __init__(self, provider):
         super(BaseImageService, self).__init__(provider)
+        self._service_event_pattern += ".images"
 
 
 class BaseInstanceService(
-        BasePageableObjectMixin, InstanceService, BaseCloudService):
+        BasePageableObjectMixin, InstanceService, BaseComputeService):
 
     def __init__(self, provider):
         super(BaseInstanceService, self).__init__(provider)
+        self._service_event_pattern += ".instances"
 
 
 class BaseVMTypeService(
-        BasePageableObjectMixin, VMTypeService, BaseCloudService):
+        BasePageableObjectMixin, VMTypeService, BaseComputeService):
 
     def __init__(self, provider):
         super(BaseVMTypeService, self).__init__(provider)
+        self._service_event_pattern += ".vm_types"
 
     def get(self, vm_type_id):
         vm_type = (t for t in self if t.id == vm_type_id)
@@ -329,10 +323,11 @@ class BaseVMTypeService(
 
 
 class BaseRegionService(
-        BasePageableObjectMixin, RegionService, BaseCloudService):
+        BasePageableObjectMixin, RegionService, BaseComputeService):
 
     def __init__(self, provider):
         super(BaseRegionService, self).__init__(provider)
+        self._service_event_pattern += ".regions"
 
     def find(self, **kwargs):
         obj_list = self
@@ -345,13 +340,15 @@ class BaseNetworkingService(NetworkingService, BaseCloudService):
 
     def __init__(self, provider):
         super(BaseNetworkingService, self).__init__(provider)
+        self._service_event_pattern += ".networking"
 
 
 class BaseNetworkService(
-        BasePageableObjectMixin, NetworkService, BaseCloudService):
+        BasePageableObjectMixin, NetworkService, BaseNetworkingService):
 
     def __init__(self, provider):
         super(BaseNetworkService, self).__init__(provider)
+        self._service_event_pattern += ".networks"
 
     @property
     def subnets(self):
@@ -378,10 +375,11 @@ class BaseNetworkService(
 
 
 class BaseSubnetService(
-        BasePageableObjectMixin, SubnetService, BaseCloudService):
+        BasePageableObjectMixin, SubnetService, BaseNetworkingService):
 
     def __init__(self, provider):
         super(BaseSubnetService, self).__init__(provider)
+        self._service_event_pattern += ".subnets"
 
     def find(self, **kwargs):
         obj_list = self
@@ -403,10 +401,11 @@ class BaseSubnetService(
 
 
 class BaseRouterService(
-        BasePageableObjectMixin, RouterService, BaseCloudService):
+        BasePageableObjectMixin, RouterService, BaseNetworkingService):
 
     def __init__(self, provider):
         super(BaseRouterService, self).__init__(provider)
+        self._service_event_pattern += ".routers"
 
     def delete(self, router):
         if isinstance(router, Router):

+ 26 - 0
test/test_block_store_service.py

@@ -19,6 +19,32 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
 
     _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'])
     def test_crud_volume(self):
         def create_vol(label):

+ 18 - 0
test/test_compute_service.py

@@ -20,6 +20,24 @@ class CloudComputeServiceTestCase(ProviderTestBase):
 
     _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'])
     def test_crud_instance(self):
         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
 
+    @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',
                               'compute.instances'])
     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
 
+    @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'])
     def test_crud_network(self):
 

+ 26 - 0
test/test_object_store_service.py

@@ -21,6 +21,32 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
 
     _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'])
     def test_crud_bucket(self):
 

+ 11 - 0
test/test_region_service.py

@@ -11,6 +11,17 @@ class CloudRegionServiceTestCase(ProviderTestBase):
 
     _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'])
     def test_get_and_list_regions(self):
         regions = list(self.provider.compute.regions)

+ 27 - 0
test/test_security_service.py

@@ -15,6 +15,33 @@ class CloudSecurityServiceTestCase(ProviderTestBase):
 
     _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'])
     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
 
+    @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'])
     def test_vm_type_properties(self):