diff options
author | Paul Querna <pquerna@apache.org> | 2014-01-23 14:11:05 -0500 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2014-01-23 14:11:05 -0500 |
commit | 814b32b5b6e6e8639fdbfb41eab2531f25c248d9 (patch) | |
tree | e0f07a21954100206e237567e5489404fef5e701 | |
parent | 131ff5e3955ac489d68330034cee044a4ca9d6f0 (diff) | |
parent | 66aa9826b818c3478516104b38039fecbd717b6b (diff) | |
download | vyos-cloud-init-814b32b5b6e6e8639fdbfb41eab2531f25c248d9.tar.gz vyos-cloud-init-814b32b5b6e6e8639fdbfb41eab2531f25c248d9.zip |
Consider partitions as sources for configdrive if labelled correctly
This change removes the filtering of partitions from potential ConfigDrive
sources, if the LABEL of the partition is set to "config-2".
This is useful for a bare metal device. It may not have a separate device for
ConfigDrive, but instead have a ConfigDrive available on a partition.
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | cloudinit/sources/DataSourceConfigDrive.py | 6 | ||||
-rw-r--r-- | tests/unittests/test_datasource/test_configdrive.py | 5 |
3 files changed, 9 insertions, 4 deletions
@@ -19,6 +19,8 @@ 'Recommends' in the debian/control.in [Vlastimil Holer] - if mount_info reports /dev/root is a device path for /, then convert that to a device via help of kernel cmdline. + - configdrive: consider partitions as possible datasources if they have + theh correct filesystem label. [Paul Querna] 0.7.4: - fix issue mounting 'ephemeral0' if ephemeral0 was an alias for a partitioned block device with target filesystem on ephemeral0.1. diff --git a/cloudinit/sources/DataSourceConfigDrive.py b/cloudinit/sources/DataSourceConfigDrive.py index 4f437244..2a244496 100644 --- a/cloudinit/sources/DataSourceConfigDrive.py +++ b/cloudinit/sources/DataSourceConfigDrive.py @@ -284,8 +284,10 @@ def find_candidate_devs(): # followed by fstype items, but with dupes removed combined = (by_label + [d for d in by_fstype if d not in by_label]) - # We are looking for block device (sda, not sda1), ignore partitions - combined = [d for d in combined if not util.is_partition(d)] + # We are looking for a block device or partition with necessary label or + # an unpartitioned block device. + combined = [d for d in combined + if d in by_label or not util.is_partition(d)] return combined diff --git a/tests/unittests/test_datasource/test_configdrive.py b/tests/unittests/test_datasource/test_configdrive.py index d5935294..3c1e8add 100644 --- a/tests/unittests/test_datasource/test_configdrive.py +++ b/tests/unittests/test_datasource/test_configdrive.py @@ -285,10 +285,11 @@ class TestConfigDriveDataSource(MockerTestCase): self.assertEqual(["/dev/vdb", "/dev/zdd"], ds.find_candidate_devs()) - # verify that partitions are not considered + # verify that partitions are considered, but only if they have a label. devs_with_answers = {"TYPE=vfat": ["/dev/sda1"], "TYPE=iso9660": [], "LABEL=config-2": ["/dev/vdb3"]} - self.assertEqual([], ds.find_candidate_devs()) + self.assertEqual(["/dev/vdb3"], + ds.find_candidate_devs()) finally: util.find_devs_with = orig_find_devs_with |