Add dhcp options for each ip_version once

Currently duplicate DHCP options are added when a port have
multiple address in the same address familiy. The duplicate
entries cause an internal server error in neutron.

This fixes the issue by only adding DHCP options for each
IP-version.

Story: 2009774
Task: 44255
Change-Id: I8bef819dc3101f88f4e04ea986e1039e34d917ed
(cherry picked from commit c4721da2d8)
This commit is contained in:
Harald Jensås 2022-01-07 16:03:11 +01:00
parent 89111fddf3
commit 39f38705cd
3 changed files with 17 additions and 3 deletions

View File

@ -80,9 +80,9 @@ class NeutronDHCPApi(base.BaseDHCP):
update_opts = []
if len(fips) != 0:
for fip in fips:
ip_version = \
ipaddress.ip_address(fip['ip_address']).version
ip_versions = {ipaddress.ip_address(fip['ip_address']).version
for fip in fips}
for ip_version in ip_versions:
for option in dhcp_options:
if option.get('ip_version', 4) == ip_version:
update_opts.append(option)

View File

@ -165,8 +165,14 @@ class TestNeutron(db_base.DbTestCase):
{
"ip_address": "192.168.1.3",
},
{
"ip_address": "192.168.1.4",
},
{
"ip_address": "2001:db8::201",
},
{
"ip_address": "2001:db8::202",
}
],
}

View File

@ -0,0 +1,8 @@
---
fixes:
- |
Fixed an issue where duplicate extra DHCP options was passed in the port
update request to the Networking service. The duplicate DHCP options
caused an error in the Networking service and node provisioning would
fail. See bug:
`2009774 <https://storyboard.openstack.org/#!/story/2009774>`_.