summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-04-18 13:07:35 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-05-04 11:11:44 -0400
commit98563b90b2dbaa0dae5f62f6d58c4663fb537ddf (patch)
treeff92541a454e5ebbdb2d7f124f39c4766761b7d3
parent9e08467eba7f15af0d7b38adea014600ce34ad6b (diff)
downloadbcfg2-98563b90b2dbaa0dae5f62f6d58c4663fb537ddf.tar.gz
bcfg2-98563b90b2dbaa0dae5f62f6d58c4663fb537ddf.tar.bz2
bcfg2-98563b90b2dbaa0dae5f62f6d58c4663fb537ddf.zip
better error reporting
-rw-r--r--src/lib/Server/Plugins/Cfg.py62
-rw-r--r--src/lib/Server/Plugins/Metadata.py3
2 files changed, 38 insertions, 27 deletions
diff --git a/src/lib/Server/Plugins/Cfg.py b/src/lib/Server/Plugins/Cfg.py
index ed08d454d..9ec39e108 100644
--- a/src/lib/Server/Plugins/Cfg.py
+++ b/src/lib/Server/Plugins/Cfg.py
@@ -120,8 +120,9 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet):
base_files = [matching.index(m) for m in matching
if not m.specific.delta]
if not base_files:
- logger.error("No base file found for %s" % entry.get('name'))
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ msg = "No base file found for %s" % entry.get('name')
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
base = min(base_files)
used = matching[:base + 1]
used.reverse()
@@ -133,15 +134,16 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet):
basefile = used.pop(0)
if entry.get('perms').lower() == 'inherit':
# use on-disk permissions
- fname = "%s/%s" % (self.path, entry.get('name'))
+ fname = os.path.join(self.path, entry.get('name'))
entry.set('perms',
str(oct(stat.S_IMODE(os.stat(fname).st_mode))))
if entry.tag == 'Path':
entry.set('type', 'file')
if basefile.name.endswith(".genshi"):
if not have_genshi:
- logger.error("Cfg: Genshi is not available")
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ msg = "Cfg: Genshi is not available: %s" % entry.get("name")
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
try:
template_cls = NewTextTemplate
loader = TemplateLoader()
@@ -159,13 +161,15 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet):
if data == '':
entry.set('empty', 'true')
except Exception:
- e = sys.exc_info()[1]
- logger.error("Cfg: genshi exception: %s" % e)
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ msg = "Cfg: genshi exception (%s): %s" % (entry.get("name"),
+ sys.exc_info()[1])
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
elif basefile.name.endswith(".cheetah"):
if not have_cheetah:
- logger.error("Cfg: Cheetah is not available")
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ msg = "Cfg: Cheetah is not available: %s" % entry.get("name")
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
try:
fname = entry.get('realname', entry.get('name'))
s = {'useStackFrames': False}
@@ -178,9 +182,10 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet):
if data == '':
entry.set('empty', 'true')
except Exception:
- e = sys.exc_info()[1]
- logger.error("Cfg: cheetah exception: %s" % e)
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ msg = "Cfg: cheetah exception (%s): %s" % (entry.get("name"),
+ sys.exc_info()[1])
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
else:
data = basefile.data
for delta in used:
@@ -191,17 +196,18 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet):
try:
entry.text = u_str(data, self.encoding)
except UnicodeDecodeError:
- e = sys.exc_info()[1]
- logger.error("Failed to decode %s: %s" % (entry.get('name'), e))
+ msg = "Failed to decode %s: %s" % (entry.get('name'),
+ sys.exc_info()[1])
+ logger.error(msg)
logger.error("Please verify you are using the proper encoding.")
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
except ValueError:
- e = sys.exc_info()[1]
- logger.error("Error in specification for %s" % entry.get('name'))
- logger.error("%s" % e)
+ msg = "Error in specification for %s: %s" % (entry.get('name'),
+ sys.exc_info()[1])
+ logger.error(msg)
logger.error("You need to specify base64 encoding for %s." %
entry.get('name'))
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
if entry.text in ['', None]:
entry.set('empty', 'true')
@@ -228,16 +234,20 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet):
if 'text' in new_entry:
name = self.build_filename(specific)
if os.path.exists("%s.genshi" % name):
- logger.error("Cfg: Unable to pull data for genshi types")
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ msg = "Cfg: Unable to pull data for genshi types"
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
elif os.path.exists("%s.cheetah" % name):
- logger.error("Cfg: Unable to pull data for cheetah types")
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ msg = "Cfg: Unable to pull data for cheetah types"
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
try:
etext = new_entry['text'].encode(self.encoding)
except:
- logger.error("Cfg: Cannot encode content of %s as %s" % (name, self.encoding))
- raise Bcfg2.Server.Plugin.PluginExecutionError
+ msg = "Cfg: Cannot encode content of %s as %s" % (name,
+ self.encoding)
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
open(name, 'w').write(etext)
self.debug_log("Wrote file %s" % name, flag=log)
badattr = [attr for attr in ['owner', 'group', 'perms']
diff --git a/src/lib/Server/Plugins/Metadata.py b/src/lib/Server/Plugins/Metadata.py
index f837b1305..cc1f78456 100644
--- a/src/lib/Server/Plugins/Metadata.py
+++ b/src/lib/Server/Plugins/Metadata.py
@@ -819,7 +819,8 @@ class Metadata(Bcfg2.Server.Plugin.Plugin,
try:
groups_tree.xinclude()
except lxml.etree.XIncludeError:
- self.logger.error("Failed to process XInclude for file %s" % dest)
+ self.logger.error("Failed to process XInclude for file %s: %s" %
+ (dest, sys.exc_info()[1]))
groups = groups_tree.getroot()
categories = {'default': 'grey83'}
viz_str = ""