|
29 | 29 | from lib.vdi import VDI |
30 | 30 | from lib.vif import VIF |
31 | 31 |
|
32 | | -from typing import TYPE_CHECKING, Iterable, List, Literal, overload |
| 32 | +from typing import TYPE_CHECKING, Iterable, List, Literal, assert_never, overload |
33 | 33 |
|
34 | 34 | if TYPE_CHECKING: |
35 | 35 | from lib.host import Host |
@@ -527,18 +527,27 @@ def detect_package_manager(self) -> PackageManagerEnum: |
527 | 527 |
|
528 | 528 | def grow_root_partition(self) -> int | None: |
529 | 529 | 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) |
536 | 545 | mount_output = self.ssh('mount').strip() |
537 | 546 | root_match = re.search(r'/dev/(\w+?)(p?)(\d+) on / type (\w+)', mount_output) |
538 | 547 | 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}") |
542 | 551 | return None |
543 | 552 | self.ssh(f'echo ", +" | sfdisk --no-reread --force -N {partition} /dev/{disk}') |
544 | 553 | self.ssh(f'partx -u -n {partition}:{partition} /dev/{disk}') |
|
0 commit comments