summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-05-21 10:10:12 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-05-21 10:10:12 -0400
commitd9721453baf9485f3660f648de085fe8f697b9a8 (patch)
treec1c4f584543240812689874e830858db8e33c554 /src/lib/Bcfg2
parent70d67a417957cb16f0307be0677a346cc9e724f5 (diff)
downloadbcfg2-d9721453baf9485f3660f648de085fe8f697b9a8.tar.gz
bcfg2-d9721453baf9485f3660f648de085fe8f697b9a8.tar.bz2
bcfg2-d9721453baf9485f3660f648de085fe8f697b9a8.zip
more fixes for missing genshi
Diffstat (limited to 'src/lib/Bcfg2')
-rw-r--r--src/lib/Bcfg2/Server/FileMonitor/__init__.py6
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Bundler.py29
2 files changed, 15 insertions, 20 deletions
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)