summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2013-03-10 23:07:22 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2013-05-02 11:02:38 +0200
commita9c1622339e1a2b6911c01705a492e5d4574561e (patch)
treef6f298efb7927a06246fb99dcbf392874999566a
parent14893730199bb559bc819571832b40cc6f22ebf7 (diff)
downloadbcfg2-a9c1622339e1a2b6911c01705a492e5d4574561e.tar.gz
bcfg2-a9c1622339e1a2b6911c01705a492e5d4574561e.tar.bz2
bcfg2-a9c1622339e1a2b6911c01705a492e5d4574561e.zip
Plugins/PkgVars: support multiple values per package
If multiple values specified for one package all values are joined together in a set.
-rw-r--r--debian/changelog3
-rw-r--r--src/lib/Server/Plugins/Packages/Collection.py4
-rw-r--r--src/lib/Server/Plugins/PkgVars.py10
3 files changed, 12 insertions, 5 deletions
diff --git a/debian/changelog b/debian/changelog
index 44c4a7eb2..fff49f123 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,6 @@
bcfg2 (1.2.3-11) UNRELEASED; urgency=low
+ * Plugins/PkgVars: support multiple values per package
* Plugins/Packages/Portage: add Packages Plugin for Portage
* Plugins/Packages/Collection: add cclass marker for Sources
* Plugins/Packages/Collection: add missing format string parameter
@@ -8,7 +9,7 @@ bcfg2 (1.2.3-11) UNRELEASED; urgency=low
* Plugins/Packages: backported packages_form_entry/_to_entry
* Plugins/PkgVars: new plugin to set various vars per package
- -- Alexander Sulfrian <alex@spline.inf.fu-berlin.de> Mon, 04 Feb 2013 21:32:13 +0100
+ -- Alexander Sulfrian <alex@spline.inf.fu-berlin.de> Sun, 10 Mar 2013 23:07:22 +0100
bcfg2 (1.2.3-9) unstable; urgency=low
diff --git a/src/lib/Server/Plugins/Packages/Collection.py b/src/lib/Server/Plugins/Packages/Collection.py
index 2e5ff450b..6c34aa884 100644
--- a/src/lib/Server/Plugins/Packages/Collection.py
+++ b/src/lib/Server/Plugins/Packages/Collection.py
@@ -104,7 +104,7 @@ class Collection(Bcfg2.Server.Plugin.Debuggable):
recommended = recs[package]
for source in self.sources:
- if pin_source and pin_source != source.name:
+ if pin_source and source.name not in pin_source:
continue
pin_found = True
@@ -113,7 +113,7 @@ class Collection(Bcfg2.Server.Plugin.Debuggable):
if not pin_found:
self.logger.error("Packages: Source '%s' for package '%s' not found" %
- (pin_source, package))
+ (' or '.join(pin_source), package))
return []
def get_provides(self, package):
diff --git a/src/lib/Server/Plugins/PkgVars.py b/src/lib/Server/Plugins/PkgVars.py
index 2bf1b158a..40582bcb3 100644
--- a/src/lib/Server/Plugins/PkgVars.py
+++ b/src/lib/Server/Plugins/PkgVars.py
@@ -19,7 +19,12 @@ class PkgVarsFile(Bcfg2.Server.Plugin.StructFile):
for v in vars:
value = d.get(v, None)
if value:
- results[v][name] = value
+ if v not in results:
+ results[v] = {}
+ if name not in results[v]:
+ results[v][name] = set()
+
+ results[v][name].add(value)
return results
@@ -35,7 +40,8 @@ class PkgVarsDirectoryBacked(Bcfg2.Server.Plugin.DirectoryBacked):
for files in self.entries:
new = self.entries[files].get_additional_data(meta)
for x in vars:
- results[x].update(new[x])
+ if x in new:
+ results[x].update(new[x])
return results