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

Changed instancetype.find() to return a list and fixed tests.

Nuwan Goonasekera 10 лет назад
Родитель
Сommit
480428673f

+ 1 - 2
cloudbridge/cloud/base.py

@@ -753,8 +753,7 @@ class BaseInstanceTypesService(
     def find(self, **kwargs):
     def find(self, **kwargs):
         name = kwargs.get('name')
         name = kwargs.get('name')
         if name:
         if name:
-            return next((itype for itype in self.list() if itype.name == name),
-                        None)
+            return [itype for itype in self.list() if itype.name == name]
         else:
         else:
             raise TypeError(
             raise TypeError(
                 "Invalid parameters for search. Supported attributes: {name}")
                 "Invalid parameters for search. Supported attributes: {name}")

+ 2 - 2
cloudbridge/cloud/providers/aws/resources.py

@@ -250,8 +250,8 @@ class AWSInstance(BaseInstance):
         """
         """
         Get the instance type.
         Get the instance type.
         """
         """
-        return next(self._provider.compute.instance_types.find(
-            name=self._ec2_instance.instance_type))
+        return self._provider.compute.instance_types.find(
+            name=self._ec2_instance.instance_type)[0]
 
 
     def reboot(self):
     def reboot(self):
         """
         """

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

@@ -509,9 +509,8 @@ class OpenStackInstanceService(BaseInstanceService):
         image_id = image.id if isinstance(image, MachineImage) else image
         image_id = image.id if isinstance(image, MachineImage) else image
         instance_size = instance_type.id if \
         instance_size = instance_type.id if \
             isinstance(instance_type, InstanceType) else \
             isinstance(instance_type, InstanceType) else \
-            next(
-                self.provider.compute.instance_types.find(
-                    name=instance_type)).id
+            self.provider.compute.instance_types.find(
+                name=instance_type)[0].id
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
         keypair_name = keypair.name if \
         keypair_name = keypair.name if \
             isinstance(keypair, KeyPair) else keypair
             isinstance(keypair, KeyPair) else keypair

+ 4 - 4
test/test_compute_service.py

@@ -192,8 +192,8 @@ class CloudComputeServiceTestCase(ProviderTestBase):
         instance_type_name = helpers.get_provider_test_data(
         instance_type_name = helpers.get_provider_test_data(
             self.provider,
             self.provider,
             "instance_type")
             "instance_type")
-        inst_type = next(self.provider.compute.instance_types.find(
-            name=instance_type_name))
+        inst_type = self.provider.compute.instance_types.find(
+            name=instance_type_name)[0]
         for _ in range(inst_type.num_ephemeral_disks):
         for _ in range(inst_type.num_ephemeral_disks):
             lc.add_ephemeral_device()
             lc.add_ephemeral_device()
 
 
@@ -259,8 +259,8 @@ class CloudComputeServiceTestCase(ProviderTestBase):
         instance_type_name = helpers.get_provider_test_data(
         instance_type_name = helpers.get_provider_test_data(
             self.provider,
             self.provider,
             "instance_type")
             "instance_type")
-        inst_type = next(self.provider.compute.instance_types.find(
-            name=instance_type_name))
+        inst_type = self.provider.compute.instance_types.find(
+            name=instance_type_name)[0]
         for _ in range(inst_type.num_ephemeral_disks):
         for _ in range(inst_type.num_ephemeral_disks):
             lc.add_ephemeral_device()
             lc.add_ephemeral_device()
 
 

+ 5 - 5
test/test_instance_types_service.py

@@ -78,14 +78,14 @@ class CloudInstanceTypesServiceTestCase(ProviderTestBase):
         instance_type_name = helpers.get_provider_test_data(
         instance_type_name = helpers.get_provider_test_data(
             self.provider,
             self.provider,
             "instance_type")
             "instance_type")
-        inst_type = next(self.provider.compute.instance_types.find(
-            name=instance_type_name))
+        inst_type = self.provider.compute.instance_types.find(
+            name=instance_type_name)[0]
         self.assertTrue(isinstance(inst_type, InstanceType),
         self.assertTrue(isinstance(inst_type, InstanceType),
                         "Find must return an InstanceType object")
                         "Find must return an InstanceType object")
 
 
-        with self.assertRaises(StopIteration):
-            inst_type = next(self.provider.compute.instance_types.find(
-                name="non_existent_instance_type"))
+        self.assertFalse(self.provider.compute.instance_types.find(
+            name="non_existent_instance_type"), "Searching for a non-existent"
+            " instance type must return an empty list")
 
 
         with self.assertRaises(TypeError):
         with self.assertRaises(TypeError):
             self.provider.compute.instance_types.find(
             self.provider.compute.instance_types.find(