summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/sources/DataSourceConfigDrive.py4
-rw-r--r--tests/unittests/test_datasource/test_configdrive.py6
-rw-r--r--tests/unittests/test_ds_identify.py17
-rwxr-xr-xtools/ds-identify4
4 files changed, 28 insertions, 3 deletions
diff --git a/cloudinit/sources/DataSourceConfigDrive.py b/cloudinit/sources/DataSourceConfigDrive.py
index 870b3688..b8db6267 100644
--- a/cloudinit/sources/DataSourceConfigDrive.py
+++ b/cloudinit/sources/DataSourceConfigDrive.py
@@ -25,7 +25,7 @@ DEFAULT_METADATA = {
"instance-id": DEFAULT_IID,
}
FS_TYPES = ('vfat', 'iso9660')
-LABEL_TYPES = ('config-2',)
+LABEL_TYPES = ('config-2', 'CONFIG-2')
POSSIBLE_MOUNTS = ('sr', 'cd')
OPTICAL_DEVICES = tuple(('/dev/%s%s' % (z, i) for z in POSSIBLE_MOUNTS
for i in range(0, 2)))
@@ -224,7 +224,7 @@ def find_candidate_devs(probe_optical=True):
config drive v2:
Disk should be:
* either vfat or iso9660 formated
- * labeled with 'config-2'
+ * labeled with 'config-2' or 'CONFIG-2'
"""
# query optical drive to get it in blkid cache for 2.6 kernels
if probe_optical:
diff --git a/tests/unittests/test_datasource/test_configdrive.py b/tests/unittests/test_datasource/test_configdrive.py
index 6ef5a35c..68400f22 100644
--- a/tests/unittests/test_datasource/test_configdrive.py
+++ b/tests/unittests/test_datasource/test_configdrive.py
@@ -458,6 +458,12 @@ class TestConfigDriveDataSource(CiTestCase):
self.assertEqual(["/dev/vdb3"],
ds.find_candidate_devs())
+ # Verify that uppercase labels are also found.
+ devs_with_answers = {"TYPE=vfat": [],
+ "TYPE=iso9660": ["/dev/vdb"],
+ "LABEL=CONFIG-2": ["/dev/vdb"]}
+ self.assertEqual(["/dev/vdb"], ds.find_candidate_devs())
+
finally:
util.find_devs_with = orig_find_devs_with
util.is_partition = orig_is_partition
diff --git a/tests/unittests/test_ds_identify.py b/tests/unittests/test_ds_identify.py
index c9234edd..ad6c5cf4 100644
--- a/tests/unittests/test_ds_identify.py
+++ b/tests/unittests/test_ds_identify.py
@@ -232,6 +232,11 @@ class TestDsIdentify(CiTestCase):
self._test_ds_found('ConfigDrive')
return
+ def test_config_drive_upper(self):
+ """ConfigDrive datasource has a disk with LABEL=CONFIG-2."""
+ self._test_ds_found('ConfigDriveUpper')
+ return
+
def test_policy_disabled(self):
"""A Builtin policy of 'disabled' should return not found.
@@ -503,6 +508,18 @@ VALID_CFG = {
},
],
},
+ 'ConfigDriveUpper': {
+ 'ds': 'ConfigDrive',
+ 'mocks': [
+ {'name': 'blkid', 'ret': 0,
+ 'out': blkid_out(
+ [{'DEVNAME': 'vda1', 'TYPE': 'vfat', 'PARTUUID': uuid4()},
+ {'DEVNAME': 'vda2', 'TYPE': 'ext4',
+ 'LABEL': 'cloudimg-rootfs', 'PARTUUID': uuid4()},
+ {'DEVNAME': 'vdb', 'TYPE': 'vfat', 'LABEL': 'CONFIG-2'}])
+ },
+ ],
+ },
}
# vi: ts=4 expandtab
diff --git a/tools/ds-identify b/tools/ds-identify
index 5893a761..374c3ad1 100755
--- a/tools/ds-identify
+++ b/tools/ds-identify
@@ -579,6 +579,8 @@ dscheck_NoCloud() {
check_configdrive_v2() {
if has_fs_with_label "config-2"; then
return ${DS_FOUND}
+ elif has_fs_with_label "CONFIG-2"; then
+ return ${DS_FOUND}
fi
# look in /config-drive <vlc>/seed/config_drive for a directory
# openstack/YYYY-MM-DD format with a file meta_data.json
@@ -666,7 +668,7 @@ is_cdrom_ovf() {
# explicitly skip known labels of other types. rd_rdfe is azure.
case "$label" in
- config-2|rd_rdfe_stable*|cidata) return 1;;
+ config-2|CONFIG-2|rd_rdfe_stable*|cidata) return 1;;
esac
local idstr="http://schemas.dmtf.org/ovf/environment/1"