NSX|P: Fix octavia delete cascade with multiple listeners

Delete cascade calls each listener delete separatly while the loadbalancer still holds all the listeners.
This cause the GW policy resources for listeners allowed cidrs to not be deleted.
This patch calls the code directly with no listeners to ensure deletion.

Change-Id: I212ce9642939bf1875d1b4549a0e271a20b58552
This commit is contained in:
asarfaty 2021-02-07 10:44:32 +02:00 committed by Adit Sarfaty
parent febbe22f76
commit a77d13fdc4
2 changed files with 5 additions and 0 deletions

View File

@ -222,6 +222,8 @@ class EdgeLoadBalancerManagerFromDict(base_mgr.NsxpLoadbalancerBaseManager):
def delete_cascade(self, context, lb, completor):
"""Delete all backend and DB resources of this loadbalancer"""
p_utils.set_allowed_cidrs_fw(self.core_plugin,
context, lb, [])
self.delete(context, lb, completor)

View File

@ -535,6 +535,8 @@ class TestEdgeLbaasV2Loadbalancer(BaseTestEdgeLbaasV2):
lb_service = {'id': LB_SERVICE_ID}
with mock.patch.object(lb_utils, 'get_router_from_network',
return_value=ROUTER_ID),\
mock.patch.object(self.core_plugin, 'get_floatingips'
) as mock_get_floatingips, \
mock.patch.object(self.service_client, 'update_customized',
side_effect=n_exc.BadRequest(resource='', msg='')
) as service_update,\
@ -543,6 +545,7 @@ class TestEdgeLbaasV2Loadbalancer(BaseTestEdgeLbaasV2):
mock.patch.object(self.service_client, 'delete'
) as mock_delete_lb_service:
mock_get_floatingips.return_value = []
self.edge_driver.loadbalancer.delete_cascade(
self.context, self.lb_dict, self.completor)