diff options
author | Narayan Desai <desai@mcs.anl.gov> | 2009-01-15 03:11:16 +0000 |
---|---|---|
committer | Narayan Desai <desai@mcs.anl.gov> | 2009-01-15 03:11:16 +0000 |
commit | da1065ef071514f97d6bfbe104bd1040503da4aa (patch) | |
tree | b148ce4c4facc7e6dcfd4f8ef961b33f94e30df2 /src/lib/Server/Plugins/GBundler.py | |
parent | 6b0fd34ab8c5e4f76835eb5d59a57ec3337cbeb0 (diff) | |
download | bcfg2-da1065ef071514f97d6bfbe104bd1040503da4aa.tar.gz bcfg2-da1065ef071514f97d6bfbe104bd1040503da4aa.tar.bz2 bcfg2-da1065ef071514f97d6bfbe104bd1040503da4aa.zip |
add GBundler plugin (like SGenshi, but works like Bundler)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5025 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Plugins/GBundler.py')
-rw-r--r-- | src/lib/Server/Plugins/GBundler.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/lib/Server/Plugins/GBundler.py b/src/lib/Server/Plugins/GBundler.py new file mode 100644 index 000000000..309f04b3e --- /dev/null +++ b/src/lib/Server/Plugins/GBundler.py @@ -0,0 +1,38 @@ + +import logging, re +import SGenshi + +pattern = '(.*/)?(\S+)\.xml(\.((H_(?P<hostname>\S+))|' +pattern += '(G(?P<prio>\d+)_(?P<group>\S+))))?$' + +matcher = re.compile(pattern) + +logger = logging.getLogger('GBundler') + +class GBundlerEntrySet(SGenshi.SGenshiEntrySet): + def BuildStructures(self, metadata): + '''Build SGenshi structures''' + ret = [] + found = [] + build = [] + matching = self.get_matching(metadata) + matching.sort(lambda x,y: cmp(x.specific, y.specific)) + for entry in matching[:]: + rem = matcher.match(entry.name) + bname = rem.group(2) + if bname in metadata.bundles and bname not in found: + found.append(bname) + build.append(entry) + + for entry in build: + try: + ret.append(entry.get_xml_value(metadata)) + except genshi.template.TemplateError, terror: + logger.error('Genshi template error: %s' % terror) + logger.error("GBundler: Failed to template file %s" % entry.name) + return ret + +class GBundler(GBundlerEntrySet, SGenshi.SGenshi): + name = 'GBundler' + __version__ = '$Revision: $' + |