2
0
Эх сурвалжийг харах

Fix creating instances with VM type and image IDs

It works with GCEVMType and GCEMachineImage, but not when a VM type ID or an
image ID is given.

Also, make images service get() method search in public images, too, when the
given image name does not exist in the project.

Test stats after this CL
========================
Ran 58 tests in 1402.766s

FAILED (SKIP=1, errors=26, failures=8)
Ehsan Chiniforooshan 8 жил өмнө
parent
commit
0b922bb4f2

+ 1 - 1
cloudbridge/cloud/providers/gce/resources.py

@@ -863,7 +863,7 @@ class GCEInstance(BaseInstance):
                         instance=self.name)
                  .execute())
 
-    def terminate(self):
+    def delete(self):
         """
         Permanently terminate this instance.
         """

+ 11 - 1
cloudbridge/cloud/providers/gce/services.py

@@ -383,7 +383,13 @@ class GCEImageService(BaseImageService):
         Returns an Image given its id
         """
         image = self.provider.get_resource('images', image_id)
-        return GCEMachineImage(self.provider, image) if image else None
+        if image:
+            return GCEMachineImage(self.provider, image)
+        self._retrieve_public_images()
+        for public_image in self._public_images:
+            if public_image.id == image_id or public_image.name == image_id:
+                return public_image
+        return None
 
     def find(self, name, limit=None, marker=None):
         """
@@ -430,6 +436,10 @@ class GCEInstanceService(BaseInstanceService):
         GCEInstance.assert_valid_resource_name(name)
         if not zone:
             zone = self.provider.default_zone
+        if not isinstance(image, GCEMachineImage):
+            image = self.provider.compute.images.get(image)
+        if not isinstance(vm_type, GCEVMType):
+            vm_type = self.provider.compute.vm_types.get(vm_type)
         if not launch_config:
             if subnet:
                 network = self.provider.networking.networks.get(

+ 1 - 1
test/helpers/__init__.py

@@ -91,7 +91,7 @@ TEST_DATA_CONFIG = {
         "placement": os.environ.get('CB_PLACEMENT_OS', 'zone-r1'),
     },
     'GCECloudProvider': {
-        'image': 'ubuntu-1604-lts',
+        'image': 'ubuntu-1710-artful-v20180126',
         'vm_type': 'n1-standard-1',
         'placement': os.environ.get('GCE_DEFAULT_ZONE', 'us-central1-a'),
     },