summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2013-03-10 22:28:57 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2013-11-22 11:41:28 +0100
commit6c6eae9b88f2a75ec0a80248bc10e77a88336398 (patch)
tree9e50b0ce601a2980b202361bbcc8445aab324da5
parent0b0508bb4529268d01ab82d78b65d5d50b315c30 (diff)
downloadbcfg2-6c6eae9b88f2a75ec0a80248bc10e77a88336398.tar.gz
bcfg2-6c6eae9b88f2a75ec0a80248bc10e77a88336398.tar.bz2
bcfg2-6c6eae9b88f2a75ec0a80248bc10e77a88336398.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 260fc9a5a..c38852b57 100644
--- a/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
@@ -599,21 +599,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 "