From 4e5b1ed68014b81ca2ef2f07675f2a43cf03c5c3 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 26 Mar 2024 15:55:50 -0500 Subject: [PATCH] fix: Always use single datasource if specified (#5098) RH-Author: Ani Sinha RH-MergeRequest: 135: fix: Always use single datasource if specified (#5098) RH-Jira: RHEL-36701 RH-Acked-by: Emanuele Giuseppe Esposito RH-Acked-by: Cathy Avery RH-Commit: [1/1] 491f053f7d758f1a0ca8918d1449cc2f7838291f This change may require a user to add `None` to the `datasource_list` defined in `/etc/cloud/cloud.cfg[.d]` if they have a customized datasource_list and want the DataSourceNone fallback behavior. ds-identify would automatically append "None" to the datasource_list if a single entry was provided in /etc/cloud/cloud.cfg[.d]. This wasn't a problem in the past as the python code would detect a single datasource along with None as an indication to automatically use that datasource. Since the python code no longer does that, we should ensure that one specified datasource results in one specified datasource after ds-identify has run. Fixes GH-5091 (cherry picked from commit cdbbd17ae400e432d13f674c18a6f5c873fa328b) Signed-off-by: Ani Sinha --- tests/unittests/test_ds_identify.py | 2 +- tools/ds-identify | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/unittests/test_ds_identify.py b/tests/unittests/test_ds_identify.py index ba0bf779..acbf3f03 100644 --- a/tests/unittests/test_ds_identify.py +++ b/tests/unittests/test_ds_identify.py @@ -522,7 +522,7 @@ class TestDsIdentify(DsIdentifyBase): mydata = copy.deepcopy(VALID_CFG["Ec2-hvm"]) cfgpath = "etc/cloud/cloud.cfg.d/myds.cfg" mydata["files"][cfgpath] = 'datasource_list: ["NoCloud"]\n' - self._check_via_dict(mydata, rc=RC_FOUND, dslist=["NoCloud", DS_NONE]) + self._check_via_dict(mydata, rc=RC_FOUND, dslist=["NoCloud"]) def test_configured_list_with_none(self): """When datasource_list already contains None, None is not added. diff --git a/tools/ds-identify b/tools/ds-identify index ec2cc18a..6e49ded3 100755 --- a/tools/ds-identify +++ b/tools/ds-identify @@ -1865,7 +1865,11 @@ _main() { # if there is only a single entry in $DI_DSLIST if [ $# -eq 1 ] || [ $# -eq 2 -a "$2" = "None" ] ; then debug 1 "single entry in datasource_list ($DI_DSLIST) use that." - found "$@" + if [ $# -eq 1 ]; then + write_result "datasource_list: [ $1 ]" + else + found "$@" + fi return fi -- 2.45.1