Przeglądaj źródła

Put in check to make sure zone is specified when launching a new volume
based block device mapping.

nuwan_ag 10 lat temu
rodzic
commit
9cc9039326

+ 6 - 0
cloudbridge/cloud/providers/aws/services.py

@@ -21,6 +21,8 @@ from cloudbridge.cloud.base import BaseSecurityGroupService
 from cloudbridge.cloud.base import BaseSecurityService
 from cloudbridge.cloud.base import BaseSnapshotService
 from cloudbridge.cloud.base import BaseVolumeService
+from cloudbridge.cloud.interfaces.resources \
+    import InvalidConfigurationException
 from cloudbridge.cloud.interfaces.resources import InstanceType
 from cloudbridge.cloud.interfaces.resources import KeyPair
 from cloudbridge.cloud.interfaces.resources import MachineImage
@@ -480,6 +482,10 @@ class AWSInstanceService(BaseInstanceService):
                     # create a blank volume. If the Zone is None, this
                     # could fail since the volume and instance may be created
                     # in two different zones.
+                    if not zone:
+                        raise InvalidConfigurationException(
+                            "A zone must be specified when launching with a"
+                            " new blank volume block device mapping.")
                     new_vol = self.provider.block_store.volumes.create(
                         '',
                         device.size,

+ 3 - 1
test/helpers.py

@@ -71,11 +71,13 @@ def get_provider_test_data(provider, key):
     return None
 
 
-def create_test_instance(provider, instance_name, launch_config=None):
+def create_test_instance(
+        provider, instance_name, zone=None, launch_config=None):
     return provider.compute.instances.create(
         instance_name,
         get_provider_test_data(provider, 'image'),
         get_provider_test_data(provider, 'instance_type'),
+        zone=zone,
         launch_config=launch_config)
 
 

+ 2 - 1
test/test_provider_compute_service.py

@@ -128,7 +128,7 @@ class ProviderComputeServiceTestCase(ProviderTestBase):
         # Override root volume size
         image_id = helpers.get_provider_test_data(self.provider, "image")
         img = self.provider.compute.images.get(image_id)
-        lc.add_volume_device(is_root=True, source=img, size=3)
+        lc.add_volume_device(is_root=True, source=img, size=2)
 
         # Attempting to add more than one root volume should raise an
         # exception.
@@ -153,6 +153,7 @@ class ProviderComputeServiceTestCase(ProviderTestBase):
         inst = helpers.create_test_instance(
             self.provider,
             name,
+            zone=helpers.get_provider_test_data(self.provider, 'placement'),
             launch_config=lc)
         with helpers.cleanup_action(lambda: inst.terminate()):
             try: