Merge "Accept IPv6 link local address during interface validation"

This commit is contained in:
Zuul 2020-06-17 14:08:32 +00:00 committed by Gerrit Code Review
commit 0e3d5fdd20
3 changed files with 6 additions and 21 deletions

View File

@ -220,8 +220,7 @@ class ValidateInterfacesHook(base.ProcessingHook):
LOG.debug('Skipping interface %s as it was not PXE booting', LOG.debug('Skipping interface %s as it was not PXE booting',
name, data=data) name, data=data)
continue continue
elif CONF.processing.add_ports != 'all' and ( elif CONF.processing.add_ports != 'all' and not ip:
not ip or netaddr.IPAddress(ip).is_link_local()):
LOG.debug('Skipping interface %s as it did not have ' LOG.debug('Skipping interface %s as it did not have '
'an IP address assigned during the ramdisk run', 'an IP address assigned during the ramdisk run',
name, data=data) name, data=data)

View File

@ -222,25 +222,6 @@ class TestValidateInterfacesHookBeforeProcessing(test_base.NodeTest):
self.assertRaisesRegex(utils.Error, 'No suitable interfaces found', self.assertRaisesRegex(utils.Error, 'No suitable interfaces found',
self.hook.before_processing, self.data) self.hook.before_processing, self.data)
def test_skipped_interfaces_with_local_address(self):
CONF.set_override('add_ports', 'active', 'processing')
self.inventory['interfaces'] = [
# local interface (by IPv4 address)
{'name': 'em1', 'mac_address': '22:22:22:22:22:22',
'ipv4_address': '127.0.0.1'},
# local interface (by IPv6 address)
{'name': 'em2', 'mac_address': '33:33:33:33:33:33',
'ipv6_address': '::1'},
# interface only with local-link address
{'name': 'em3', 'mac_address': '44:44:44:44:44:44',
'ipv6_address': 'fe80::4644:44ff:fe44:4444'},
# interface only with local-link address with suffix
{'name': 'em4', 'mac_address': '55:55:55:55:55:55',
'ipv6_address': 'fe80::5755:55ff:fe55:5555%em4'},
]
self.assertRaisesRegex(utils.Error, 'No suitable interfaces found',
self.hook.before_processing, self.data)
def test_interfaces_with_ipv6_addresses_only(self): def test_interfaces_with_ipv6_addresses_only(self):
CONF.set_override('add_ports', 'all', 'processing') CONF.set_override('add_ports', 'all', 'processing')
self.inventory['interfaces'] = [ self.inventory['interfaces'] = [

View File

@ -0,0 +1,5 @@
---
fixes:
- |
Fixes the issue that IPv6 link local addresses are ignored during
interface validation which fails introspection.