summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2013-03-10 22:28:57 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2013-06-29 16:28:46 +0200
commit3cb370a870d7ed64db8e62da83561001ebe6c275 (patch)
tree008ee61ceff46f6a034798cae9cd0da5d6d668b5
parentd2c39934289e0f1a1a18f4658df63068c049e3a9 (diff)
downloadbcfg2-3cb370a870d7ed64db8e62da83561001ebe6c275.tar.gz
bcfg2-3cb370a870d7ed64db8e62da83561001ebe6c275.tar.bz2
bcfg2-3cb370a870d7ed64db8e62da83561001ebe6c275.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 40afd2690..3420735dd 100644
--- a/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
@@ -514,21 +514,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 "