Parcourir la source

Merge in some fixes missed during rebase

Nuwan Goonasekera il y a 8 ans
Parent
commit
3e8ce8aab2

+ 1 - 1
cloudbridge/cloud/base/provider.py

@@ -100,7 +100,7 @@ class BaseCloudProvider(CloudProvider):
         """
         log.debug("Checking if cloud credential works...")
         try:
-            self.security.security_groups.list()
+            self.security.key_pairs.list()
             return True
         except Exception as e:
             log.exception("ProviderConnectionException occurred")

+ 1 - 1
cloudbridge/cloud/interfaces/resources.py

@@ -569,7 +569,7 @@ class Instance(ObjectLifeCycleMixin, CloudResource):
         pass
 
     @abstractmethod
-    def create_image(self, name, private_key_path=None):
+    def create_image(self, name):
         """
         Create a new image based on this instance.
 

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

@@ -942,6 +942,7 @@ class AWSNetwork(BaseNetwork):
 
 
 class AWSSubnet(BaseSubnet):
+
     # http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html
     _SUBNET_STATE_MAP = {
         'pending': SubnetState.PENDING,
@@ -1028,6 +1029,7 @@ class AWSFloatingIP(BaseFloatingIP):
 
 
 class AWSRouter(BaseRouter):
+
     def __init__(self, provider, route_table):
         super(AWSRouter, self).__init__(provider)
         self._route_table = route_table
@@ -1094,6 +1096,7 @@ class AWSRouter(BaseRouter):
 
 
 class AWSInternetGateway(BaseInternetGateway):
+
     def __init__(self, provider, gateway):
         super(AWSInternetGateway, self).__init__(provider)
         self._gateway = gateway

+ 13 - 14
cloudbridge/cloud/providers/azure/azure_client.py

@@ -19,7 +19,6 @@ class AzureClient(object):
     """
     Azure client is the wrapper on top of azure python sdk
     """
-
     def __init__(self, config):
         self._config = config
         self.subscription_id = config.get('azure_subscription_id')
@@ -365,11 +364,11 @@ class AzureClient(object):
                       subnet_name, params):
         result_create = self.network_management_client \
             .subnets.create_or_update(
-            self.resource_group,
-            network_name,
-            subnet_name,
-            params
-        )
+                self.resource_group,
+                network_name,
+                subnet_name,
+                params
+            )
         subnet_info = result_create.result()
 
         return subnet_info
@@ -377,10 +376,10 @@ class AzureClient(object):
     def delete_subnet(self, network_name, subnet_name):
         result_delete = self.network_management_client \
             .subnets.delete(
-            self.resource_group,
-            network_name,
-            subnet_name
-        )
+                self.resource_group,
+                network_name,
+                subnet_name
+            )
         result_delete.wait()
 
     def list_vm(self):
@@ -443,10 +442,10 @@ class AzureClient(object):
     def create_nic(self, nic_name, params):
         async_nic_creation = self.network_management_client. \
             network_interfaces.create_or_update(
-            self.resource_group,
-            nic_name,
-            params
-        )
+                self.resource_group,
+                nic_name,
+                params
+            )
         nic_info = async_nic_creation.result()
 
         return nic_info

+ 0 - 1
docs/topics/overview.rst

@@ -14,4 +14,3 @@ Introductions to all the key parts of CloudBridge you'll need to know:
     Using block storage <block_storage.rst>
     Using object storage <object_storage.rst>
     Troubleshooting <troubleshooting.rst>
-

+ 11 - 9
test/helpers/__init__.py

@@ -94,8 +94,8 @@ TEST_DATA_CONFIG = {
             os.environ.get('CB_PLACEMENT_AZURE', 'eastus'),
         "image":
             os.environ.get('CB_IMAGE_AZURE', 'CbTest-Img'),
-        "instance_type":
-            os.environ.get('CB_INSTANCE_TYPE_AZURE', 'Standard_DS1_v2'),
+        "vm_type":
+            os.environ.get('CB_VM_TYPE_AZURE', 'Standard_DS1_v2'),
     }
 }
 
@@ -105,6 +105,8 @@ def get_provider_test_data(provider, key):
         return TEST_DATA_CONFIG.get("AWSCloudProvider").get(key)
     elif "OpenStackCloudProvider" in provider.name:
         return TEST_DATA_CONFIG.get("OpenStackCloudProvider").get(key)
+    elif "AzureCloudProvider" in provider.name:
+        return TEST_DATA_CONFIG.get("AzureCloudProvider").get(key)
     return None
 
 
@@ -126,7 +128,8 @@ def delete_test_network(network):
     """
     with cleanup_action(lambda: network.delete()):
         for sn in network.subnets:
-            sn.delete()
+            with cleanup_action(lambda: sn.delete()):
+                pass
 
 
 def create_test_instance(
@@ -196,6 +199,7 @@ def get_uuid():
 
 
 class ProviderTestBase(unittest.TestCase):
+
     _provider = None
 
     def setUp(self):
@@ -214,17 +218,15 @@ class ProviderTestBase(unittest.TestCase):
             return 1
 
     def create_provider_instance(self):
-        provider_name = os.environ.get("CB_TEST_PROVIDER", "azure")
+        provider_name = os.environ.get("CB_TEST_PROVIDER", "aws")
         use_mock_drivers = parse_bool(
             os.environ.get("CB_USE_MOCK_PROVIDERS", "True"))
         factory = CloudProviderFactory()
         provider_class = factory.get_provider_class(provider_name,
                                                     get_mock=use_mock_drivers)
-        config = {
-            'default_wait_interval':
-                self.get_provider_wait_interval(provider_class),
-            'default_result_limit': 1}
-
+        config = {'default_wait_interval':
+                  self.get_provider_wait_interval(provider_class),
+                  'default_result_limit': 1}
         return provider_class(config)
 
     @property

+ 4 - 6
test/helpers/standard_interface_tests.py

@@ -5,10 +5,12 @@ This includes:
    2. Checking for object equality and repr
    3. Checking standard behaviour for list, iter, find, get, delete
 """
