summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2013-03-10 22:28:57 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2015-05-10 16:25:27 +0200
commita7d91adc6613ef43b6ab2cace17eb200625b5da6 (patch)
tree493ed9a98f8d2fe15073f56684867ecdbd59c49d
parent2ab4e18d5f2f0caabc60d4aa44e8f9026be79196 (diff)
downloadbcfg2-a7d91adc6613ef43b6ab2cace17eb200625b5da6.tar.gz
bcfg2-a7d91adc6613ef43b6ab2cace17eb200625b5da6.tar.bz2
bcfg2-a7d91adc6613ef43b6ab2cace17eb200625b5da6.zip
Plugins/Packages/Collection: add cclass marker for Sources
The classes of Sources could now specify another class for the Collection container. One host could only use one Collection class at a time. So all different Sources have to reference the same Collection. If no "cclass" is defined in the Sources class, the collection class name is generated by striping the "Source" string from the Sources class name like before.
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/__init__.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py b/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
index 4dd5fcd1d..d1d937deb 100644
--- a/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
@@ -552,21 +552,23 @@ class Packages(Bcfg2.Server.Plugin.Plugin,
for source in self.sources.entries:
if source.applies(metadata):
relevant.append(source)
- sclasses.update([source.__class__])
+ if 'cclass' in dir(source):
+ sclasses.update([source.cclass])
+ else:
+ sclass = source.__class__.__name__.replace("Source", "")
+ sclasses.update([sclass])
if len(sclasses) > 1:
self.logger.warning("Packages: Multiple source types found for "
"%s: %s" %
- (metadata.hostname,
- ",".join([s.__name__ for s in sclasses])))
+ (metadata.hostname, ",".join([sclasses])))
cclass = Collection
elif len(sclasses) == 0:
self.logger.error("Packages: No sources found for %s" %
metadata.hostname)
cclass = Collection
else:
- cclass = get_collection_class(
- sclasses.pop().__name__.replace("Source", ""))
+ cclass = get_collection_class(sclasses.pop())
if self.debug_flag:
self.logger.error("Packages: Using %s for Collection of sources "