From 5f46fde558c467414fa151ad962caaf7f07628fa Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Mon, 16 Feb 2026 12:59:14 +0200 Subject: Initial commit --- jprov/zfs.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 jprov/zfs.py (limited to 'jprov/zfs.py') diff --git a/jprov/zfs.py b/jprov/zfs.py new file mode 100644 index 0000000..e3a1574 --- /dev/null +++ b/jprov/zfs.py @@ -0,0 +1,33 @@ +"""ZFS operations.""" + +from __future__ import annotations + +from .runner import run + + +def dataset_exists( + name: str, + *, + log_file: str | None = None, + dry_run: bool = False, +) -> bool: + result = run( + ["zfs", "list", "-H", "-o", "name", name], + allow_fail=True, + log_file=log_file, + dry_run=dry_run, + ) + return result.returncode == 0 + + +def clone_dataset(src: str, dest: str, *, log_file: str | None = None) -> None: + run(["zfs", "clone", src, dest], log_file=log_file) + + +def destroy_dataset(name: str, *, log_file: str | None = None) -> None: + run(["zfs", "destroy", "-r", name], log_file=log_file) + + +def get_mountpoint(name: str, *, log_file: str | None = None) -> str: + result = run(["zfs", "get", "-H", "-o", "value", "mountpoint", name], log_file=log_file) + return result.stdout.strip() -- cgit v1.3