diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-09-05 21:18:19 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-09-05 21:18:19 +0000 |
| commit | 04fe82e286d07356ce7d181b6d7148d6adef7675 (patch) | |
| tree | d06a54e688d7c5acdad5279d4db8eda047dc6f52 | |
| parent | 936d0a49594e04e3ec08c7a2115784d072e61dee (diff) | |
| parent | c44ce398eacbd95331fb8990390a662cf4ce8f24 (diff) | |
| download | nova-04fe82e286d07356ce7d181b6d7148d6adef7675.tar.gz nova-04fe82e286d07356ce7d181b6d7148d6adef7675.tar.xz nova-04fe82e286d07356ce7d181b6d7148d6adef7675.zip | |
Merge "Allow admins to de-allocate any floating IPs"
| -rw-r--r-- | nova/network/manager.py | 3 | ||||
| -rw-r--r-- | nova/tests/network/test_manager.py | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/nova/network/manager.py b/nova/network/manager.py index f2af017df..d908b7a4c 100644 --- a/nova/network/manager.py +++ b/nova/network/manager.py @@ -388,6 +388,9 @@ class FloatingIP(object): def _floating_ip_owned_by_project(self, context, floating_ip): """Raises if floating ip does not belong to project""" + if context.is_admin: + return + if floating_ip['project_id'] != context.project_id: if floating_ip['project_id'] is None: LOG.warn(_('Address |%(address)s| is not allocated'), diff --git a/nova/tests/network/test_manager.py b/nova/tests/network/test_manager.py index bfe8d7a3b..31b600b16 100644 --- a/nova/tests/network/test_manager.py +++ b/nova/tests/network/test_manager.py @@ -581,6 +581,19 @@ class VlanNetworkTestCase(test.TestCase): 'project_id': ctxt.project_id} self.network._floating_ip_owned_by_project(ctxt, floating_ip) + ctxt = context.RequestContext(None, None, + is_admin=True) + + # does not raise (ctxt is admin) + floating_ip = {'address': '10.0.0.1', + 'project_id': None} + self.network._floating_ip_owned_by_project(ctxt, floating_ip) + + # does not raise (ctxt is admin) + floating_ip = {'address': '10.0.0.1', + 'project_id': 'testproject'} + self.network._floating_ip_owned_by_project(ctxt, floating_ip) + def test_allocate_floating_ip(self): ctxt = context.RequestContext('testuser', 'testproject', is_admin=False) |
