From 5728c6945c4f66d1c4ba52a4ec115a8076b96185 Mon Sep 17 00:00:00 2001 From: Kobi Samoray Date: Thu, 22 Apr 2021 15:19:28 +0300 Subject: [PATCH] Octavia driver: Fix L7 rule creation Change-Id: I4ac23d76b1eebb20c8a6385ecd99710cebf40ee7 --- vmware_nsx/services/lbaas/octavia/octavia_driver.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/vmware_nsx/services/lbaas/octavia/octavia_driver.py b/vmware_nsx/services/lbaas/octavia/octavia_driver.py index e9feac2c48..e31e9a5cf9 100644 --- a/vmware_nsx/services/lbaas/octavia/octavia_driver.py +++ b/vmware_nsx/services/lbaas/octavia/octavia_driver.py @@ -368,6 +368,15 @@ class NSXOctaviaDriver(driver_base.ProviderDriver): policy_dict['id'] = obj_dict['l7policy_id'] self.update_policy_dict( policy_dict, policy_obj, is_update=is_update) + + # During create operations, the created rule will not be + # retrieved from Octavia DB, as it is updated later on + if (obj_dict['l7rule_id'] not in + [r['l7rule_id'] for r in + policy_dict.get('rules', [])]): + # Deepcopy obj_dict to avoid circular reference while + # serializing to JSON + policy_dict['rules'].append(copy.deepcopy(obj_dict)) obj_dict['policy'] = policy_dict LOG.debug("Translated %(type)s to dictionary: %(obj)s",