Skip to content

Commit 30750b4

Browse files
committed
Implement grow_root_partition for redhat-based systems
Signed-off-by: Gaëtan Lehmann <gaetan.lehmann@vates.tech>
1 parent f8c1418 commit 30750b4

1 file changed

Lines changed: 19 additions & 10 deletions

File tree

lib/vm.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from lib.vdi import VDI
3030
from lib.vif import VIF
3131

32-
from typing import TYPE_CHECKING, Iterable, List, Literal, overload
32+
from typing import TYPE_CHECKING, Iterable, List, Literal, assert_never, overload
3333

3434
if TYPE_CHECKING:
3535
from lib.host import Host
@@ -527,18 +527,27 @@ def detect_package_manager(self) -> PackageManagerEnum:
527527

528528
def grow_root_partition(self) -> int | None:
529529
pkg_manager = self.detect_package_manager()
530-
if pkg_manager == PackageManagerEnum.APK:
531-
self.ssh('apk add util-linux e2fsprogs-extra')
532-
elif pkg_manager == PackageManagerEnum.APT_GET:
533-
self.ssh('apt-get update && apt-get install -y -qq util-linux e2fsprogs')
534-
else:
535-
return None
530+
match pkg_manager:
531+
case PackageManagerEnum.APK:
532+
self.ssh('apk add util-linux e2fsprogs-extra')
533+
case PackageManagerEnum.APT_GET:
534+
self.ssh('apt-get update && apt-get install -y -qq util-linux e2fsprogs')
535+
case PackageManagerEnum.DNF:
536+
self.ssh('dnf install -y util-linux e2fsprogs')
537+
case PackageManagerEnum.YUM:
538+
self.ssh('yum install -y util-linux e2fsprogs')
539+
case PackageManagerEnum.ZYPPER:
540+
self.ssh('zypper --non-interactive install util-linux e2fsprogs')
541+
case PackageManagerEnum.UNKNOWN:
542+
return None
543+
case _:
544+
assert_never(pkg_manager)
536545
mount_output = self.ssh('mount').strip()
537546
root_match = re.search(r'/dev/(\w+?)(p?)(\d+) on / type (\w+)', mount_output)
538547
assert root_match is not None
539-
disk, p, partition, typ = root_match.groups()
540-
if not typ.startswith('ext'):
541-
logging.debug(f"Unsupported filesystem: {typ}")
548+
disk, p, partition, fs_type = root_match.groups()
549+
if not fs_type.startswith('ext'):
550+
logging.debug(f"Unsupported filesystem: {fs_type}")
542551
return None
543552
self.ssh(f'echo ", +" | sfdisk --no-reread --force -N {partition} /dev/{disk}')
544553
self.ssh(f'partx -u -n {partition}:{partition} /dev/{disk}')

0 commit comments

Comments
 (0)