From bfa1abb2913695ab7ae17f21f8dbcf89f5f94854 Mon Sep 17 00:00:00 2001 From: Gregory Thiemonge Date: Thu, 10 Apr 2025 07:56:43 +0200 Subject: [PATCH] Fixed missing port_id in additional_vips API the additional_vip object includes a port_id field but this field is not returned by the API. Change-Id: I920676dd4672b9bdcba8c771b8d7470fa88fe14d Signed-off-by: Gregory Thiemonge --- octavia/api/v2/types/load_balancer.py | 1 + octavia/tests/functional/api/v2/test_load_balancer.py | 10 +++++++++- ...ssing-additional-vips-port_id-fd0708aa798744c9.yaml | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/fix-missing-additional-vips-port_id-fd0708aa798744c9.yaml diff --git a/octavia/api/v2/types/load_balancer.py b/octavia/api/v2/types/load_balancer.py index 012d7d24e7..7aaef74628 100644 --- a/octavia/api/v2/types/load_balancer.py +++ b/octavia/api/v2/types/load_balancer.py @@ -42,6 +42,7 @@ class AdditionalVipsType(types.BaseType): """Type for additional vips""" subnet_id = wtypes.wsattr(wtypes.UuidType(), mandatory=True) ip_address = wtypes.wsattr(types.IPAddressType()) + port_id = wtypes.wsattr(wtypes.UuidType()) class LoadBalancerResponse(BaseLoadBalancerType): diff --git a/octavia/tests/functional/api/v2/test_load_balancer.py b/octavia/tests/functional/api/v2/test_load_balancer.py index 77696e2553..f41d043a4e 100644 --- a/octavia/tests/functional/api/v2/test_load_balancer.py +++ b/octavia/tests/functional/api/v2/test_load_balancer.py @@ -672,9 +672,14 @@ class TestLoadBalancer(base.BaseAPITest): self.assertEqual(subnet1.id, api_lb.get('vip_subnet_id')) self.assertEqual(network.id, api_lb.get('vip_network_id')) + expected_add_vips = [] + for add_vip in lb_json['additional_vips']: + add_vip.update(port_id=port.id) + expected_add_vips.append(add_vip) + self.assertEqual( # Sort by ip_address so the list order will be guaranteed - sorted(lb_json['additional_vips'], key=lambda x: x['ip_address']), + sorted(expected_add_vips, key=lambda x: x['ip_address']), sorted(api_lb['additional_vips'], key=lambda x: x['ip_address'])) def test_create_neutron_failure(self): @@ -2840,6 +2845,9 @@ class TestLoadBalancerGraph(base.BaseAPITest): if vip_sg_ids: create_lb['vip_sg_ids'] = vip_sg_ids if additional_vips: + for add_vip in additional_vips: + if 'port_id' not in add_vip: + add_vip['port_id'] = create_lb['vip_port_id'] create_lb.update({'additional_vips': additional_vips}) expected_lb = { 'description': '', diff --git a/releasenotes/notes/fix-missing-additional-vips-port_id-fd0708aa798744c9.yaml b/releasenotes/notes/fix-missing-additional-vips-port_id-fd0708aa798744c9.yaml new file mode 100644 index 0000000000..fae08b28bc --- /dev/null +++ b/releasenotes/notes/fix-missing-additional-vips-port_id-fd0708aa798744c9.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Fixed missing `port_id` element when getting the `additional_vips` + parameter of a load balancer.