summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2017-05-18 13:19:14 -0400
committerScott Moser <smoser@brickies.net>2017-05-24 13:54:05 -0400
commit13673f8d2b815452aa22f8e3811e04481558a731 (patch)
tree38fe0b465904794309cde77d2e5345c98c96c799
parent6b5369be71054a677b89fa8080f7ddd029ce4986 (diff)
downloadcloud-init-git-13673f8d2b815452aa22f8e3811e04481558a731.tar.gz
fix tools/ds-identify to not write None twice.
If the user configured: datasource_list: ["Ec2", "None"] then ds-identify would write datasource_list: ["Ec2", "None", "None"] which would break the logic to avoid warning.
-rw-r--r--tests/unittests/test_ds_identify.py7
-rwxr-xr-xtools/ds-identify9
2 files changed, 12 insertions, 4 deletions
diff --git a/tests/unittests/test_ds_identify.py b/tests/unittests/test_ds_identify.py
index 9e148852..8559e1fe 100644
--- a/tests/unittests/test_ds_identify.py
+++ b/tests/unittests/test_ds_identify.py
@@ -210,6 +210,13 @@ class TestDsIdentify(CiTestCase):
mydata['files'][cfgpath] = 'datasource_list: ["NoCloud"]\n'
self._check_via_dict(mydata, rc=RC_FOUND, dslist=['NoCloud', DS_NONE])
+ def test_configured_list_with_none(self):
+ """If user set a datasource_list, that should be used."""
+ mydata = copy.deepcopy(VALID_CFG['GCE'])
+ cfgpath = 'etc/cloud/cloud.cfg.d/myds.cfg'
+ mydata['files'][cfgpath] = 'datasource_list: ["Ec2", "None"]\n'
+ self._check_via_dict(mydata, rc=RC_FOUND, dslist=['Ec2', DS_NONE])
+
def blkid_out(disks=None):
"""Convert a list of disk dictionaries into blkid content."""
diff --git a/tools/ds-identify b/tools/ds-identify
index aff26eb6..74d26537 100755
--- a/tools/ds-identify
+++ b/tools/ds-identify
@@ -963,10 +963,11 @@ found() {
# do not pass an empty line through.
shift
fi
- # always write the None datasource last.
- if [ "$list" != "None" ]; then
- list="${list:+${list}, }None"
- fi
+ # if None is not already in the list, then add it last.
+ case " $list " in
+ *\ None,\ *|*\ None\ ) :;;
+ *) list=${list:+${list}, None};;
+ esac
write_result "datasource_list: [ $list ]" "$@"
return
}