Accept IPv6 link local address during interface validation
Link local address is a valid address on IPv6 network when we are using
SLAAC instead of DHCPv6, current interface validation bypass link local
address and fails the introspection.
Interfaces without link carrier don't have link local addresses so this
should be fine.
Change-Id: I4cf195fc8906a2d91989df3f588e1e96ca9684b1
Story: 2007816
Task: 40094
(cherry picked from commit 71666178f4
)
This commit is contained in:
parent
a1a08dfa9a
commit
8465fb16b5
|
@ -221,8 +221,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)
|
||||||
|
|
|
@ -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'] = [
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Fixes the issue that IPv6 link local addresses are ignored during
|
||||||
|
interface validation which fails introspection.
|
Loading…
Reference in New Issue