From 86568fed3f3d91a78cb4ebe0bedfa430364740a6 Mon Sep 17 00:00:00 2001 From: Ksenija Stanojevic Date: Tue, 11 Mar 2025 16:02:15 -0700 Subject: [PATCH] handle filenotfound error --- cloudinit/sources/DataSourceAzure.py | 6 ++++++ tests/unittests/sources/test_azure.py | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py index fa32307ca1d..f7b48c9d533 100644 --- a/cloudinit/sources/DataSourceAzure.py +++ b/cloudinit/sources/DataSourceAzure.py @@ -467,6 +467,12 @@ def _setup_ephemeral_networking( ), host_only=True, ) + except FileNotFoundError as error: + report_diagnostic_event( + "File not found during DHCP %r" % error, + logger_func=LOG.error, + ) + raise error except subp.ProcessExecutionError as error: # udevadm settle, ip link set dev eth0 up, etc. report_diagnostic_event( diff --git a/tests/unittests/sources/test_azure.py b/tests/unittests/sources/test_azure.py index 9963f3b4fd0..3d37eb32538 100644 --- a/tests/unittests/sources/test_azure.py +++ b/tests/unittests/sources/test_azure.py @@ -3424,6 +3424,25 @@ def test_basic_setup_without_wireserver_opt( assert azure_ds._wireserver_endpoint == "168.63.129.16" assert azure_ds._ephemeral_dhcp_ctx.iface == lease["interface"] + def test_no_retry_missing_driver( + self, + azure_ds, + caplog, + mock_ephemeral_dhcp_v4 + ): + mock_ephemeral_dhcp_v4.return_value.obtain_lease.side_effect = [ + FileNotFoundError + ] + + with pytest.raises(FileNotFoundError): + azure_ds._setup_ephemeral_networking() + + assert ( + mock_ephemeral_dhcp_v4.return_value.mock_calls + == [mock.call.obtain_lease()] + ) + assert "File not found during DHCP" in caplog.text + def test_no_retry_missing_dhclient_error( self, azure_ds,