diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-09-19 07:32:49 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-09-19 07:32:49 +0000 |
commit | 96f06c8f333fb97d6f9b07157d70a903933e0269 (patch) | |
tree | 5fc6f8501bba0e8c87f077690a93d69b08bc4a76 | |
parent | 862be5cab516efbb7d6f22abcc795d8dfee0f6d0 (diff) | |
parent | a832e6b2a019323fdf00e30302ad5c3c809baa21 (diff) | |
download | nova-96f06c8f333fb97d6f9b07157d70a903933e0269.tar.gz |
Merge "Refresh info_cache after deleting floating IP" into stable/mitaka
-rw-r--r-- | nova/network/neutronv2/api.py | 14 | ||||
-rw-r--r-- | nova/tests/unit/network/test_neutronv2.py | 15 |
2 files changed, 27 insertions, 2 deletions
diff --git a/nova/network/neutronv2/api.py b/nova/network/neutronv2/api.py index 06c4f49249..7050f97211 100644 --- a/nova/network/neutronv2/api.py +++ b/nova/network/neutronv2/api.py @@ -1553,8 +1553,18 @@ class API(base_api.NetworkAPI): This api call was added to allow this to be done in one operation if using neutron. """ - self._release_floating_ip(context, floating_ip['address'], - raise_if_associated=False) + + @base_api.refresh_cache + def _release_floating_ip_and_refresh_cache(self, context, instance, + floating_ip): + self._release_floating_ip(context, floating_ip['address'], + raise_if_associated=False) + if instance: + _release_floating_ip_and_refresh_cache(self, context, instance, + floating_ip) + else: + self._release_floating_ip(context, floating_ip['address'], + raise_if_associated=False) def _release_floating_ip(self, context, address, raise_if_associated=True): diff --git a/nova/tests/unit/network/test_neutronv2.py b/nova/tests/unit/network/test_neutronv2.py index 8619fae946..fa4ace0591 100644 --- a/nova/tests/unit/network/test_neutronv2.py +++ b/nova/tests/unit/network/test_neutronv2.py @@ -2275,6 +2275,21 @@ class TestNeutronv2(TestNeutronv2Base): api.disassociate_and_release_floating_ip(self.context, None, floating_ip) + def test_disassociate_and_release_floating_ip_with_instance(self): + api = neutronapi.API() + address = self.fip_unassociated['floating_ip_address'] + fip_id = self.fip_unassociated['id'] + floating_ip = {'address': address} + instance = self._fake_instance_object(self.instance) + + self.moxed_client.list_floatingips(floating_ip_address=address).\ + AndReturn({'floatingips': [self.fip_unassociated]}) + self.moxed_client.delete_floatingip(fip_id) + self._setup_mock_for_refresh_cache(api, [instance]) + self.mox.ReplayAll() + api.disassociate_and_release_floating_ip(self.context, instance, + floating_ip) + def test_release_floating_ip_associated(self): api = neutronapi.API() address = self.fip_associated['floating_ip_address'] |