refactor: scrub only pools

This commit is contained in:
timeshifter
2021-12-02 14:59:12 +01:00
parent ef25c43a8b
commit 72b0dda9e5
+6 -5
View File
@@ -278,13 +278,14 @@ class ZFS:
) )
@staticmethod @staticmethod
def scrub(pool: str, *, wait_for_finish=True) -> None: def scrub(pool: Pool, *, wait_for_finish: bool = True) -> None:
if not isinstance(pool, Pool):
raise TypeError("Can only scrub pools.")
# TODO: check if scrub already in progress # TODO: check if scrub already in progress
run_command([config.ZPOOL, "scrub", pool]) run_command([config.ZPOOL, "scrub", pool.name])
if wait_for_finish: if wait_for_finish:
# TODO make Ctrl-c interrupt this # TODO make Ctrl-c interrupt this
run_command([config.ZPOOL, "wait", "-t", "scrub", pool]) run_command([config.ZPOOL, "wait", "-t", "scrub", pool.name])
# TODO raise error if pool is not healthy # TODO raise error if pool is not healthy
@@ -373,7 +374,7 @@ class ExternalPool(Pool):
def scrub(self) -> None: def scrub(self) -> None:
print(f"Scrubbing {self._name}") print(f"Scrubbing {self._name}")
ZFS.scrub(self._name) ZFS.scrub(self)
@classmethod @classmethod
def find_from_dict(cls, backup_pools: dict[str, UUID]) -> ExternalPool: def find_from_dict(cls, backup_pools: dict[str, UUID]) -> ExternalPool: