Преглед изворни кода

Fix and test for openstack provider not returning unique regions.

Nuwan Goonasekera пре 10 година
родитељ
комит
dbbbbacd95
2 измењених фајлова са 9 додато и 1 уклоњено
  1. 1 1
      cloudbridge/cloud/providers/openstack/services.py
  2. 8 0
      test/test_region_service.py

+ 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 svc in self.provider.keystone.service_catalog.get_data()
             for endpoint in svc.get('endpoints', [])
             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)
         os_regions = [OpenStackRegion(self.provider, region)
                       for region in regions]
                       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 in region.to_json(),
             "Region name {0} not in JSON representation {1}".format(
             "Region name {0} not in JSON representation {1}".format(
                 region.name, region.to_json()))
                 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)))