Do not fail network interface collection on unsupported interface
Currently if one interface cannot be handled (e.g. it has empty MAC),
the whole collection fails. Ignore unsupported interfaces instead.
Change-Id: Ibdaad62b39c239d4f3fb3111c2fae9e31e877b28
(cherry picked from commit 1ab405b509
)
This commit is contained in:
parent
44694cc320
commit
b3f489caf3
@ -1086,8 +1086,13 @@ class GenericHardwareManager(HardwareManager):
|
|||||||
interface_names=iface_names)
|
interface_names=iface_names)
|
||||||
|
|
||||||
for iface_name in iface_names:
|
for iface_name in iface_names:
|
||||||
result = dispatch_to_managers(
|
try:
|
||||||
'get_interface_info', interface_name=iface_name)
|
result = dispatch_to_managers(
|
||||||
|
'get_interface_info', interface_name=iface_name)
|
||||||
|
except errors.HardwareManagerMethodNotFound:
|
||||||
|
LOG.warning('No hardware manager was able to handle '
|
||||||
|
'interface %s', iface_name)
|
||||||
|
continue
|
||||||
result.lldp = self._get_lldp_data(iface_name)
|
result.lldp = self._get_lldp_data(iface_name)
|
||||||
network_interfaces_list.append(result)
|
network_interfaces_list.append(result)
|
||||||
|
|
||||||
|
@ -1023,8 +1023,8 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
|||||||
mocked_ifaddresses,
|
mocked_ifaddresses,
|
||||||
mockedget_managers):
|
mockedget_managers):
|
||||||
mockedget_managers.return_value = [hardware.GenericHardwareManager()]
|
mockedget_managers.return_value = [hardware.GenericHardwareManager()]
|
||||||
mocked_listdir.return_value = ['lo', 'eth0']
|
mocked_listdir.return_value = ['lo', 'eth0', 'foobar']
|
||||||
mocked_exists.side_effect = [False, True]
|
mocked_exists.side_effect = [False, True, True]
|
||||||
mocked_open.return_value.__enter__ = lambda s: s
|
mocked_open.return_value.__enter__ = lambda s: s
|
||||||
mocked_open.return_value.__exit__ = mock.Mock()
|
mocked_open.return_value.__exit__ = mock.Mock()
|
||||||
read_mock = mocked_open.return_value.read
|
read_mock = mocked_open.return_value.read
|
||||||
@ -1034,8 +1034,11 @@ class TestGenericHardwareManager(base.IronicAgentTest):
|
|||||||
netifaces.AF_INET6: [{'addr': 'fd00::101'}]
|
netifaces.AF_INET6: [{'addr': 'fd00::101'}]
|
||||||
}
|
}
|
||||||
mocked_execute.return_value = ('em0\n', '')
|
mocked_execute.return_value = ('em0\n', '')
|
||||||
mock_get_mac.mock_has_carrier = True
|
mock_has_carrier.return_value = True
|
||||||
mock_get_mac.return_value = '00:0c:29:8c:11:b1'
|
mock_get_mac.side_effect = [
|
||||||
|
'00:0c:29:8c:11:b1',
|
||||||
|
None,
|
||||||
|
]
|
||||||
interfaces = self.hardware.list_network_interfaces()
|
interfaces = self.hardware.list_network_interfaces()
|
||||||
self.assertEqual(1, len(interfaces))
|
self.assertEqual(1, len(interfaces))
|
||||||
self.assertEqual('eth0', interfaces[0].name)
|
self.assertEqual('eth0', interfaces[0].name)
|
||||||
|
5
releasenotes/notes/no-mac-54616606ee6b844d.yaml
Normal file
5
releasenotes/notes/no-mac-54616606ee6b844d.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
No longer crashes if MAC address cannot be determined for one of the
|
||||||
|
network interfaces.
|
Loading…
Reference in New Issue
Block a user