Explorar o código

Fix and test for openstack provider not returning unique regions.

Nuwan Goonasekera %!s(int64=10) %!d(string=hai) anos
pai
achega
dbbbbacd95

+ 1 - 1
cloudbridge/cloud/providers/openstack/services.py

@@ -459,7 +459,7 @@ class OpenStackRegionService(BaseRegionService):
             for svc in self.provider.keystone.service_catalog.get_data()
             for endpoint in svc.get('endpoints', [])
         )
-        regions = (region for region in regions if region)
+        regions = set(region for region in regions if region)
         os_regions = [OpenStackRegion(self.provider, region)
                       for region in regions]
 

+ 8 - 0
test/test_region_service.py

@@ -43,3 +43,11 @@ class CloudRegionServiceTestCase(ProviderTestBase):
             region.name in region.to_json(),
             "Region name {0} not in JSON representation {1}".format(
                 region.name, region.to_json()))
+
+    def test_regions_unique(self):
+        """
+        Regions should not return duplicate items
+        """
+        regions = self.provider.compute.regions.list()
+        unique_regions = set([region.id for region in regions])
+        self.assertTrue(len(regions) == len(list(unique_regions)))