From 0d8d92d9d501f8c326c89824d2f8333efd4a5fc9 Mon Sep 17 00:00:00 2001 From: linb Date: Wed, 24 Jun 2015 13:32:54 +0800 Subject: [PATCH] Fix routes disappeared by shared routers with different tenants When we try to update routes on shared edge with non-admin tenant, routes belong to other tenants would be disappeared on the edge. The patch fixed the problem by getting all relative objects with admin privilege. Change-Id: I6be20edb11f7d973b9f870aa1e9d2cb0e42ff5a2 --- vmware_nsx/neutron/plugins/vmware/plugins/nsx_v.py | 6 ++++-- .../vmware/plugins/nsx_v_drivers/shared_router_driver.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/vmware_nsx/neutron/plugins/vmware/plugins/nsx_v.py b/vmware_nsx/neutron/plugins/vmware/plugins/nsx_v.py index a9a824bec8..d3bf95f39d 100644 --- a/vmware_nsx/neutron/plugins/vmware/plugins/nsx_v.py +++ b/vmware_nsx/neutron/plugins/vmware/plugins/nsx_v.py @@ -1316,10 +1316,12 @@ class NsxVPluginV2(agents_db.AgentDbMixin, for route in routes: for port in ports: for ip in port['fixed_ips']: - subnet = self.get_subnet(context, ip['subnet_id']) + subnet = self.get_subnet(context.elevated(), + ip['subnet_id']) if netaddr.all_matching_cidrs( route['nexthop'], [subnet['cidr']]): - net = self.get_network(context, subnet['network_id']) + net = self.get_network(context.elevated(), + subnet['network_id']) route['network_id'] = net['id'] if net.get(ext_net_extn.EXTERNAL): route['external'] = True diff --git a/vmware_nsx/neutron/plugins/vmware/plugins/nsx_v_drivers/shared_router_driver.py b/vmware_nsx/neutron/plugins/vmware/plugins/nsx_v_drivers/shared_router_driver.py index b0b1a6bd5c..4fe0a855bf 100644 --- a/vmware_nsx/neutron/plugins/vmware/plugins/nsx_v_drivers/shared_router_driver.py +++ b/vmware_nsx/neutron/plugins/vmware/plugins/nsx_v_drivers/shared_router_driver.py @@ -83,7 +83,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver): routes = self.plugin._get_extra_routes_by_router_id( context, router_id) filters = {'device_id': [router_id]} - ports = self.plugin.get_ports(context, filters) + ports = self.plugin.get_ports(context.elevated(), filters) self.plugin._add_network_info_for_routes(context, routes, ports) all_routes.extend(routes) if not nexthop: