diff --git a/bcfg2/plugins/Python.py b/bcfg2/plugins/Python.py index 6a19a76f..aab4b384 100644 --- a/bcfg2/plugins/Python.py +++ b/bcfg2/plugins/Python.py @@ -115,7 +115,7 @@ class Python(Bcfg2.Server.Plugin.Plugin): def BuildEntry(self, entry, metadata): '''Construit le fichier''' - code = self.codes[entry.get('name')] + code = self.codes[entry.get('name')] fname = entry.get('realname', entry.get('name')) debug("building config file: %s" % fname, 'blue') env = pygen.Environment() @@ -126,14 +126,23 @@ class Python(Bcfg2.Server.Plugin.Plugin): env["info"] = { 'owner': 'root', 'group': 'root', 'perms': 0644 } - env.included = set([]) + env.included = set([]) try: include(env, "common") - entry.text = pygen.generate(code, env) + entry.text = pygen.generate(code, env) debug(entry.text) except Exception, e: - logger.error('Python exec error: %s: %s' % (str(e.__class__).split('.', 2)[1], str(e))) - raise Bcfg2.Server.Plugin.PluginExecutionError + import traceback + from cStringIO import StringIO + s = StringIO() + sys.stderr = s + traceback.print_exc() + sys.stderr = sys.__stderr__ + traceback = s.getvalue() + logger.error('Python exec error: %s: %s' % (str(e.__class__).split('.', 2)[1], str(e))) + for line in traceback.splitlines(): + logger.error('Python exec error: -> %s' % line) + raise Bcfg2.Server.Plugin.PluginExecutionError entry.attrib['owner'] = env["info"]['owner'] entry.attrib['group'] = env["info"]['group'] entry.attrib['perms'] = oct(env["info"]['perms']) diff --git a/bcfg2/pygen.py b/bcfg2/pygen.py index 897671af..3f5a534c 100755 --- a/bcfg2/pygen.py +++ b/bcfg2/pygen.py @@ -25,7 +25,7 @@ fichier de configuration à partir d'un script python''' __all__ = [ "Environment", "compileSource", "generate", "load" ] -import re, marshal, os +import re, marshal, os, sys from cStringIO import StringIO # Pour l'arrêt d'un script @@ -180,8 +180,6 @@ def load(fname, cfname=None): return code if __name__ == "__main__": - import sys - result = generate(load(sys.argv[1])) print "resultat:"