Source code for AutoArchive._application.archiving._archive_info
# _archive_info.py
#
# Project: AutoArchive
# License: GNU GPLv3
#
# Copyright (C) 2003 - 2014 Róbert Čerňanský
""":attr:`_BackupLevelRestartReasons` enum and :class:`_ArchiveInfo` class."""
__all__ = ["_BackupLevelRestartReasons", "_ArchiveInfo"]
# {{{ INCLUDES
from abc import *
from AutoArchive._infrastructure.py_additions import Enum
from AutoArchive._infrastructure.configuration import ArchiverTypes
# }}} INCLUDES
# {{{ CONSTANTS
#: Reasons for restarting of the :term:`backup level`.
_BackupLevelRestartReasons = Enum(
#: :term:`Backup level` restart did not occurred.
"NoRestart",
#: Maximal number of restarts to a lower :term:`backup level` was reached. Full restart was done.
"RestartCountLimitReached",
#: Maximal age without full restart was reached. Full restart was done.
"LastFullRestartAgeLimitReached",
#: Maximal :term:`backup level` reached. Restart to a lower level was done.
"BackupLevelLimitReached",
#: Maximal age without a restart was reached. Restart to a lower level was done.
"LastRestartAgeLimitReached")
# }}} CONSTANTS
# {{{ CLASSES
[docs]class _ArchiveInfo(metaclass = ABCMeta):
"""Information about an archive.
.. note:: Class should be instantiated by calling the :meth:`_Archiving.getArchiveInfo()` or \
:meth:`_Archiving.getStoredArchiveInfo()` factory methods."""
@abstractmethod
def __init__(self, name):
self._name = name
self._path = None
self._archiverType = ArchiverTypes.Tar
self._destDir = ""
self._incremental = None
self._backupLevel = None
self._nextBackupLevel = None
self._restarting = None
self._restartAfterLevel = None
self._restartReason = None
self._restartLevel = None
self._restartCount = None
self._fullRestartAfterCount = None
self._lastRestart = None
self._restartAfterAge = None
self._lastFullRestart = None
self._fullRestartAfterAge = None
@property
def name(self):
"""Gets the name of the archive.
:rtype: ``str``"""
return self._name
@property
def path(self):
"""Gets the path to the archive's root.
.. note:: Will be ``None`` if the archive's root can not be retrieved.
:rtype: ``str``"""
return self._path
@property
def archiverType(self):
"""Gets the archiver type for this archive.
.. note:: Value is guaranteed to be non-\ ``None``.
:rtype: :attr:`ArchiverTypes`"""
return self._archiverType
@property
def destDir(self):
"""Gets the archive's destination directory.
.. note:: Value is guaranteed to be non-\ ``None``.
:rtype: ``str``"""
return self._destDir
@property
def incremental(self):
"""Gets the status of incremental archiving activation.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving.
:rtype: ``bool``"""
return self._incremental
@property
def backupLevel(self):
"""Gets the current :term:`backup level`.
.. note:: Will be ``None`` if the archive is not incremental or used :attr:`archiverType` does not support
incremental archiving.
.. note:: For archiver types that supports incremental archiving, whether the return value will be ``None`` or \
not does not depend on the *current* :attr:`incremental` value. If the archive was configured and created \
as incremental previously then the :term:`backup level` will be defined even if the current \
:attr:`incremental` value would be ``False`` and vice versa.
:rtype: ``int``"""
return self._backupLevel
@property
def nextBackupLevel(self):
"""Gets the next :term:`backup level`.
See also :attr:`backupLevel`.
.. note:: Will be ``None`` if the archive is not incremental or used :attr:`archiverType` does not support
incremental archiving.
:rtype: ``int``"""
return self._nextBackupLevel
@property
def restarting(self):
"""Gets the status of :term:`backup level` restarting activation.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving.
:rtype: ``bool``"""
return self._restarting
@property
def restartAfterLevel(self):
"""Gets the maximal :term:`backup level`; after it is reached it will be restarted to a lower value.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving.
:rtype: ``int``"""
return self._restartAfterLevel
@property
def restartReason(self):
"""Gets the reason for the upcoming :term:`backup level` restart.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving or the restart
reason can not be determined.
:rtype: :attr:`_BackupLevelRestartReasons`"""
return self._restartReason
@property
def restartLevel(self):
"""Gets a :term:`backup level` to which a next restart would be done.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving.
:rtype: ``int``"""
return self._restartLevel
@property
def restartCount(self):
"""Gets the number of :term:`backup level` restarts already performed.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving or if \
:attr:`restarting` was not enabled for the archive in the past.
:rtype: ``int``"""
return self._restartCount
@property
def fullRestartAfterCount(self):
"""Gets the number of restarts after which the :term:`backup level` will be restarted to 0.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving or if no value \
is defined for :attr:`.Options.FULL_RESTART_AFTER_COUNT`.
:rtype: ``int``"""
return self._fullRestartAfterCount
@property
def lastRestart(self):
"""Gets the date when the last :term:`backup level` restart occurred.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving or if \
:attr:`restarting` was not enabled for the archive in the past.
:rtype: ``datetime.date``"""
return self._lastRestart
@property
def restartAfterAge(self):
"""Gets the number of days after which the :term:`backup level` should be restarted.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving or if no value is
defined for :attr:`.Options.RESTART_AFTER_AGE`.
:rtype: ``int``"""
return self._restartAfterAge
@property
def lastFullRestart(self):
"""Gets the date when the last :term:`backup level` restart to level 0 occurred.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving or if \
:attr:`restarting` was not enabled for the archive in the past.
:rtype: ``datetime.date``"""
return self._lastFullRestart
@property
def fullRestartAfterAge(self):
"""Gets the number of days after which the :term:`backup level` should be restarted to level 0.
.. note:: Will be ``None`` if the :attr:`archiverType` does not support incremental archiving or if no value is
defined for :attr:`.Options.FULL_RESTART_AFTER_AGE`.
:rtype: ``int``"""
return self._fullRestartAfterAge
# }}} CLASSES