소스 검색

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 년 전
부모
커밋
0b922bb4f2
3개의 변경된 파일13개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 1
      cloudbridge/cloud/providers/gce/resources.py
  2. 11 1
      cloudbridge/cloud/providers/gce/services.py
  3. 1 1
      test/helpers/__init__.py

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

@@ -863,7 +863,7 @@ class GCEInstance(BaseInstance):
                         instance=self.name)
                         instance=self.name)
                  .execute())
                  .execute())
 
 
-    def terminate(self):
+    def delete(self):
         """
         """
         Permanently terminate this instance.
         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
         Returns an Image given its id
         """
         """
         image = self.provider.get_resource('images', image_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):
     def find(self, name, limit=None, marker=None):
         """
         """
@@ -430,6 +436,10 @@ class GCEInstanceService(BaseInstanceService):
         GCEInstance.assert_valid_resource_name(name)
         GCEInstance.assert_valid_resource_name(name)
         if not zone:
         if not zone:
             zone = self.provider.default_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 not launch_config:
             if subnet:
             if subnet:
                 network = self.provider.networking.networks.get(
                 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'),
         "placement": os.environ.get('CB_PLACEMENT_OS', 'zone-r1'),
     },
     },
     'GCECloudProvider': {
     'GCECloudProvider': {
-        'image': 'ubuntu-1604-lts',
+        'image': 'ubuntu-1710-artful-v20180126',
         'vm_type': 'n1-standard-1',
         'vm_type': 'n1-standard-1',
         'placement': os.environ.get('GCE_DEFAULT_ZONE', 'us-central1-a'),
         'placement': os.environ.get('GCE_DEFAULT_ZONE', 'us-central1-a'),
     },
     },