Skip to content

Commit d57e150

Browse files
eduolivaresralonsoh
authored andcommitted
Fix return value of empty-MAC guard in metadata agent
The empty-MAC guard in _get_port_ip4_ips_and_ip6_flag returns [] instead of the expected (list, bool) tuple. This would cause a crash if a port with an empty MAC column were encountered during datapath provisioning. Fix the return value to ([], False). Conflicts: neutron/agent/ovn/metadata/agent.py Closes-Bug: #2150543 Assisted-By: Claude Opus 4.6 Change-Id: Idc7d789ffe0289bf28fb289456196c307dd4a706 Signed-off-by: Eduardo Olivares <eolivare@redhat.com> (cherry picked from commit 6f529d9) (cherry picked from commit bd4fa33)
1 parent af55086 commit d57e150

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

neutron/agent/ovn/metadata/agent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,7 @@ def _get_port_ip4_ips_and_ip6_flag(self, port):
639639
if not port.mac:
640640
LOG.warning("Port %s MAC column is empty, cannot retrieve IP "
641641
"addresses", port.uuid)
642-
return []
642+
return [], False
643643
mac_field_attrs = port.mac[0].split()
644644
ips = mac_field_attrs[1:]
645645
if not ips:

neutron/tests/unit/agent/ovn/metadata/test_agent.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,15 @@ def test__get_provision_params_returns_provision_parameters_ipv6(self):
481481
self._test__get_provision_params_returns_provision_parameters(
482482
'fe80::f816:3eff:feb6:c0c0')
483483

484+
def test__get_port_ip4_ips_and_ip6_flag_empty_mac(self):
485+
"""Should return empty IPs for ports with empty MAC column."""
486+
port = mock.Mock()
487+
port.mac = []
488+
port.uuid = 'fake-uuid'
489+
ip4_ips, any_ip6 = self.agent._get_port_ip4_ips_and_ip6_flag(port)
490+
self.assertEqual([], ip4_ips)
491+
self.assertFalse(any_ip6)
492+
484493
def _test_provision_datapath(self, ipv6_enabled):
485494
"""Test datapath provisioning.
486495

0 commit comments

Comments
 (0)