summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorLianhao Lu <lianhao.lu@intel.com>2012-08-21 10:37:30 +0800
committerLianhao Lu <lianhao.lu@intel.com>2012-08-23 15:21:08 +0800
commit40753f30b102dce60d5aeead53becc27d0e53f11 (patch)
tree0d38735d658be2e63e5baae19f224b6fad856e3b /nova/api
parent9fecad9e6f7803f3422e7769c01ba3b9076ed308 (diff)
Check association when removing floating ip.
Fixes bug 1032558 and returns 404 when trying to delete a floating ip from an instance to which it is not associated. Change-Id: I30b4d8a318597d38c7afc01ee6d2e6842b999157
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/compute/contrib/floating_ips.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/nova/api/openstack/compute/contrib/floating_ips.py b/nova/api/openstack/compute/contrib/floating_ips.py
index 6fb9f0cc1..6e3c24567 100644
--- a/nova/api/openstack/compute/contrib/floating_ips.py
+++ b/nova/api/openstack/compute/contrib/floating_ips.py
@@ -27,6 +27,7 @@ from nova.compute import utils as compute_utils
from nova import exception
from nova import network
from nova.openstack.common import log as logging
+from nova import utils
LOG = logging.getLogger(__name__)
@@ -282,7 +283,11 @@ class FloatingIPActionController(wsgi.Controller):
instance = get_instance_by_floating_ip_addr(self, context, address)
# disassociate if associated
- if instance and floating_ip.get('fixed_ip_id'):
+ if (instance and
+ floating_ip.get('fixed_ip_id') and
+ (utils.is_uuid_like(id) and
+ [instance['uuid'] == id] or
+ [instance['id'] == id])[0]):
disassociate_floating_ip(self, context, instance, address)
return webob.Response(status_int=202)
else: