diff --git a/cloudinit/net/dhcp.py b/cloudinit/net/dhcp.py index 0e81b925e36..ed323d7fdab 100644 --- a/cloudinit/net/dhcp.py +++ b/cloudinit/net/dhcp.py @@ -95,6 +95,10 @@ def maybe_perform_dhcp_discovery(distro, nic=None, dhcp_log_func=None): returned. """ interface = nic or distro.fallback_interface + if interface is None: + LOG.debug("Skip dhcp_discovery: Unable to find fallback nic.") + raise NoDHCPLeaseInterfaceError() + return distro.dhcp_client.dhcp_discovery(interface, dhcp_log_func, distro) diff --git a/tests/unittests/net/test_dhcp.py b/tests/unittests/net/test_dhcp.py index 325b3983323..c6a3518445a 100644 --- a/tests/unittests/net/test_dhcp.py +++ b/tests/unittests/net/test_dhcp.py @@ -1318,3 +1318,10 @@ def test_dhcpcd_discovery_ib( ), ] ) + + +class TestMaybePerformDhcpDiscovery: + def test_none_and_missing_fallback(self): + with pytest.raises(NoDHCPLeaseInterfaceError): + distro = mock.Mock(fallback_interface=None) + maybe_perform_dhcp_discovery(distro, None)