Merge "Revert "Allow admin user to get all tenant's floating IPs""

This commit is contained in:
Jenkins 2014-06-17 09:16:58 +00:00 committed by Gerrit Code Review
commit 3929b9a912
9 changed files with 3 additions and 155 deletions

View File

@ -141,7 +141,6 @@
"compute_extension:floating_ip_dns": "",
"compute_extension:floating_ip_pools": "",
"compute_extension:floating_ips": "",
"compute_extension:floating_ips:all_tenants": "rule:admin_api",
"compute_extension:floating_ips_bulk": "rule:admin_api",
"compute_extension:fping": "",
"compute_extension:fping:all_tenants": "rule:admin_api",
@ -294,7 +293,6 @@
"network:get_backdoor_port": "",
"network:get_floating_ip": "",
"network:get_floating_ips": "",
"network:get_floating_ip_pools": "",
"network:get_floating_ip_by_address": "",
"network:get_floating_ips_by_project": "",

View File

@ -1213,7 +1213,7 @@ class CloudController(object):
address)
floatings.append(floating)
else:
floatings = self.network_api.get_floating_ips(context)
floatings = self.network_api.get_floating_ips_by_project(context)
addresses = [self._format_address(context, f) for f in floatings]
return {'addressesSet': addresses}

View File

@ -27,14 +27,11 @@ from nova import exception
from nova import network
from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging
from nova.openstack.common import strutils
from nova.openstack.common import uuidutils
LOG = logging.getLogger(__name__)
authorize = extensions.extension_authorizer('compute', 'floating_ips')
authorize_all_tenants = extensions.extension_authorizer(
'compute', 'floating_ips:all_tenants')
def make_float_ip(elem):
@ -138,19 +135,11 @@ class FloatingIPController(object):
@wsgi.serializers(xml=FloatingIPsTemplate)
def index(self, req):
"""Return a list of floating ips."""
"""Return a list of floating ips allocated to a project."""
context = req.environ['nova.context']
authorize(context)
all_tenants = False
if 'all_tenants' in req.GET:
try:
if strutils.bool_from_string(req.GET['all_tenants'], True):
authorize_all_tenants(context)
all_tenants = True
except ValueError as err:
raise webob.exc.HTTPBadRequest(explanation=str(err))
floating_ips = self.network_api.get_floating_ips(context, all_tenants)
floating_ips = self.network_api.get_floating_ips_by_project(context)
for floating_ip in floating_ips:
self._normalize_ip(floating_ip)

View File

