From 472b3f4e221c16674ccecf1efb9f479987324f2d Mon Sep 17 00:00:00 2001 From: Kobi Samoray Date: Sun, 2 May 2021 17:28:42 +0300 Subject: [PATCH] Octavia driver: L7 policy delete cascade During cascaded deletion of a L7 policy, a rule should contain the policy, with the list of rules associated nested beneath. During deletion, the rule list should be revised as the rules are removed. Change-Id: Idbff03c1126f4f8cccd3c508d5ba7da5fcde5b80 --- vmware_nsx/services/lbaas/octavia/octavia_listener.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/vmware_nsx/services/lbaas/octavia/octavia_listener.py b/vmware_nsx/services/lbaas/octavia/octavia_listener.py index e9156bd625..92c081ef6e 100644 --- a/vmware_nsx/services/lbaas/octavia/octavia_listener.py +++ b/vmware_nsx/services/lbaas/octavia/octavia_listener.py @@ -12,7 +12,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. - +import copy import socket import time @@ -334,10 +334,18 @@ class NSXOctaviaListenerEndpoint(object): listener['loadbalancer'] = loadbalancer listener_dict[listener['id']] = listener for policy in listener.get('l7policies', []): + dummy_policy = copy.deepcopy(policy) + policy['listener'] = listener for rule in policy.get('rules', []): + if not rule.get('policy'): + rule['policy'] = dummy_policy LOG.info("Delete cascade: deleting l7 rule of lb %s", loadbalancer['id']) self.l7rule.delete_cascade(ctx, rule, dummy_completor) + for r in dummy_policy['rules']: + if r['l7rule_id'] == rule['l7rule_id']: + dummy_policy['rules'].remove(r) + break LOG.info("Delete cascade: deleting l7 policy of lb %s", loadbalancer['id']) self.l7policy.delete_cascade(ctx, policy, dummy_completor)