summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugins/Packages/Collection.py
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2013-03-10 22:28:57 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2013-05-02 10:02:02 +0200
commit3ed39a70d21fc25d5f9c1419e4c74e5cad557741 (patch)
treee8942326558d6b256af7897c353b6c3bbff92674 /src/lib/Server/Plugins/Packages/Collection.py
parent9d9bcd09c48dc47d8c819ab7840f94a9f8f82451 (diff)
downloadbcfg2-3ed39a70d21fc25d5f9c1419e4c74e5cad557741.tar.gz
bcfg2-3ed39a70d21fc25d5f9c1419e4c74e5cad557741.tar.bz2
bcfg2-3ed39a70d21fc25d5f9c1419e4c74e5cad557741.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.
Diffstat (limited to 'src/lib/Server/Plugins/Packages/Collection.py')
-rw-r--r--src/lib/Server/Plugins/Packages/Collection.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/lib/Server/Plugins/Packages/Collection.py b/src/lib/Server/Plugins/Packages/Collection.py
index f417a6c54..2e5ff450b 100644
--- a/src/lib/Server/Plugins/Packages/Collection.py
+++ b/src/lib/Server/Plugins/Packages/Collection.py
@@ -374,12 +374,15 @@ def factory(metadata, sources, basepath, debug=False):
for source in sources:
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:
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:
# you'd think this should be a warning, but it happens all the
@@ -393,7 +396,7 @@ def factory(metadata, sources, basepath, debug=False):
metadata.hostname)
cclass = Collection
else:
- stype = sclasses.pop().__name__.replace("Source", "")
+ stype = sclasses.pop()
try:
module = \
getattr(__import__("Bcfg2.Server.Plugins.Packages.%s" %