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
This commit is contained in:
Fernando Royo 2024-09-06 12:27:56 +02:00
parent 0673f16fc6
commit 6e2ba02339
2 changed files with 5 additions and 4 deletions
ovn_octavia_provider

@ -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):

@ -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,