NSXV - complete member deletion when pool is gone

When a pool doesn't exist on the backend, deletion of a member should
complete successfully.

Change-Id: I781c9f1e273f1ce510c6ce47fd567f7f6c7540db
(cherry picked from commit ebe30aa33b)
This commit is contained in:
Kobi Samoray 2021-02-21 15:43:18 +02:00
parent 85ea6068a3
commit cc5391c59a
1 changed files with 16 additions and 1 deletions

View File

@ -178,6 +178,14 @@ class EdgeMemberManagerFromDict(base_mgr.EdgeLoadbalancerBaseManager):
return
pool_binding = nsxv_db.get_nsxv_lbaas_pool_binding(
context.session, lb_id, member['pool_id'])
if not pool_binding:
# Don't fail deletion if the resource is already gone
LOG.warning("Couldn't find pool %s binding during member deletion",
member['pool_id'])
completor(success=True)
return
edge_id = lb_binding['edge_id']
old_lb = lb_common.is_lb_on_router_edge(
@ -206,7 +214,14 @@ class EdgeMemberManagerFromDict(base_mgr.EdgeLoadbalancerBaseManager):
return
edge_pool_id = pool_binding['edge_pool_id']
edge_pool = self.vcns.get_pool(edge_id, edge_pool_id)[1]
try:
edge_pool = self.vcns.get_pool(edge_id, edge_pool_id)[1]
except nsxv_exc.RequestBad:
# Pool doesn't exist, so member is obviously gone
LOG.warning('Edge pool %s does not exist on edge %s',
edge_pool_id, edge_id)
completor(success=True)
return
for i, m in enumerate(edge_pool['member']):
if m['name'] == lb_common.get_member_id(member['id']):