diff options
author | Emanuele Giuseppe Esposito <eesposit@redhat.com> | 2022-01-12 16:04:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-12 09:04:44 -0600 |
commit | fe745d41ef7fd6e9d0e5292da79f0722a94ab7c8 (patch) | |
tree | 0f4ae191b671fb955e41b8a85bced7379b706ea1 | |
parent | 5147e8d4764e368ab8ccea7433b02e4ff9d6c901 (diff) | |
download | vyos-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__.py | 6 |
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") |