diff options
-rw-r--r-- | pyfirstaidkit/configuration.py | 3 | ||||
-rw-r--r-- | pyfirstaidkit/interpret.py | 4 | ||||
-rw-r--r-- | pyfirstaidkit/utils/backup.py | 23 |
3 files changed, 21 insertions, 9 deletions
diff --git a/pyfirstaidkit/configuration.py b/pyfirstaidkit/configuration.py index 499c0a8..b25bf1b 100644 --- a/pyfirstaidkit/configuration.py +++ b/pyfirstaidkit/configuration.py @@ -44,7 +44,8 @@ def createDefaultConfig(config): config.log.fallbacks = "firstaidkit.log,/tmp/firstaidkit.log,/dev/null" config.plugin.disabled = "" config.backup.method = "file" - config.backup.path = "/tmp/firstaidkitbackup" + config.backup.rootpath = "/tmp/fakbackup" + config.backup.fullpath = "" # Setup a sane default root directory. if os.path.isdir("/mnt/sysimage"): diff --git a/pyfirstaidkit/interpret.py b/pyfirstaidkit/interpret.py index 71c1152..8817b04 100644 --- a/pyfirstaidkit/interpret.py +++ b/pyfirstaidkit/interpret.py @@ -49,7 +49,9 @@ class Tasker: self._reporting = reporting if backups is None: - self._backups = FileBackupStore(cfg.backup.path) + self._backups = FileBackupStore(rootpath = cfg.backup.rootpath, + fullpath = cfg.backup.fullpath) + cfg.backup.fullpath = self._backups._path else: self._backups = backups diff --git a/pyfirstaidkit/utils/backup.py b/pyfirstaidkit/utils/backup.py index f7670c2..79e4b85 100644 --- a/pyfirstaidkit/utils/backup.py +++ b/pyfirstaidkit/utils/backup.py @@ -25,6 +25,7 @@ import hashlib import weakref import cPickle as pickle import copy +import tempfile class BackupException(Exception): pass @@ -209,20 +210,28 @@ class FileBackupStore(BackupStoreInterface): return False - def __init__(self, path): + def __init__(self, rootpath = "/tmp", fullpath = ""): if self.__class__._singleton: raise BackupException("BackupStore with %s type can have only " "one instance" % (self.__name__,)) assert self.__class__._singleton==None - self._path = path - self._backups = {} - if os.path.isdir(self._path): - raise BackupException("Backupdir %s already exists. Erase dir or " - "change backup dir." % self._path) + if fullpath: + if os.path.isdir(fullpath): + raise BackupException("Backupdir %s already exists. Erase " + "dir or change backup dir." % self._path) + else: + self._path = fullpath + os.makedirs(fullpath) + else: - os.makedirs(self._path) + if not os.path.isdir(rootpath): + os.makedirs(rootpath) + self._path = tempfile.mkdtemp(prefix = "firstaidkitbackup-", dir = rootpath) + + self._backups = {} + self.__class__._singleton = weakref.proxy(self) print("Backup system initialized") |