@ -128,14 +128,6 @@ class API(base_api.NetworkAPI):
return self.db.floating_ip_get_all_by_project(context,
context.project_id)
@wrap_check_policy
def get_floating_ips(self, context, all_tenants=False):
if all_tenants:
return self.db.floating_ip_get_all(context)
else:
return self.db.floating_ip_get_all_by_project(context,
context.project_id)
@wrap_check_policy
def get_floating_ips_by_fixed_address(self, context, fixed_address):
floating_ips = self.db.floating_ip_get_by_fixed_address(context,

View File

@ -897,20 +897,6 @@ class API(base_api.NetworkAPI):
return [self._format_floating_ip_model(fip, pool_dict, port_dict)
for fip in fips]
def get_floating_ips(self, context, all_tenants=False):
client = neutronv2.get_client(context)
project_id = context.project_id
if all_tenants:
fips = client.list_floatingips()['floatingips']
port_dict = self._setup_ports_dict(client)
else:
fips = client.list_floatingips(
tenant_id=project_id)['floatingips']
port_dict = self._setup_ports_dict(client, project_id)
pool_dict = self._setup_pools_dict(client)
return [self._format_floating_ip_model(fip, pool_dict, port_dict)
for fip in fips]
def get_floating_ips_by_fixed_address(self, context, fixed_address):
raise NotImplementedError()

View File

@ -42,24 +42,6 @@ def network_api_get_floating_ip(self, context, id):
'fixed_ip_id': None}
def network_api_get_floating_ips(self, context, all_tenants=False):
ret = [{'id': 1,
'address': '10.10.10.10',
'pool': 'nova',
'fixed_ip': {'address': '10.0.0.1',
'instance': {'uuid': FAKE_UUID}}},
{'id': 2,
'pool': 'nova', 'interface': 'eth0',
'address': '10.10.10.11',
'fixed_ip': None}]
if all_tenants:
ret.append({'id': 3,
'pool': 'nova', 'interface': 'eth1',
'address': '10.10.10.12',
'fixed_ip': None})
return ret
def network_api_get_floating_ip_by_address(self, context, address):
return {'id': 1, 'address': '10.10.10.10', 'pool': 'nova',
'fixed_ip_id': 10}
@ -150,8 +132,6 @@ class FloatingIpTest(test.TestCase):
compute_api_get)
self.stubs.Set(network.api.API, "get_floating_ip",
network_api_get_floating_ip)
self.stubs.Set(network.api.API, "get_floating_ips",
network_api_get_floating_ips)
self.stubs.Set(network.api.API, "get_floating_ip_by_address",
network_api_get_floating_ip_by_address)
self.stubs.Set(network.api.API, "get_floating_ips_by_project",
@ -222,35 +202,6 @@ class FloatingIpTest(test.TestCase):
'id': 2}]}
self.assertEqual(res_dict, response)
def test_floating_ips_list_all_tenants_admin(self):
req = fakes.HTTPRequest.blank(
'/v2/fake/os-floating-ips/?all_tenants=1',
use_admin_context=True)
res_dict = self.controller.index(req)
response = {'floating_ips': [{'instance_id': FAKE_UUID,
'ip': '10.10.10.10',
'pool': 'nova',
'fixed_ip': '10.0.0.1',
'id': 1},
{'instance_id': None,
'ip': '10.10.10.11',
'pool': 'nova',
'fixed_ip': None,
'id': 2},
{'instance_id': None,
'ip': '10.10.10.12',
'pool': 'nova',
'fixed_ip': None,
'id': 3}]}
self.assertEqual(response, res_dict)
def test_floating_ips_list_all_tenants_not_admin(self):
req = fakes.HTTPRequest.blank(
'/v2/fake/os-floating-ips/?all_tenants=1',
use_admin_context=False)
self.assertRaises(exception.Forbidden, self.controller.index, req)
def test_floating_ip_release_nonexisting(self):
def fake_get_floating_ip(*args, **kwargs):
raise exception.FloatingIpNotFound(id=id)
@ -673,8 +624,6 @@ class ExtendedFloatingIpTest(test.TestCase):
compute_api_get)
self.stubs.Set(network.api.API, "get_floating_ip",
network_api_get_floating_ip)
self.stubs.Set(network.api.API, "get_floating_ips",
network_api_get_floating_ips)
self.stubs.Set(network.api.API, "get_floating_ip_by_address",
network_api_get_floating_ip_by_address)
self.stubs.Set(network.api.API, "get_floating_ips_by_project",

View File

@ -199,7 +199,6 @@ policy_data = """
"compute_extension:floating_ip_dns": "",
"compute_extension:floating_ip_pools": "",
"compute_extension:floating_ips": "",
"compute_extension:floating_ips:all_tenants": "rule:admin_api",
"compute_extension:floating_ips_bulk": "",
"compute_extension:fping": "",
"compute_extension:fping:all_tenants": "is_admin:True",
@ -347,7 +346,6 @@ policy_data = """
"network:setup_networks_on_host": "",
"network:get_floating_ip": "",
"network:get_floating_ips": "",
"network:get_floating_ip_pools": "",
"network:get_floating_ip_by_address": "",
"network:get_floating_ips_by_project": "",

View File

@ -155,24 +155,6 @@ class ApiTestCase(test.TestCase):
def test_associate_unassociated_floating_ip(self):
self._do_test_associate_floating_ip(None)
def test_get_floating_ips(self):
self.mox.StubOutWithMock(self.network_api.db, 'floating_ip_get_all')
self.network_api.db.floating_ip_get_all(self.context).AndReturn(
['project1-floating-ip', 'project2-floating-ip'])
self.mox.StubOutWithMock(self.network_api.db,
'floating_ip_get_all_by_project')
self.network_api.db.\
floating_ip_get_all_by_project(self.context,
self.context.project_id).\
AndReturn(['project1-floating-ip'])
self.mox.ReplayAll()
floating_ips = self.network_api.get_floating_ips(self.context)
floating_ips_all = self.network_api.get_floating_ips(self.context,
all_tenants=True)
self.assertEqual(['project1-floating-ip'], floating_ips)
self.assertEqual(['project1-floating-ip', 'project2-floating-ip'],
floating_ips_all)
def test_get_floating_ip_invalid_id(self):
self.assertRaises(exception.InvalidID,
self.network_api.get_floating_ip,

View File

@ -310,14 +310,6 @@ class TestNeutronv2Base(test.TestCase):
'port_id': None,
'fixed_ip_address': None,
'router_id': None}
self.fip_unassociated_not_my = {'tenant_id': 'not_my_tenantid',
'id': 'fip_id3',
'floating_ip_address': '172.24.4.227',
'floating_network_id': self.fip_pool[
'id'],
'port_id': None,
'fixed_ip_address': None,
'router_id': None}
fixed_ip_address = self.port_data2[1]['fixed_ips'][0]['ip_address']
self.fip_associated = {'tenant_id': 'my_tenantid',
'id': 'fip_id2',
@ -1662,44 +1654,6 @@ class TestNeutronv2(TestNeutronv2Base):
fips = api.get_floating_ips_by_project(self.context)
self.assertEqual(expected, fips)
def test_get_floating_ips(self):
api = neutronapi.API()
project_id = self.context.project_id
self.moxed_client.list_floatingips(tenant_id=project_id).\
AndReturn({'floatingips': [self.fip_unassociated,
self.fip_associated]})
self.moxed_client.list_ports(tenant_id=project_id). \
AndReturn({'ports': self.port_data2})
search_opts = {'router:external': True}
self.moxed_client.list_networks(**search_opts). \
AndReturn({'networks': [self.fip_pool, self.fip_pool_nova]})
self.mox.ReplayAll()
expected = [self._get_expected_fip_model(self.fip_unassociated),
self._get_expected_fip_model(self.fip_associated, idx=1)]
fips = api.get_floating_ips(self.context)
self.assertEqual(expected, fips)
def test_get_floating_ips_all_tenants(self):
api = neutronapi.API()
self.moxed_client.list_floatingips(). \
AndReturn({'floatingips': [self.fip_unassociated,
self.fip_associated,
self.fip_unassociated_not_my]})
self.moxed_client.list_ports().AndReturn({'ports': self.port_data2})
search_opts = {'router:external': True}
self.moxed_client.list_networks(**search_opts). \
AndReturn({'networks': [self.fip_pool, self.fip_pool_nova]})
self.mox.ReplayAll()
expected = [self._get_expected_fip_model(self.fip_unassociated),
self._get_expected_fip_model(self.fip_associated, idx=1),
self._get_expected_fip_model(self.fip_unassociated_not_my,
idx=2)]
fips = api.get_floating_ips(self.context, all_tenants=True)
self.assertEqual(expected, fips)
def _test_get_instance_id_by_floating_address(self, fip_data,
associated=False):
api = neutronapi.API()