Remove prev_snapshot attribute and update docstrings
This commit is contained in:
parent
16adea1a58
commit
71f725981c
@ -8,28 +8,28 @@ import os.path
|
|||||||
import datetime
|
import datetime
|
||||||
import glob
|
import glob
|
||||||
|
|
||||||
|
from rbackup.hierarchy.hierarchy import Hierarchy
|
||||||
|
from rbackup.hierarchy.snapshot import Snapshot
|
||||||
|
|
||||||
|
|
||||||
class Repository(Hierarchy):
|
class Repository(Hierarchy):
|
||||||
"""A class for interacting with a backup repository.
|
"""A class for interacting with a backup repository.
|
||||||
|
|
||||||
At the time of creation, the following is true about the class:
|
At the time of creation, the following is true about the class:
|
||||||
|
===============================================================
|
||||||
|
|
||||||
The current snapshot points to:
|
The current snapshot points to:
|
||||||
-------------------------------
|
-------------------------------
|
||||||
* None if the repository is empty
|
* None if the repository is empty
|
||||||
* The most recent snapshot before running create_snapshot()
|
* The most recent snapshot before running create_snapshot()
|
||||||
* A new, empty snapshot after running create_snapshot()
|
* A new, empty snapshot after running create_snapshot()
|
||||||
|
|
||||||
The previous snapshot points to:
|
|
||||||
--------------------------------
|
|
||||||
* None if the repository is empty
|
|
||||||
* The snapshot before the current snapshot if there is more than one
|
|
||||||
* The
|
|
||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
* curr_snapshot - return either the most recent snapshot or
|
* path (inherited from Hierarchy)
|
||||||
the new snapshot created after running create_snapshot()
|
* curr_snapshot - return either the most recent snapshot
|
||||||
* prev_snapshot - return the Snapshot of the previous backup
|
before running create_snapshot() or the new snapshot
|
||||||
|
created after running create_snapshot()
|
||||||
* snapshots - return a list of snapshots stored in this repository
|
* snapshots - return a list of snapshots stored in this repository
|
||||||
|
|
||||||
Methods
|
Methods
|
||||||
@ -52,10 +52,13 @@ class Repository(Hierarchy):
|
|||||||
"""Default constructor for the Repository class."""
|
"""Default constructor for the Repository class."""
|
||||||
super().__init__(dest)
|
super().__init__(dest)
|
||||||
|
|
||||||
self._snapshot_dir = os.path.join(self.base_path, "data")
|
self._snapshot_dir = os.path.join(self.path, "data")
|
||||||
self.update_snapshots()
|
self.update_snapshots()
|
||||||
self._prev_snapshot = None
|
|
||||||
self._curr_snapshot = self._prev_snapshot
|
if self._snapshots == []:
|
||||||
|
self._curr_snapshot = None
|
||||||
|
else:
|
||||||
|
self._curr_snapshot = self._snapshots[-1]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def snapshots(self):
|
def snapshots(self):
|
||||||
@ -73,41 +76,8 @@ class Repository(Hierarchy):
|
|||||||
:returns: the names of all snapshots in this repository sorted by
|
:returns: the names of all snapshots in this repository sorted by
|
||||||
date
|
date
|
||||||
:rtype: list
|
:rtype: list
|
||||||
:rtype: None if there are no snapshots in this Repository
|
|
||||||
"""
|
"""
|
||||||
if self._snapshots == []:
|
return self._snapshots
|
||||||
return None
|
|
||||||
else:
|
|
||||||
return self._snapshots
|
|
||||||
|
|
||||||
def create_snapshot(self, name=datetime.datetime.utcnow().isoformat().replace(":", "-")):
|
|
||||||
"""
|
|
||||||
:return: a new Snapshot object
|
|
||||||
:rtype: Snapshot object
|
|
||||||
"""
|
|
||||||
path = os.path.join(self._snapshot_dir, f"snapshot-{name}")
|
|
||||||
|
|
||||||
self._curr_snapshot = Snapshot(path)
|
|
||||||
self._snapshots.append(_curr_snapshot)
|
|
||||||
|
|
||||||
def update_snapshots(self):
|
|
||||||
"""Update the list of snapshots in this repository."""
|
|
||||||
self._snapshots = [
|
|
||||||
Snapshot(s)
|
|
||||||
for s in glob.glob(f"{self._snapshot_dir}/*")
|
|
||||||
if os.path.isdir(s)
|
|
||||||
]
|
|
||||||
|
|
||||||
@property
|
|
||||||
def prev_snapshot(self):
|
|
||||||
"""Return the instance of the previous Snapshot.
|
|
||||||
|
|
||||||
:rtype: Snapshot object
|
|
||||||
"""
|
|
||||||
if self.snapshots is None:
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
return self.snapshots[-1]
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def curr_snapshot(self):
|
def curr_snapshot(self):
|
||||||
@ -116,9 +86,43 @@ class Repository(Hierarchy):
|
|||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
>>> repo = Repository('backup')
|
>>> repo = Repository('backup')
|
||||||
|
>>> repo.snapshots
|
||||||
|
>>> ['snapshot-one', 'snapshot-two']
|
||||||
>>> repo.curr_snapshot
|
>>> repo.curr_snapshot
|
||||||
>>> Snapshot('backup/data/snapshot-{utcnow}')
|
>>> Snapshot('backup/data/snapshot-two')
|
||||||
|
|
||||||
:rtype: Snapshot object
|
:rtype: Snapshot object
|
||||||
"""
|
"""
|
||||||
return self._curr_snapshot
|
return self._curr_snapshot
|
||||||
|
|
||||||
|
def create_snapshot(
|
||||||
|
self, name=datetime.datetime.utcnow().isoformat().replace(":", "-")
|
||||||
|
):
|
||||||
|
"""Create a new snapshot in this repository.
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
>>> repo = Repository('backup')
|
||||||
|
>>> repo.snapshots
|
||||||
|
>>> ['backup/data/snapshot-one', 'backup/data/snapshot-two']
|
||||||
|
>>> repo.curr_snapshot
|
||||||
|
>>> Snapshot('backup/data/snapshot-two')
|
||||||
|
>>> repo.create_snapshot('three')
|
||||||
|
>>> repo.curr_snapshot
|
||||||
|
>>> Snapshot('backup/data/snapshot-three')
|
||||||
|
|
||||||
|
:return: a new Snapshot object
|
||||||
|
:rtype: Snapshot object
|
||||||
|
"""
|
||||||
|
path = os.path.join(self._snapshot_dir, f"snapshot-{name}")
|
||||||
|
|
||||||
|
self._curr_snapshot = Snapshot(path)
|
||||||
|
self._snapshots.append(self._curr_snapshot)
|
||||||
|
|
||||||
|
def update_snapshots(self):
|
||||||
|
"""Update the list of snapshots in this repository."""
|
||||||
|
self._snapshots = [
|
||||||
|
Snapshot(s)
|
||||||
|
for s in glob.glob(f"{self._snapshot_dir}/*")
|
||||||
|
if os.path.isdir(s)
|
||||||
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user