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 | 
