diff options
author | Mina Galić <freebsd@igalic.co> | 2023-05-11 20:31:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-11 14:31:43 -0500 |
commit | 60248d88f2d9e963a0bd0510180ec7b4d41cebd9 (patch) | |
tree | bef069ce3bf872995c68eb86bf4cb06a2ee1bb41 | |
parent | 481bf4d3c3460fe398c74c950eb02f8562e1c20a (diff) | |
download | cloud-init-git-60248d88f2d9e963a0bd0510180ec7b4d41cebd9.tar.gz |
FreeBSD (and friends): better identify MBR slices (#2168)
The code is already in the Dragonfly path, we just need to use it.
LP: #2016350
Sponsored by: The FreeBSD Foundation
-rw-r--r-- | cloudinit/config/cc_growpart.py | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/cloudinit/config/cc_growpart.py b/cloudinit/config/cc_growpart.py index cce2f686..068e678f 100644 --- a/cloudinit/config/cc_growpart.py +++ b/cloudinit/config/cc_growpart.py @@ -111,7 +111,7 @@ LOG = logging.getLogger(__name__) def resizer_factory(mode: str, distro: Distro): resize_class = None if mode == "auto": - for (_name, resizer) in RESIZERS: + for _name, resizer in RESIZERS: cur = resizer(distro) if cur.available(): resize_class = cur @@ -122,7 +122,7 @@ def resizer_factory(mode: str, distro: Distro): else: mmap = {} - for (k, v) in RESIZERS: + for k, v in RESIZERS: mmap[k] = v if mode not in mmap: @@ -263,16 +263,20 @@ def device_part_info(devpath): bname = os.path.basename(rpath) syspath = "/sys/class/block/%s" % bname - # FreeBSD doesn't know of sysfs so just get everything we need from - # the device, like /dev/vtbd0p2. - if util.is_FreeBSD(): - freebsd_part = "/dev/" + util.find_freebsd_part(devpath) - m = re.search("^(/dev/.+)p([0-9])$", freebsd_part) - return (m.group(1), m.group(2)) - elif util.is_DragonFlyBSD(): - dragonflybsd_part = "/dev/" + util.find_dragonflybsd_part(devpath) - m = re.search("^(/dev/.+)s([0-9])$", dragonflybsd_part) - return (m.group(1), m.group(2)) + if util.is_BSD(): + # FreeBSD doesn't know of sysfs so just get everything we need from + # the device, like /dev/vtbd0p2. + fpart = "/dev/" + util.find_freebsd_part(devpath) + m = re.search("^(/dev/.+)p([0-9])$", fpart) + if m: + return m.group(1), m.group(2) + + # alternatively, we could be dealing with MBR slices, + # or we're on DragonFly + fslice = "/dev/" + util.find_dragonflybsd_part(devpath) + m = re.search("^(/dev/.+)s([0-9])$", fslice) + if m: + return m.group(1), m.group(2) if not os.path.exists(syspath): raise ValueError("%s had no syspath (%s)" % (devpath, syspath)) @@ -613,7 +617,7 @@ def handle(name: str, cfg: Config, cloud: Cloud, args: list) -> None: func=resize_devices, args=(resizer, devices), ) - for (entry, action, msg) in resized: + for entry, action, msg in resized: if action == RESIZE.CHANGED: LOG.info("'%s' resized: %s", entry, msg) else: @@ -621,5 +625,3 @@ def handle(name: str, cfg: Config, cloud: Cloud, args: list) -> None: RESIZERS = (("growpart", ResizeGrowPart), ("gpart", ResizeGpart)) - -# vi: ts=4 expandtab |