aboutsummaryrefslogtreecommitdiffstats
path: root/jprov/zfs.py
blob: e3a157496f2afa3ffb370d627b9b7b1826c22c14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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()