NSXv: Place LB only on tenant's router
When LBaaS selects an Edge appliance to host a load balancer, it should lookup only ports which belong to the specifig tenant who creates the load balancer. Change-Id: I3d489f88b9506abe1c6604c5704e8e718c93c582
This commit is contained in:
parent
8d4385173e
commit
37939d8c3e
@ -31,14 +31,15 @@ def get_member_id(member_id):
|
|||||||
return MEMBER_ID_PFX + member_id
|
return MEMBER_ID_PFX + member_id
|
||||||
|
|
||||||
|
|
||||||
def get_lbaas_edge_id_for_subnet(context, plugin, subnet_id):
|
def get_lbaas_edge_id_for_subnet(context, plugin, subnet_id, tenant_id):
|
||||||
"""
|
"""
|
||||||
Grab the id of an Edge appliance that is connected to subnet_id.
|
Grab the id of an Edge appliance that is connected to subnet_id.
|
||||||
"""
|
"""
|
||||||
subnet = plugin.get_subnet(context, subnet_id)
|
subnet = plugin.get_subnet(context, subnet_id)
|
||||||
net_id = subnet.get('network_id')
|
net_id = subnet.get('network_id')
|
||||||
filters = {'network_id': [net_id],
|
filters = {'network_id': [net_id],
|
||||||
'device_owner': ['network:router_interface']}
|
'device_owner': ['network:router_interface'],
|
||||||
|
'tenant_id': [tenant_id]}
|
||||||
attached_routers = plugin.get_ports(context.elevated(),
|
attached_routers = plugin.get_ports(context.elevated(),
|
||||||
filters=filters,
|
filters=filters,
|
||||||
fields=['device_id'])
|
fields=['device_id'])
|
||||||
|
@ -180,7 +180,8 @@ class EdgeLbDriver(object):
|
|||||||
def create_pool(self, context, pool):
|
def create_pool(self, context, pool):
|
||||||
LOG.debug('Creating pool %s', pool)
|
LOG.debug('Creating pool %s', pool)
|
||||||
edge_id = lb_common.get_lbaas_edge_id_for_subnet(
|
edge_id = lb_common.get_lbaas_edge_id_for_subnet(
|
||||||
context, self.callbacks.plugin, pool['subnet_id'])
|
context, self.callbacks.plugin, pool['subnet_id'],
|
||||||
|
pool['tenant_id'])
|
||||||
|
|
||||||
if edge_id is None:
|
if edge_id is None:
|
||||||
self.lbv1_driver.pool_failed(context, pool)
|
self.lbv1_driver.pool_failed(context, pool)
|
||||||
|
@ -35,7 +35,7 @@ class EdgeLoadBalancerManager(base_mgr.EdgeLoadbalancerBaseManager):
|
|||||||
def create(self, context, lb):
|
def create(self, context, lb):
|
||||||
try:
|
try:
|
||||||
edge_id = lb_common.get_lbaas_edge_id_for_subnet(
|
edge_id = lb_common.get_lbaas_edge_id_for_subnet(
|
||||||
context, self.core_plugin, lb.vip_subnet_id)
|
context, self.core_plugin, lb.vip_subnet_id, lb.tenant_id)
|
||||||
|
|
||||||
if not nsxv_db.get_nsxv_lbaas_loadbalancer_binding_by_edge(
|
if not nsxv_db.get_nsxv_lbaas_loadbalancer_binding_by_edge(
|
||||||
context.session, edge_id):
|
context.session, edge_id):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user