summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugins/Packages
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2011-11-03 09:15:12 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2011-11-17 08:13:20 -0500
commit7d4325f5e12a40b5b8ae8fc85a4e934b94dd1adf (patch)
treeb7f0b4beedb1331347ea639b7a70c3c08dd3343e /src/lib/Server/Plugins/Packages
parent2e1e5c6283a16937c02204d4551bd20c29849a11 (diff)
downloadbcfg2-7d4325f5e12a40b5b8ae8fc85a4e934b94dd1adf.tar.gz
bcfg2-7d4325f5e12a40b5b8ae8fc85a4e934b94dd1adf.tar.bz2
bcfg2-7d4325f5e12a40b5b8ae8fc85a4e934b94dd1adf.zip
added support for default/mandatory/optional package groups
Diffstat (limited to 'src/lib/Server/Plugins/Packages')
-rw-r--r--src/lib/Server/Plugins/Packages/Collection.py4
-rw-r--r--src/lib/Server/Plugins/Packages/Source.py2
-rw-r--r--src/lib/Server/Plugins/Packages/Yum.py8
-rw-r--r--src/lib/Server/Plugins/Packages/__init__.py8
4 files changed, 14 insertions, 8 deletions
diff --git a/src/lib/Server/Plugins/Packages/Collection.py b/src/lib/Server/Plugins/Packages/Collection.py
index c303134fe..2d9cd8a09 100644
--- a/src/lib/Server/Plugins/Packages/Collection.py
+++ b/src/lib/Server/Plugins/Packages/Collection.py
@@ -69,9 +69,9 @@ class Collection(object):
cachefiles.add(source.cachefile)
return list(cachefiles)
- def get_group(self, group):
+ def get_group(self, group, ptype=None):
for source in self.sources:
- pkgs = source.get_group(self.metadata, group)
+ pkgs = source.get_group(self.metadata, group, ptype=ptype)
if pkgs:
return pkgs
self.logger.warning("Packages: '%s' is not a valid group" % group)
diff --git a/src/lib/Server/Plugins/Packages/Source.py b/src/lib/Server/Plugins/Packages/Source.py
index 1f0cd8e96..72c7a4bfd 100644
--- a/src/lib/Server/Plugins/Packages/Source.py
+++ b/src/lib/Server/Plugins/Packages/Source.py
@@ -241,7 +241,7 @@ class Source(object):
def get_package(self, metadata, package):
return package
- def get_group(self, metadata, package):
+ def get_group(self, metadata, group, ptype=None):
return []
def magic_groups_match(self, metadata):
diff --git a/src/lib/Server/Plugins/Packages/Yum.py b/src/lib/Server/Plugins/Packages/Yum.py
index a7a066634..369b7a7d2 100644
--- a/src/lib/Server/Plugins/Packages/Yum.py
+++ b/src/lib/Server/Plugins/Packages/Yum.py
@@ -317,16 +317,16 @@ class YumCollection(Collection):
# for API completeness
return self.call_helper("get_provides", package)
- def get_group(self, group):
+ def get_group(self, group, ptype="default"):
if not self.use_yum:
- self.logger.warning("Packages: Package groups are not supported by Bcfg2's "
- "internal Yum dependency generator")
+ self.logger.warning("Packages: Package groups are not supported by "
+ "Bcfg2's internal Yum dependency generator")
return []
if group.startswith("@"):
group = group[1:]
- pkgs = self.call_helper("get_group", group)
+ pkgs = self.call_helper("get_group", dict(group=group, type=ptype))
return pkgs
def complete(self, packagelist):
diff --git a/src/lib/Server/Plugins/Packages/__init__.py b/src/lib/Server/Plugins/Packages/__init__.py
index a8cade17d..5b1515920 100644
--- a/src/lib/Server/Plugins/Packages/__init__.py
+++ b/src/lib/Server/Plugins/Packages/__init__.py
@@ -138,8 +138,14 @@ class Packages(Bcfg2.Server.Plugin.Plugin,
initial.add(pkg.get("name"))
elif pkg.get("group"):
try:
- base.update(collection.get_group(pkg.get("group")))
+ if pkg.get("type"):
+ gpkgs = collection.get_group(pkg.get("group"),
+ ptype=pkg.get("type"))
+ else:
+ gpkgs = collection.get_group(pkg.get("group"))
+ base.update(gpkgs)
except TypeError:
+ raise
self.logger.error("Could not resolve group %s" %
pkg.get("group"))
to_remove.append(pkg)