diff --git a/designate/central/service.py b/designate/central/service.py index 95adcdf32..f938a6500 100644 --- a/designate/central/service.py +++ b/designate/central/service.py @@ -1982,10 +1982,12 @@ class Service(service.RPCService, service.Service): tenant_fips = self._list_floatingips(context, region=region) - self._get_floatingip(context, region, floatingip_id, tenant_fips) + fip = self._get_floatingip(context, region, floatingip_id, tenant_fips) + + result = self._list_to_dict([fip], keys=['region', 'id']) valid, invalid = self._determine_floatingips( - elevated_context, tenant_fips) + elevated_context, result) self._invalidate_floatingips(context, invalid) diff --git a/designate/tests/test_central/test_service.py b/designate/tests/test_central/test_service.py index 002c612bf..fdef66972 100644 --- a/designate/tests/test_central/test_service.py +++ b/designate/tests/test_central/test_service.py @@ -2325,6 +2325,20 @@ class CentralServiceTest(CentralTestCase): self.assertEqual(fip['address'], fip_ptr['address']) self.assertIsNone(fip_ptr['ptrdname']) + def test_get_floatingip_dual_no_record(self): + context = self.get_context(tenant='a') + + self.network_api.fake.allocate_floatingip(context.tenant) + fip = self.network_api.fake.allocate_floatingip(context.tenant) + + fip_ptr = self.central_service.get_floatingip( + context, fip['region'], fip['id']) + + self.assertEqual(fip['region'], fip_ptr['region']) + self.assertEqual(fip['id'], fip_ptr['id']) + self.assertEqual(fip['address'], fip_ptr['address']) + self.assertIsNone(fip_ptr['ptrdname']) + def test_get_floatingip_with_record(self): context = self.get_context(tenant='a')