diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-09-19 18:03:34 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-09-19 18:03:34 +0000 |
commit | eca2c151603dca6bbe31375b64690553164e4acf (patch) | |
tree | fd2f125b37d8d83000ac7fcd54a8280c300198dc | |
parent | d5206f4c16a144bba1510526a26e7391af47a28d (diff) | |
parent | 15cfd039fe30456e9ff19cfb9572d981c6b991f6 (diff) | |
download | nova-eca2c151603dca6bbe31375b64690553164e4acf.tar.gz |
Merge "Refresh info_cache after deleting floating IP" into stable/liberty
-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 2b0298d40f..9786366e63 100644 --- a/nova/network/neutronv2/api.py +++ b/nova/network/neutronv2/api.py @@ -1540,8 +1540,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 25aca611ed..2cbd0775cf 100644 --- a/nova/tests/unit/network/test_neutronv2.py +++ b/nova/tests/unit/network/test_neutronv2.py @@ -2207,6 +2207,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'] |