diff --git a/oslo_limit/fixture.py b/oslo_limit/fixture.py index 1964961..70f0b7d 100644 --- a/oslo_limit/fixture.py +++ b/oslo_limit/fixture.py @@ -36,13 +36,15 @@ def _fake_services( ) -def _fake_regions( - **query: dict[str, Any], -) -> Generator[_region.Region, None, None]: - # we are the only ones calling this, so we know exactly what we should be - # calling it with - assert set(query) == {'name'} - yield sdk_fakes.generate_fake_resource(_region.Region, name=query['name']) +def _fake_region( + region: str | _region.Region, +) -> _region.Region: + if isinstance(region, str): + region_id = region + else: + region_id = region.id + + return sdk_fakes.generate_fake_resource(_region.Region, id=region_id) def _fake_endpoints( @@ -156,7 +158,7 @@ class LimitFixture(fixtures.Fixture): # Then, requests by name self.mock_conn.services.side_effect = _fake_services - self.mock_conn.regions.side_effect = _fake_regions + self.mock_conn.get_region.side_effect = _fake_region self.mock_conn.endpoints.side_effect = _fake_endpoints # Finally, fake the actual limits and registered limits calls diff --git a/oslo_limit/limit.py b/oslo_limit/limit.py index 1b584ed..18d0e4c 100644 --- a/oslo_limit/limit.py +++ b/oslo_limit/limit.py @@ -396,18 +396,14 @@ class _EnforcerUtils: # find region (if any) if CONF.oslo_limit.endpoint_region_name is not None: - regions = self.connection.regions( # type: ignore - name=CONF.oslo_limit.endpoint_region_name - ) - regions = list(regions) - - if len(regions) > 1: - raise ValueError("Multiple regions found") - - if len(regions) == 0: + try: + region = self.connection.get_region( # type: ignore + CONF.oslo_limit.endpoint_region_name + ) + except os_exceptions.ResourceNotFound: raise ValueError("Region not found") - region_id = regions[0].id + region_id = region.id else: region_id = None diff --git a/oslo_limit/tests/test_limit.py b/oslo_limit/tests/test_limit.py index be1d52c..2792dbf 100644 --- a/oslo_limit/tests/test_limit.py +++ b/oslo_limit/tests/test_limit.py @@ -535,7 +535,7 @@ class TestEnforcerUtils(base.BaseTestCase): fake_endpoint = endpoint.Endpoint() self.mock_conn.endpoints.return_value = [fake_endpoint] fake_region = region.Region(id='REGION_ID') - self.mock_conn.regions.return_value = [fake_region] + self.mock_conn.get_region.return_value = fake_region utils = limit._EnforcerUtils() @@ -544,7 +544,7 @@ class TestEnforcerUtils(base.BaseTestCase): self.mock_conn.services.assert_called_once_with( type='SERVICE_TYPE', name='SERVICE_NAME' ) - self.mock_conn.regions.assert_called_once_with(name='regionOne') + self.mock_conn.get_region.assert_called_once_with('regionOne') self.mock_conn.endpoints.assert_called_once_with( service_id='SERVICE_ID', region_id='REGION_ID', interface='public' ) @@ -564,7 +564,7 @@ class TestEnforcerUtils(base.BaseTestCase): self.mock_conn.services.return_value = [fake_service] fake_endpoint = endpoint.Endpoint() self.mock_conn.endpoints.return_value = [fake_endpoint] - self.mock_conn.regions.return_value = [] + self.mock_conn.get_region.side_effect = os_exceptions.ResourceNotFound self.assertRaises(ValueError, limit._EnforcerUtils) @@ -572,36 +572,7 @@ class TestEnforcerUtils(base.BaseTestCase): self.mock_conn.services.assert_called_once_with( type='SERVICE_TYPE', name='SERVICE_NAME' ) - self.mock_conn.regions.assert_called_once_with(name='regionOne') - self.mock_conn.endpoints.assert_not_called() - - def test_get_endpoint_lookup_with_mutliple_regions(self): - self.config_fixture.config(group='oslo_limit', endpoint_id=None) - self.config_fixture.config( - group='oslo_limit', endpoint_service_type='SERVICE_TYPE' - ) - self.config_fixture.config( - group='oslo_limit', endpoint_service_name='SERVICE_NAME' - ) - self.config_fixture.config( - group='oslo_limit', endpoint_region_name='regionOne' - ) - fake_service = service.Service(id='SERVICE_ID') - self.mock_conn.services.return_value = [fake_service] - fake_endpoint = endpoint.Endpoint() - self.mock_conn.endpoints.return_value = [fake_endpoint] - self.mock_conn.regions.return_value = [ - region.Region(id='REGION_ID1'), - region.Region(id='REGION_ID2'), - ] - - self.assertRaises(ValueError, limit._EnforcerUtils) - - self.mock_conn.get_endpoint.assert_not_called() - self.mock_conn.services.assert_called_once_with( - type='SERVICE_TYPE', name='SERVICE_NAME' - ) - self.mock_conn.regions.assert_called_once_with(name='regionOne') + self.mock_conn.get_region.assert_called_once_with('regionOne') self.mock_conn.endpoints.assert_not_called() def test_get_registered_limit_empty(self):