summaryrefslogtreecommitdiffstats
path: root/src/lib/Server
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Server')
-rw-r--r--src/lib/Server/Plugins/Bundler.py23
-rw-r--r--src/lib/Server/Plugins/Cfg.py26
-rw-r--r--src/lib/Server/Reports/settings.py1
3 files changed, 29 insertions, 21 deletions
diff --git a/src/lib/Server/Plugins/Bundler.py b/src/lib/Server/Plugins/Bundler.py
index 47cd7e2c4..3f88fe26b 100644
--- a/src/lib/Server/Plugins/Bundler.py
+++ b/src/lib/Server/Plugins/Bundler.py
@@ -15,17 +15,22 @@ try:
except:
have_genshi = False
+
class BundleFile(Bcfg2.Server.Plugin.StructFile):
+
def get_xml_value(self, metadata):
bundlename = self.name.split('/')[-1][:-4]
bundle = lxml.etree.Element('Bundle', name=bundlename)
[bundle.append(copy.deepcopy(item)) for item in self.Match(metadata)]
return bundle
+
class Bundler(Bcfg2.Server.Plugin.Plugin,
Bcfg2.Server.Plugin.Structure,
Bcfg2.Server.Plugin.XMLDirectoryBacked):
- """The bundler creates dependent clauses based on the bundle/translation scheme from Bcfg1."""
+ """The bundler creates dependent clauses based on the
+ bundle/translation scheme from Bcfg1.
+ """
name = 'Bundler'
__version__ = '$Id$'
__author__ = 'bcfg-dev@mcs.anl.gov'
@@ -37,14 +42,26 @@ class Bundler(Bcfg2.Server.Plugin.Plugin,
self.encoding = core.encoding
self.__child__ = self.template_dispatch
try:
- Bcfg2.Server.Plugin.XMLDirectoryBacked.__init__(self, self.data, self.core.fam)
+ Bcfg2.Server.Plugin.XMLDirectoryBacked.__init__(self,
+ self.data,
+ self.core.fam)
except OSError:
self.logger.error("Failed to load Bundle repository")
raise Bcfg2.Server.Plugin.PluginInitError
def template_dispatch(self, name):
+ bundle = lxml.etree.parse(name)
+ nsmap = bundle.getroot().nsmap
if name.endswith('.xml'):
- return BundleFile(name)
+ 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 have_genshi:
spec = Bcfg2.Server.Plugin.Specificity()
diff --git a/src/lib/Server/Plugins/Cfg.py b/src/lib/Server/Plugins/Cfg.py
index e22102ffa..f851b7914 100644
--- a/src/lib/Server/Plugins/Cfg.py
+++ b/src/lib/Server/Plugins/Cfg.py
@@ -174,23 +174,15 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet):
metadata_updates.update(self.metadata)
for attr in badattr:
metadata_updates[attr] = new_entry.get(attr)
- if self.infoxml:
- infoxml = lxml.etree.Element('FileInfo')
- infotag = lxml.etree.SubElement(infoxml, 'Info')
- [infotag.attrib.__setitem__(attr, metadata_updates[attr]) \
- for attr in metadata_updates]
- ofile = open(self.path + "/info.xml","w")
- ofile.write(lxml.etree.tostring(infoxml, pretty_print=True))
- ofile.close()
- if log:
- logger.info("Wrote file %s" % (self.path + "/info.xml"))
- else:
- infofile = open(self.path + '/:info', 'w')
- for x in metadata_updates.iteritems():
- infofile.write("%s: %s\n" % x)
- infofile.close()
- if log:
- logger.info("Wrote file %s" % infofile.name)
+ infoxml = lxml.etree.Element('FileInfo')
+ infotag = lxml.etree.SubElement(infoxml, 'Info')
+ [infotag.attrib.__setitem__(attr, metadata_updates[attr]) \
+ for attr in metadata_updates]
+ ofile = open(self.path + "/info.xml","w")
+ ofile.write(lxml.etree.tostring(infoxml, pretty_print=True))
+ ofile.close()
+ if log:
+ logger.info("Wrote file %s" % (self.path + "/info.xml"))
class Cfg(Bcfg2.Server.Plugin.GroupSpool,
Bcfg2.Server.Plugin.PullTarget):
diff --git a/src/lib/Server/Reports/settings.py b/src/lib/Server/Reports/settings.py
index 9efe38552..66da7a8b1 100644
--- a/src/lib/Server/Reports/settings.py
+++ b/src/lib/Server/Reports/settings.py
@@ -81,7 +81,6 @@ SECRET_KEY = 'eb5+y%oy-qx*2+62vv=gtnnxg1yig_odu0se5$h0hh#pc*lmo7'
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
- 'django.template.loaders.eggs.load_template_source',
)
MIDDLEWARE_CLASSES = (