diff options
author | Ben Howard <ben.howard@canonical.com> | 2013-10-03 16:15:56 -0600 |
---|---|---|
committer | Ben Howard <ben.howard@canonical.com> | 2013-10-03 16:15:56 -0600 |
commit | ecf2a600e41a9632ad305eb6a8cd5665908f31fb (patch) | |
tree | dd8539cba663a5662187d7b68b49252d9877ca3e /cloudinit/config | |
parent | c3daa2fa160c930084509f4ef5abfbb562b7059d (diff) | |
download | vyos-cloud-init-ecf2a600e41a9632ad305eb6a8cd5665908f31fb.tar.gz vyos-cloud-init-ecf2a600e41a9632ad305eb6a8cd5665908f31fb.zip |
Moved ephemeralX.Y handling from Datasource into the cc_disk_setup, which makes it cloud agnostic.
Diffstat (limited to 'cloudinit/config')
-rw-r--r-- | cloudinit/config/cc_disk_setup.py | 21 | ||||
-rw-r--r-- | cloudinit/config/cc_mounts.py | 13 |
2 files changed, 26 insertions, 8 deletions
diff --git a/cloudinit/config/cc_disk_setup.py b/cloudinit/config/cc_disk_setup.py index e744cd57..554dfdd3 100644 --- a/cloudinit/config/cc_disk_setup.py +++ b/cloudinit/config/cc_disk_setup.py @@ -104,13 +104,30 @@ def update_fs_setup_devices(disk_setup, tformer): continue origname = definition.get('device') + if origname is None: continue - transformed = tformer(origname) + transformed = None + if len(origname.split('.')) > 1: + # this maps ephemeralX.Y to a proper disk name. For example, + # if the origname is 'ephemeral0.1' and transformed is /dev/sdb + # then the returned device will be /dev/sdb1 _if_ /dev/sdb1 exists + # otherwise NONE + base_name = origname.split('.')[0] + tformed = tformer(base_name) + LOG.info("base device for %s is %s" % (origname, tformed)) + + transformed = util.map_device_alias(tformed, alias=origname) + LOG.info("%s is mapped to %s" % (origname, transformed)) + + else: + transformed = tformer(origname) + if transformed is None or transformed == origname: continue + LOG.info("Mapped %s to physical device %s" % (origname, transformed)) definition['_origname'] = origname definition['device'] = transformed @@ -497,7 +514,7 @@ def purge_disk(device): try: LOG.info("Purging filesystem on /dev/%s" % d['name']) util.subp(wipefs_cmd) - except Exception as e: + except Exception: raise Exception("Failed FS purge of /dev/%s" % d['name']) purge_disk_ptable(device) diff --git a/cloudinit/config/cc_mounts.py b/cloudinit/config/cc_mounts.py index f4c2e3d8..6b47d326 100644 --- a/cloudinit/config/cc_mounts.py +++ b/cloudinit/config/cc_mounts.py @@ -217,14 +217,15 @@ def disk_or_part(device): short_name = device.split('/')[-1] sys_path = "/sys/block/%s" % short_name - if not os.path.exists(sys_path): - LOG.warn("Device %s does not exist in sysfs" % device) - return None + # if the sys path does not exist but the device exists, + # then the device is a partition, no sense looking any further + if not os.path.exists(sys_path) and os.path.exists(device): + return device sys_long_path = sys_path + "/" + short_name + "%s" - valid_mappings = [ sys_long_path % "1", - sys_long_path % "p1", - sys_path ] + valid_mappings = [sys_long_path % "1", + sys_long_path % "p1", + sys_path] for cdisk in valid_mappings: if not os.path.exists(cdisk): |