Просмотр исходного кода

AWS Fixes and tenacity on check_list&delete

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

+ 1 - 0
cloudbridge/cloud/providers/aws/resources.py

@@ -486,6 +486,7 @@ class AWSVolume(BaseVolume):
                                     'Tags': [{'Key': 'Name',
                                               'Value': label}]}],
                 Description=description or ""))
+        snap.wait_till_ready()
         return snap
 
     def delete(self):

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

@@ -256,10 +256,12 @@ class AWSSnapshotService(BaseSnapshotService):
                             " Supported attributes: %s" % (kwargs, 'label'))
 
         log.debug("Searching for AWS Snapshot Service %s", label)
-        return self.svc.find(filter_name='tag:Name', filter_value=label)
+        return self.svc.find(filter_name='tag:Name', filter_value=label,
+                             OwnerIds=['self', 'amazon'])
 
     def list(self, limit=None, marker=None):
-        return self.svc.list(limit=limit, marker=marker)
+        return self.svc.list(limit=limit, marker=marker,
+                             OwnerIds=['self', 'amazon'])
 
     def create(self, label, volume, description=None):
         """

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

@@ -789,12 +789,13 @@ class AzureImageService(BaseImageService):
         return ClientPagedResultList(self.provider,
                                      matches if matches else [])
 
-    def list(self, limit=None, marker=None):
+    def list(self, filter_by_owner=True, limit=None, marker=None):
         """
         List all images.
         """
         azure_images = self.provider.azure_client.list_images()
-        azure_gallery_refs = self.provider.azure_client.list_gallery_refs()
+        azure_gallery_refs = self.provider.azure_client.list_gallery_refs() \
+            if not filter_by_owner else []
         cb_images = [AzureMachineImage(self.provider, img)
                      for img in azure_images + azure_gallery_refs]
         return ClientPagedResultList(self.provider, cb_images,

+ 5 - 6
test/helpers/__init__.py

@@ -130,16 +130,15 @@ def delete_test_network(network):
                 pass
 
 
-def get_test_gateway(provider, label):
+def get_test_gateway(provider):
     """
     Get an internet gateway for testing.
 
     This includes creating a network for the gateway, which is also returned.
     """
-    net_label = 'cb-testgwnet-{0}'.format(get_uuid())
-    net = provider.networking.networks.create(label=net_label,
-                                              cidr_block='10.0.0.0/16')
-    return net, net.gateways.get_or_create_inet_gateway(name=label)
+    sn = get_or_create_default_subnet(provider)
+    net = sn.network
+    return net, net.gateways.get_or_create_inet_gateway()
 
 
 def delete_test_gateway(network, gateway):
@@ -237,7 +236,7 @@ class ProviderTestBase(unittest.TestCase):
                                                     get_mock=use_mock_drivers)
         config = {'default_wait_interval':
                   self.get_provider_wait_interval(provider_class),
-                  'default_result_limit': 1}
+                  'default_result_limit': 5}
         return provider_class(config)
 
     @property

+ 10 - 0
test/helpers/standard_interface_tests.py

@@ -7,6 +7,8 @@ This includes:
 """
 import uuid
 
+import tenacity
+
 from cloudbridge.cloud.interfaces.exceptions \
     import InvalidNameException
 from cloudbridge.cloud.interfaces.resources import LabeledCloudResource
@@ -39,6 +41,10 @@ def check_obj_properties(test, obj):
     check_obj_label(test, obj)
 
 
+@tenacity.retry(stop=tenacity.stop_after_attempt(3),
+                retry=tenacity.retry_if_exception_type(AssertionError),
+                wait=tenacity.wait_fixed(5),
+                reraise=True)
 def check_list(test, service, obj):
     list_objs = service.list()
     test.assertIsInstance(list_objs, ResultList)
@@ -112,6 +118,10 @@ def check_get_non_existent(test, service):
         % (type(service).__name__, get_objs))
 
 
+@tenacity.retry(stop=tenacity.stop_after_attempt(3),
+                retry=tenacity.retry_if_exception_type(AssertionError),
+                wait=tenacity.wait_fixed(5),
+                reraise=True)
 def check_delete(test, service, obj, perform_delete=False):
     if perform_delete:
         obj.delete()