Merge "Ensure LB member is removed upon pod removal" into stable/train

This commit is contained in:
Zuul 2020-01-14 12:48:02 +00:00 committed by Gerrit Code Review
commit 3e1f977d42
2 changed files with 11 additions and 4 deletions

View File

@ -431,8 +431,8 @@ class LoadBalancerHandler(k8s_base.ResourceEventHandler):
if port:
spec_ports[port.name] = pool.id
current_targets = {(a['ip'], p['port'],
spec_ports.get(p.get('name')))
current_targets = {(a['ip'], a.get('targetRef', {}).get('name', ''),
p['port'], spec_ports.get(p.get('name')))
for s in endpoints['subsets']
for a in s['addresses']
for p in s['ports']
@ -440,7 +440,14 @@ class LoadBalancerHandler(k8s_base.ResourceEventHandler):
removed_ids = set()
for member in lbaas_state.members:
if ((str(member.ip), member.port, member.pool_id) in
try:
member_name = member.name
# NOTE: The member name is compose of:
# NAMESPACE_NAME/POD_NAME:PROTOCOL_PORT
pod_name = member_name.split('/')[1].split(':')[0]
except AttributeError:
pod_name = ""
if ((str(member.ip), pod_name, member.port, member.pool_id) in
current_targets):
continue
self._drv_lbaas.release_member(lbaas_state.loadbalancer,

View File

@ -648,7 +648,7 @@ class TestLoadBalancerHandler(test_base.TestCase):
self.assertEqual(subnet_id, observed_subnet_id)
def _generate_lbaas_state(self, vip, targets, project_id, subnet_id):
name = 'DUMMY_NAME'
name = 'namespace/DUMMY_NAME'
drv = FakeLBaaSDriver()
lb = drv.ensure_loadbalancer(
name, project_id, subnet_id, vip, None, 'ClusterIP')