summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-09-19 18:03:34 +0000
committerGerrit Code Review <review@openstack.org>2016-09-19 18:03:34 +0000
commiteca2c151603dca6bbe31375b64690553164e4acf (patch)
treefd2f125b37d8d83000ac7fcd54a8280c300198dc
parentd5206f4c16a144bba1510526a26e7391af47a28d (diff)
parent15cfd039fe30456e9ff19cfb9572d981c6b991f6 (diff)
downloadnova-eca2c151603dca6bbe31375b64690553164e4acf.tar.gz
Merge "Refresh info_cache after deleting floating IP" into stable/liberty
-rw-r--r--nova/network/neutronv2/api.py14
-rw-r--r--nova/tests/unit/network/test_neutronv2.py15
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']