diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2026-02-16 12:59:14 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2026-02-16 12:59:14 +0200 |
| commit | 5f46fde558c467414fa151ad962caaf7f07628fa (patch) | |
| tree | 247d6fd45ddbc811fb71d2009fbbd2042e158791 /jprov/zfs.py | |
Initial commit
Diffstat (limited to 'jprov/zfs.py')
| -rw-r--r-- | jprov/zfs.py | 33 |
1 files changed, 33 insertions, 0 deletions
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() |