+import test.helpers as helpers
 import uuid
 
 from cloudbridge.cloud.interfaces.exceptions \
     import InvalidNameException
+from cloudbridge.cloud.interfaces.resources import ObjectLifeCycleMixin
 from cloudbridge.cloud.interfaces.resources import ResultList
 
 
@@ -68,6 +70,7 @@ def check_find(test, service, obj):
         len(find_objs) == 1,
         "Find objects for %s does not return the expected object: %s. Got %s"
         % (type(obj).__name__, obj.name, find_objs))
+    test.assertEqual(find_objs[0], obj)
     return find_objs
 
 
@@ -129,7 +132,7 @@ def check_obj_name(test, obj):
             obj.name = "hello world"
         # setting upper case characters should raise an exception
         with test.assertRaises(InvalidNameException):
-            obj.name = "hello World"
+            obj.name = "helloWorld"
         # setting special characters should raise an exception
         with test.assertRaises(InvalidNameException):
             obj.name = "hello.world:how_goes_it"
@@ -158,11 +161,6 @@ def check_standard_behaviour(test, service, obj):
     obj_get = check_get(test, service, obj)
     check_get_non_existent(test, service)
 
-    print("Out List - " + objs_list[0].state)
-    print("Out Iter - " + objs_iter[0].state)
-    print("Out Get - " + obj_get.state)
-    print("Out Find - " + objs_find[0].state)
-
     test.assertTrue(
         obj == objs_list[0] == objs_iter[0] == objs_find[0] == obj_get,
         "Objects returned by list: {0}, iter: {1}, find: {2} and get: {3} "

+ 3 - 3
test/test_compute_service.py

@@ -45,7 +45,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
                 name)
 
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
-                network=net)):
+                                               network=net)):
             net, subnet = helpers.create_test_network(self.provider, name)
 
             sit.check_crud(self, self.provider.compute.instances, Instance,
@@ -181,7 +181,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
         lc.add_volume_device(
             is_root=True,
             source=img,
-            size=img.min_disk if img and img.min_disk else 50,
+            size=img.min_disk if img and img.min_disk else 30,
             delete_on_terminate=True)
 
         # Attempting to add more than one root volume should raise an
@@ -261,7 +261,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
                 lc.add_volume_device(
                     is_root=True,
                     source=img,
-                    size=img.min_disk if img and img.min_disk else 50,
+                    size=img.min_disk if img and img.min_disk else 30,
                     delete_on_terminate=True)
 
                 # Add all available ephemeral devices

+ 7 - 11
test/test_network_service.py

@@ -13,7 +13,6 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['networking.networks'])
     def test_crud_network(self):
-
         def create_net(name):
             return self.provider.networking.networks.create(
                 name=name, cidr_block='10.0.0.0/16')
@@ -31,7 +30,7 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
         net = self.provider.networking.networks.create(
             name=name, cidr_block='10.0.0.0/16')
         with helpers.cleanup_action(
-            lambda: net.delete()
+                lambda: net.delete()
         ):
             net.wait_till_ready()
             self.assertEqual(
@@ -85,7 +84,7 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
         net = self.provider.networking.networks.create(
             name=net_name, cidr_block='10.0.0.0/16')
         with helpers.cleanup_action(
-            lambda:
+                lambda:
                 self.provider.networking.networks.delete(network_id=net.id)
         ):
             sit.check_crud(self, self.provider.networking.subnets, Subnet,
@@ -126,7 +125,6 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['networking.routers'])
     def test_crud_router(self):
-
         def _cleanup(net, subnet, router, gateway):
             with helpers.cleanup_action(lambda: net.delete()):
                 with helpers.cleanup_action(lambda: subnet.delete()):
@@ -152,9 +150,6 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
                                    zone=helpers.get_provider_test_data(
                                        self.provider, 'placement'))
 
-            # Comment out routers assertion because Azure has dummy
-            # implementation for routers
-            # and not returns the expected router from the routers method
             # Check basic router properties
             sit.check_standard_behaviour(
                 self, self.provider.networking.routers, router)
@@ -163,10 +158,11 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
                 "Router {0} state {1} should be {2}.".format(
                     router.id, router.state, RouterState.DETACHED))
 
-#             self.assertFalse(
-#                 router.network_id,
-#                 "Router {0} should not be assoc. with a network {1}".format(
-#                     router.id, router.network_id))
+            #             self.assertFalse(
+            #                 router.network_id,
+            #                 "Router {0} should not be assoc.
+            # with a network {1}".format(
+            #                     router.id, router.network_id))
 
             router.attach_subnet(sn)
             gteway = (self.provider.networking.gateways