summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Bundler.py
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2014-11-25 00:51:23 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2014-11-25 16:00:48 +0100
commitbe564316c7c4deaad090bfc0bc79c460965cb1d6 (patch)
tree38c7ab16fc403d8d067cdae1f91fcc3d9af07317 /src/lib/Bcfg2/Server/Plugins/Bundler.py
parentc544b18a985edd7444593e75ad52483f4842c119 (diff)
downloadbcfg2-be564316c7c4deaad090bfc0bc79c460965cb1d6.tar.gz
bcfg2-be564316c7c4deaad090bfc0bc79c460965cb1d6.tar.bz2
bcfg2-be564316c7c4deaad090bfc0bc79c460965cb1d6.zip
Bundler: add modification support to Bundle dependencies
Bundle dependencies are now realized with RequiredBundle and support inheritance of the modification flag. This requires new client support and will only work with clients >= 1.4.0pre2.
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Bundler.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Bundler.py27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Bundler.py b/src/lib/Bcfg2/Server/Plugins/Bundler.py
index 41ee57b6d..4945bf85b 100644
--- a/src/lib/Bcfg2/Server/Plugins/Bundler.py
+++ b/src/lib/Bcfg2/Server/Plugins/Bundler.py
@@ -8,6 +8,7 @@ import fnmatch
import lxml.etree
from Bcfg2.Server.Plugin import StructFile, Plugin, Structure, \
StructureValidator, XMLDirectoryBacked, Generator
+from Bcfg2.version import Bcfg2VersionInfo
from genshi.template import TemplateError
@@ -116,17 +117,35 @@ class Bundler(Plugin,
for el in child.getchildren():
data.append(el)
data.remove(child)
- elif child.get("name"):
+ else:
+ # no children -- wat
+ self.logger.warning("Bundler: Useless empty Bundle tag "
+ "in %s" % self.name)
+ data.remove(child)
+
+ for child in data.findall('RequiredBundle'):
+ if child.get("name"):
# dependent bundle -- add it to the list of
# bundles for this client
if child.get("name") not in bundles_added:
bundles.append(child.get("name"))
bundles_added.add(child.get("name"))
+ if child.get('modification', 'ignore') == 'inherit':
+ if metadata.version_info >= \
+ Bcfg2VersionInfo('1.4.0pre2'):
+ lxml.etree.SubElement(data, 'Bundle',
+ name=child.get('name'))
+ else:
+ self.logger.warning(
+ 'Bundler: modification="inherit" is only '
+ 'supported for clients starting 1.4.0pre2')
data.remove(child)
else:
- # neither name or children -- wat
- self.logger.warning("Bundler: Useless empty Bundle tag "
- "in %s" % self.name)
+ # no name -- wat
+ self.logger.warning('Bundler: Missing required name in '
+ 'RequiredBundle tag in %s' %
+ self.name)
data.remove(child)
+
bundleset.append(data)
return bundleset