summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmanuele Giuseppe Esposito <eesposit@redhat.com>2022-01-12 16:04:44 +0100
committerGitHub <noreply@github.com>2022-01-12 09:04:44 -0600
commitfe745d41ef7fd6e9d0e5292da79f0722a94ab7c8 (patch)
tree0f4ae191b671fb955e41b8a85bced7379b706ea1
parent5147e8d4764e368ab8ccea7433b02e4ff9d6c901 (diff)
downloadvyos-cloud-init-fe745d41ef7fd6e9d0e5292da79f0722a94ab7c8.tar.gz
vyos-cloud-init-fe745d41ef7fd6e9d0e5292da79f0722a94ab7c8.zip
print error if datasource import fails (#1170)
Sometimes an import might fail for different reasons: the string is wrongly typed, or the module has a dependency that is not installed in python. We should print that there is an import error, otherwise it might be really difficult to understand what is the root cause of this issue. Currently, cloud-init just ignores the error and continues. This can have fatal consequences when used to pick the datasource to use. Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
-rw-r--r--cloudinit/sources/__init__.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/cloudinit/sources/__init__.py b/cloudinit/sources/__init__.py
index 9083f399..bd862cdd 100644
--- a/cloudinit/sources/__init__.py
+++ b/cloudinit/sources/__init__.py
@@ -929,6 +929,12 @@ def list_sources(cfg_list, depends, pkg_list):
m_locs, _looked_locs = importer.find_module(
ds_name, pkg_list, ["get_datasource_list"]
)
+ if not m_locs:
+ LOG.error(
+ "Could not import %s. Does the DataSource exist and "
+ "is it importable?",
+ ds_name,
+ )
for m_loc in m_locs:
mod = importer.import_module(m_loc)
lister = getattr(mod, "get_datasource_list")