From d9721453baf9485f3660f648de085fe8f697b9a8 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 21 May 2012 10:10:12 -0400 Subject: more fixes for missing genshi --- src/lib/Bcfg2/Server/FileMonitor/__init__.py | 6 ++++-- src/lib/Bcfg2/Server/Plugins/Bundler.py | 29 +++++++++++----------------- 2 files changed, 15 insertions(+), 20 deletions(-) (limited to 'src/lib') diff --git a/src/lib/Bcfg2/Server/FileMonitor/__init__.py b/src/lib/Bcfg2/Server/FileMonitor/__init__.py index 7b61c5bb9..784384c65 100644 --- a/src/lib/Bcfg2/Server/FileMonitor/__init__.py +++ b/src/lib/Bcfg2/Server/FileMonitor/__init__.py @@ -1,6 +1,7 @@ """Bcfg2.Server.FileMonitor provides the support for monitoring files.""" import os +import sys import fnmatch import logging import pkgutil @@ -75,8 +76,9 @@ class FileMonitor(object): try: self.handles[event.requestID].HandleEvent(event) except: - logger.error("Error in handling of event for %s" % - event.filename, exc_info=1) + err = sys.exc_info()[1] + logger.error("Error in handling of event for %s: %s" % + (event.filename, err)) def handle_event_set(self, lock=None): count = 1 diff --git a/src/lib/Bcfg2/Server/Plugins/Bundler.py b/src/lib/Bcfg2/Server/Plugins/Bundler.py index cbc452608..1d1171782 100644 --- a/src/lib/Bcfg2/Server/Plugins/Bundler.py +++ b/src/lib/Bcfg2/Server/Plugins/Bundler.py @@ -10,9 +10,8 @@ import Bcfg2.Server import Bcfg2.Server.Plugin try: - import genshi.template - import genshi.template.base - import Bcfg2.Server.Plugins.SGenshi + import genshi.template.base.TemplateError + from Bcfg2.Server.Plugins.SGenshi import SGenshiTemplateFile have_genshi = True except: have_genshi = False @@ -54,22 +53,16 @@ class Bundler(Bcfg2.Server.Plugin.Plugin, bundle = lxml.etree.parse(name, parser=Bcfg2.Server.XMLParser) nsmap = bundle.getroot().nsmap - if name.endswith('.xml'): - if have_genshi and \ - (nsmap == {'py': 'http://genshi.edgewall.org/'}): - # allow for genshi bundles with .xml extensions - spec = Bcfg2.Server.Plugin.Specificity() - return Bcfg2.Server.Plugins.SGenshi.SGenshiTemplateFile(name, - spec, - self.encoding) - else: - return BundleFile(name) - elif name.endswith('.genshi'): + if (name.endswith('.genshi') or + ('py' in nsmap and + nsmap['py'] == 'http://genshi.edgewall.org/')): if have_genshi: spec = Bcfg2.Server.Plugin.Specificity() - return Bcfg2.Server.Plugins.SGenshi.SGenshiTemplateFile(name, - spec, - self.encoding) + return SGenshiTemplateFile(name, spec, self.encoding) + else: + raise Bcfg2.Server.Plugin.PluginExecutionError("Genshi not available: %s" % name) + else: + return BundleFile(name) def BuildStructures(self, metadata): """Build all structures for client (metadata).""" @@ -89,7 +82,7 @@ class Bundler(Bcfg2.Server.Plugin.Plugin, continue try: bundleset.append(entries[0].get_xml_value(metadata)) - except genshi.template.base.TemplateError: + except TemplateError: t = sys.exc_info()[1] self.logger.error("Bundler: Failed to template genshi bundle %s" % bundlename) -- cgit v1.2.3-1-g7c22