diff options
author | Jack Neely <jjneely@ncsu.edu> | 2011-03-03 15:41:10 -0500 |
---|---|---|
committer | Jack Neely <jjneely@ncsu.edu> | 2011-03-03 15:41:10 -0500 |
commit | 821a6d5c9244af924146c2e7d4caa0939885a84f (patch) | |
tree | 14d5d99bc7a60492361bbf600604865e52d361a1 /src/lib/Server | |
parent | 81fce09fb9671c652703c37a5f9b48d020a34307 (diff) | |
parent | 73a4e8648c501437b3b1f4bd95e9c4023da9b681 (diff) | |
download | bcfg2-821a6d5c9244af924146c2e7d4caa0939885a84f.tar.gz bcfg2-821a6d5c9244af924146c2e7d4caa0939885a84f.tar.bz2 bcfg2-821a6d5c9244af924146c2e7d4caa0939885a84f.zip |
Merge branch 'master' into yumng
Diffstat (limited to 'src/lib/Server')
-rw-r--r-- | src/lib/Server/Plugins/Bundler.py | 23 | ||||
-rw-r--r-- | src/lib/Server/Plugins/Cfg.py | 26 | ||||
-rw-r--r-- | src/lib/Server/Reports/settings.py | 1 |
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 = ( |