From 44e73a82aa66f82826a60f686ea6c892ce205585 Mon Sep 17 00:00:00 2001 From: Pzhang Date: Mon, 14 Aug 2023 06:25:11 +0000 Subject: [PATCH] checkpoint for rebuild bug fix --- .../drivers/bigip/agent_manager_lite.py | 1 + .../lbaasv2/drivers/bigip/network_service.py | 19 +++++++++++++------ .../lbaasv2/drivers/bigip/resource_manager.py | 3 ++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/f5_openstack_agent/lbaasv2/drivers/bigip/agent_manager_lite.py b/f5_openstack_agent/lbaasv2/drivers/bigip/agent_manager_lite.py index 7eb2e1faf..52d85dc4c 100644 --- a/f5_openstack_agent/lbaasv2/drivers/bigip/agent_manager_lite.py +++ b/f5_openstack_agent/lbaasv2/drivers/bigip/agent_manager_lite.py @@ -1372,6 +1372,7 @@ def rebuild_loadbalancer(self, context, loadbalancer, service): """Handle RPC cast from plugin to create_loadbalancer.""" lb_id = loadbalancer['id'] listeners = service.get("listeners", []) + service['REBUILD'] = True try: bigip_device.set_bigips(service, self.conf) diff --git a/f5_openstack_agent/lbaasv2/drivers/bigip/network_service.py b/f5_openstack_agent/lbaasv2/drivers/bigip/network_service.py index dc3f0bd1f..f871f4e01 100644 --- a/f5_openstack_agent/lbaasv2/drivers/bigip/network_service.py +++ b/f5_openstack_agent/lbaasv2/drivers/bigip/network_service.py @@ -327,12 +327,16 @@ def _annotate_service_route_domains(self, service): bigips = service['bigips'] device = service['device'] + rd_id = None + rebuild = service.get("REBUILD", False) + if 'vip_address' in service['loadbalancer']: if 'network_id' in loadbalancer: lb_network = self.service_adapter.get_network_from_service( service, loadbalancer['network_id']) if loadbalancer["provisioning_status"] in [ - constants_v2.PENDING_DELETE, constants_v2.ERROR]: + constants_v2.PENDING_DELETE, constants_v2.ERROR + ] and not rebuild: self.assign_delete_route_domain( tenant_id, lb_network, device) else: @@ -505,7 +509,7 @@ def post_service_networking(self, service): # L2toL3 networking layer # Non Shared Config - Local Per BIG-IP - self.update_bigip_l2(service) + # self.update_bigip_l2(service) # Delete shared config objects deleted_names = set() @@ -541,18 +545,21 @@ def update_bigip_l2(self, service): members = service['members'] for member in members: - member['network'] = service_adapter.get_network_from_service( - service, member['network_id']) + mb_net = member.get('network_id') + if mb_net: + member['network'] = service_adapter.get_network_from_service( + service, mb_net) if member.get('provisioning_status', None) == \ constants_v2.F5_PENDING_DELETE: delete_members.append(member) else: update_members.append(member) + lb_net = loadbalancer.get('network_id') loadbalancer['network'] = service_adapter.get_network_from_service( service, - loadbalancer['network_id'] - ) + lb_net + ) if delete_loadbalancer or delete_members: self.l2_service.delete_fdb_entries( diff --git a/f5_openstack_agent/lbaasv2/drivers/bigip/resource_manager.py b/f5_openstack_agent/lbaasv2/drivers/bigip/resource_manager.py index b41b08107..efafe12a1 100644 --- a/f5_openstack_agent/lbaasv2/drivers/bigip/resource_manager.py +++ b/f5_openstack_agent/lbaasv2/drivers/bigip/resource_manager.py @@ -349,7 +349,8 @@ def _create_bwc_irule_payload(self, loadbalancer, meta_only=False): def _post_create(self, service): # create fdb for vxlan tunnel if not self.driver.conf.f5_global_routed_mode: - self.driver.network_builder.update_bigip_l2(service) + pass + # self.driver.network_builder.update_bigip_l2(service) def _pre_create(self, service):