diff options
author | Joshua Harlow <harlowja@yahoo-inc.com> | 2012-10-05 13:38:54 -0700 |
---|---|---|
committer | Joshua Harlow <harlowja@yahoo-inc.com> | 2012-10-05 13:38:54 -0700 |
commit | ffa19cbd80ba10453f0ef448c1c10dbcbf5be504 (patch) | |
tree | c29ffbc5f58a22ba85a584e86b3cf58c1f30d316 /cloudinit/sources/__init__.py | |
parent | cb30e7ed56e2c26e654d1703d3f44495a160c6eb (diff) | |
download | vyos-cloud-init-ffa19cbd80ba10453f0ef448c1c10dbcbf5be504.tar.gz vyos-cloud-init-ffa19cbd80ba10453f0ef448c1c10dbcbf5be504.zip |
Ensure that config drive datasource attempts to
translate the device name to a actual device using
logic that will try the ec2 metadata (if avail) or
will try using 'blkid' to find a corresponding label.
LP: #1062540
Diffstat (limited to 'cloudinit/sources/__init__.py')
-rw-r--r-- | cloudinit/sources/__init__.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/cloudinit/sources/__init__.py b/cloudinit/sources/__init__.py index 04083d0c..b22369a8 100644 --- a/cloudinit/sources/__init__.py +++ b/cloudinit/sources/__init__.py @@ -23,6 +23,7 @@ from email.mime.multipart import MIMEMultipart import abc +import os from cloudinit import importer from cloudinit import log as logging @@ -128,6 +129,22 @@ class DataSource(object): return keys + def _remap_device(self, short_name): + # LP: #611137 + # the metadata service may believe that devices are named 'sda' + # when the kernel named them 'vda' or 'xvda' + # we want to return the correct value for what will actually + # exist in this instance + mappings = {"sd": ("vd", "xvd")} + for (nfrom, tlist) in mappings.iteritems(): + if not short_name.startswith(nfrom): + continue + for nto in tlist: + cand = "/dev/%s%s" % (nto, short_name[len(nfrom):]) + if os.path.exists(cand): + return cand + return None + def device_name_to_device(self, _name): # translate a 'name' to a device # the primary function at this point is on ec2 |