From 6e2ba02339cdb06a63abc74a2b58f993d0560d9c Mon Sep 17 00:00:00 2001 From: Fernando Royo Date: Fri, 6 Sep 2024 12:27:56 +0200 Subject: [PATCH] Fix member subnet id on a fully populated LB When a fully populated LB is created, if the member is not created indicating the subnet_id to whom it belongs, the LB vip_network_id is inherit by error as member.subnet_id. This patch fix this behaviour to inherit the member.subnet_id from the loadbalancer.vip_subnet_id that is always passed from Octavia API when call is redirect to the OVN-provider. Closes-Bug: #2079813 Change-Id: I098afab053119d1a6eac86a12c1a20cc312b06ef --- ovn_octavia_provider/driver.py | 2 +- ovn_octavia_provider/tests/unit/test_driver.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ovn_octavia_provider/driver.py b/ovn_octavia_provider/driver.py index 1f6a1d95..50a82428 100644 --- a/ovn_octavia_provider/driver.py +++ b/ovn_octavia_provider/driver.py @@ -115,7 +115,7 @@ class OvnProviderDriver(driver_base.ProviderDriver): self.pool_create(pool) for member in pool.members: if not member.subnet_id: - member.subnet_id = loadbalancer.vip_network_id + member.subnet_id = loadbalancer.vip_subnet_id self.member_create(member) def loadbalancer_delete(self, loadbalancer, cascade=False): diff --git a/ovn_octavia_provider/tests/unit/test_driver.py b/ovn_octavia_provider/tests/unit/test_driver.py index c819cbb5..bed66034 100644 --- a/ovn_octavia_provider/tests/unit/test_driver.py +++ b/ovn_octavia_provider/tests/unit/test_driver.py @@ -183,7 +183,8 @@ class TestOvnProviderDriver(ovn_base.TestOvnOctaviaBase): name='favorite_lb0', project_id=self.project_id, vip_address=self.vip_address, - vip_network_id=self.vip_network_id) + vip_network_id=self.vip_network_id, + vip_subnet_id=self.vip_subnet_id) self.ref_lb0 = data_models.LoadBalancer( admin_state_up=False, listeners=[self.ref_listener], @@ -809,13 +810,13 @@ class TestOvnProviderDriver(ovn_base.TestOvnOctaviaBase): 'address': self.ref_member.address, 'protocol_port': self.ref_member.protocol_port, 'pool_id': self.ref_member.pool_id, - 'subnet_id': self.ref_lb_fully_populated.vip_network_id, + 'subnet_id': self.ref_lb_fully_populated.vip_subnet_id, 'admin_state_up': self.ref_member.admin_state_up} info_dvr = { 'id': self.ref_member.member_id, 'address': self.ref_member.address, 'pool_id': self.ref_member.pool_id, - 'subnet_id': self.ref_lb_fully_populated.vip_network_id, + 'subnet_id': self.ref_lb_fully_populated.vip_subnet_id, 'action': ovn_const.REQ_INFO_MEMBER_ADDED} expected_lb_dict = { 'type': ovn_const.REQ_TYPE_LB_CREATE,