Files
zfs-backup/zfs_backup/snapshot.py
T
2022-12-06 14:59:55 +01:00

49 lines
1.2 KiB
Python

from __future__ import annotations
from re import search
from dataset import Dataset
from zfs import ZFS
from zfs_path import ZFSPath
class Snapshot:
def __init__(self, path: ZFSPath):
self._path = path
@classmethod
def from_string(cls, qualified_name: str) -> Snapshot:
return cls(ZFSPath.from_string(qualified_name))
def __gt__(self, other: Snapshot) -> bool:
return self.snapshot_name > other.snapshot_name
def __repr__(self):
return str(self._path)
def __eq__(self, other: Snapshot):
return self._path == other._path
def newer_than(self, other: Snapshot) -> bool:
return self > other
@property
def snapshot_name(self) -> str:
assert self._path.snapshot_name
return self._path.snapshot_name
def matches_regex(self, regex: str) -> bool:
"""Check if the qualified name of the snapshot matches a regular expression."""
return bool(search(regex, str(self._path)))
def destroy(self) -> None:
ZFS.destroy_snapshot(self)
@property
def pool(self) -> str:
return self._path.pool_name
@property
def dataset(self) -> Dataset:
return Dataset(self._path.dataset)