summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Cfg/CfgGenshiGenerator.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-11-13 17:04:42 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-11-13 17:04:42 -0500
commit3787db7a50f70e1c8cb575546949f32c2958fe20 (patch)
treed1f35ec1e3c68cb950d84ae301e5551007fe6de5 /src/lib/Bcfg2/Server/Plugins/Cfg/CfgGenshiGenerator.py
parentee16ced43e5050455368bb794e1fdfbba8eaa9f0 (diff)
downloadbcfg2-3787db7a50f70e1c8cb575546949f32c2958fe20.tar.gz
bcfg2-3787db7a50f70e1c8cb575546949f32c2958fe20.tar.bz2
bcfg2-3787db7a50f70e1c8cb575546949f32c2958fe20.zip
Cfg: improved error messages
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Cfg/CfgGenshiGenerator.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Cfg/CfgGenshiGenerator.py31
1 files changed, 12 insertions, 19 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Cfg/CfgGenshiGenerator.py b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgGenshiGenerator.py
index cfb978c42..df0c30c09 100644
--- a/src/lib/Bcfg2/Server/Plugins/Cfg/CfgGenshiGenerator.py
+++ b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgGenshiGenerator.py
@@ -4,13 +4,10 @@
import re
import sys
-import logging
import traceback
-import Bcfg2.Server.Plugin
+from Bcfg2.Server.Plugin import PluginExecutionError
from Bcfg2.Server.Plugins.Cfg import CfgGenerator
-LOGGER = logging.getLogger(__name__)
-
try:
import genshi.core
from genshi.template import TemplateLoader, NewTextTemplate
@@ -67,9 +64,7 @@ class CfgGenshiGenerator(CfgGenerator):
def __init__(self, fname, spec, encoding):
CfgGenerator.__init__(self, fname, spec, encoding)
if not HAS_GENSHI:
- msg = "Cfg: Genshi is not available: %s" % fname
- LOGGER.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
+ raise PluginExecutionError("Genshi is not available")
self.template = None
self.loader = self.__loader_cls__(max_cache_size=0)
__init__.__doc__ = CfgGenerator.__init__.__doc__
@@ -92,15 +87,15 @@ class CfgGenshiGenerator(CfgGenerator):
stack = traceback.extract_tb(sys.exc_info()[2])
for quad in stack:
if quad[0] == self.name:
- LOGGER.error("Cfg: Error rendering %s at '%s': %s: %s" %
- (fname, quad[2], err.__class__.__name__, err))
- break
+ raise PluginExecutionError("%s: %s at '%s'" %
+ (err.__class__.__name__, err,
+ quad[2]))
raise
except:
- self._handle_genshi_exception(fname, sys.exc_info())
+ self._handle_genshi_exception(sys.exc_info())
get_data.__doc__ = CfgGenerator.get_data.__doc__
- def _handle_genshi_exception(self, fname, exc):
+ def _handle_genshi_exception(self, exc):
""" this is horrible, and I deeply apologize to whoever gets
to maintain this after I go to the Great Beer Garden in the
Sky. genshi is incredibly opaque about what's being executed,
@@ -140,9 +135,9 @@ class CfgGenshiGenerator(CfgGenerator):
# single line break)
real_lineno = lineno - contents.code.co_firstlineno
src = re.sub(r'\n\n+', '\n', contents.source).splitlines()
- LOGGER.error("Cfg: Error rendering %s at '%s': %s: %s" %
- (fname, src[real_lineno], err.__class__.__name__,
- err))
+ raise PluginExecutionError("%s: %s at '%s'" %
+ (err.__class__.__name__, err,
+ src[real_lineno]))
raise
def handle_event(self, event):
@@ -150,8 +145,6 @@ class CfgGenshiGenerator(CfgGenerator):
self.template = self.loader.load(self.name, cls=NewTextTemplate,
encoding=self.encoding)
except:
- msg = "Cfg: Could not load template %s: %s" % (self.name,
- sys.exc_info()[1])
- LOGGER.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
+ raise PluginExecutionError("Failed to load template: %s" %
+ sys.exc_info()[1])
handle_event.__doc__ = CfgGenerator.handle_event.__doc__