summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2013-03-10 22:28:57 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2018-10-18 16:19:12 +0200
commit9c9d93594ebbc0079e923f881094ccf49fe08a9c (patch)
tree192c4e56b90ec19f15d154f351c62a0b30a3000a
parentf84227739d1bdf46f87a21b2f81608db3c8a3e17 (diff)
downloadbcfg2-9c9d93594ebbc0079e923f881094ccf49fe08a9c.tar.gz
bcfg2-9c9d93594ebbc0079e923f881094ccf49fe08a9c.tar.bz2
bcfg2-9c9d93594ebbc0079e923f881094ccf49fe08a9c.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 59a061868..0d3eebe8b 100644
--- a/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
@@ -506,21 +506,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 "