summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Client/Tools/POSIX/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Client/Tools/POSIX/__init__.py')
-rw-r--r--src/lib/Bcfg2/Client/Tools/POSIX/__init__.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/POSIX/__init__.py b/src/lib/Bcfg2/Client/Tools/POSIX/__init__.py
index 15acd2b3d..7708c4f72 100644
--- a/src/lib/Bcfg2/Client/Tools/POSIX/__init__.py
+++ b/src/lib/Bcfg2/Client/Tools/POSIX/__init__.py
@@ -18,7 +18,7 @@ class POSIX(Bcfg2.Client.Tools.Tool):
Bcfg2.Client.Tools.Tool.__init__(self, logger, setup, config)
self.ppath = setup['ppath']
self.max_copies = setup['max_copies']
- self._load_handlers()
+ self._handlers = self._load_handlers()
self.logger.debug("POSIX: Handlers loaded: %s" %
(", ".join(self._handlers.keys())))
self.__req__ = dict(Path=dict())
@@ -39,21 +39,22 @@ class POSIX(Bcfg2.Client.Tools.Tool):
self.handlesEntry(e))])
def _load_handlers(self):
- # this must be called at run-time, not at compile-time, or we
- # get wierd circular import issues.
- self._handlers = dict()
+ """ load available POSIX tool handlers. this must be called
+ at run-time, not at compile-time, or we get wierd circular
+ import issues. """
+ rv = dict()
for submodule in walk_packages(path=__path__, prefix=__name__ + "."):
mname = submodule[1].rsplit('.', 1)[-1]
if mname == 'base':
continue
- module = getattr(__import__(submodule[1]).Client.Tools.POSIX, mname)
+ module = getattr(__import__(submodule[1]).Client.Tools.POSIX,
+ mname)
hdlr = getattr(module, "POSIX" + mname)
if POSIXTool in hdlr.__mro__:
# figure out what entry type this handler handles
etype = hdlr.__name__[5:].lower()
- self._handlers[etype] = hdlr(self.logger,
- self.setup,
- self.config)
+ rv[etype] = hdlr(self.logger, self.setup, self.config)
+ return rv
def canVerify(self, entry):
if not Bcfg2.Client.Tools.Tool.canVerify(self, entry):
@@ -96,9 +97,10 @@ class POSIX(Bcfg2.Client.Tools.Tool):
return ret
def _prune_old_backups(self, entry):
+ """ Remove old paranoid backup files """
bkupnam = entry.get('name').replace('/', '_')
- bkup_re = re.compile(bkupnam + \
- r'_\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{6}$')
+ bkup_re = re.compile(
+ bkupnam + r'_\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{6}$')
# current list of backups for this file
try:
bkuplist = [f for f in os.listdir(self.ppath) if
@@ -121,6 +123,7 @@ class POSIX(Bcfg2.Client.Tools.Tool):
(os.path.join(self.ppath, oldest), err))
def _paranoid_backup(self, entry):
+ """ Take a backup of the specified entry for paranoid mode """
if (entry.get("paranoid", 'false').lower() == 'true' and
self.setup.get("paranoid", False) and
entry.get('current_exists', 'true') == 'true' and
@@ -135,5 +138,5 @@ class POSIX(Bcfg2.Client.Tools.Tool):
(entry.get('name'), bfile))
except IOError:
err = sys.exc_info()[1]
- self.logger.error("POSIX: Failed to create backup file for %s: "
- "%s" % (entry.get('name'), err))
+ self.logger.error("POSIX: Failed to create backup file for "
+ "%s: %s" % (entry.get('name'), err))