From 7d4325f5e12a40b5b8ae8fc85a4e934b94dd1adf Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Thu, 3 Nov 2011 09:15:12 -0400 Subject: added support for default/mandatory/optional package groups --- src/sbin/bcfg2-yum-helper | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'src/sbin/bcfg2-yum-helper') diff --git a/src/sbin/bcfg2-yum-helper b/src/sbin/bcfg2-yum-helper index 1fb7c8891..e0ba02382 100755 --- a/src/sbin/bcfg2-yum-helper +++ b/src/sbin/bcfg2-yum-helper @@ -105,22 +105,34 @@ class DepSolver(object): self.get_package_name(required)) return prov - def get_group(self, group): + def get_group(self, group, ptype="default"): if group.startswith("@"): group = group[1:] try: if self.yumbase.comps.has_group(group): - pkgs = self.yumbase.comps.return_group(group).packages + group = self.yumbase.comps.return_group(group) else: logger.warning("Packages: '%s' is not a valid group" % group) - pkgs = [] + return [] except yum.Errors.GroupsError: err = sys.exc_info()[1] logger.warning("Packages: %s" % err) - pkgs = [] - - return pkgs + return [] + + if ptype == "default": + return [p + for p, d in list(group.default_packages.items()) + if d] + elif ptype == "mandatory": + return [p + for p, m in list(group.mandatory_packages.items()) + if m] + elif ptype == "optional" or ptype == "all": + return group.packages + else: + logger.warning("Unknown group package type '%s'" % ptype) + return [] def _filter_provides(self, package, providers): providers = [pkg for pkg in self._filter_arch(providers)] @@ -300,9 +312,16 @@ def main(): elif cmd == "is_virtual_package": package = json.loads(sys.stdin.read()) print json.dumps(bool(depsolver.get_provides(package, silent=True))) - elif (cmd == "get_deps" or cmd == "get_provides" or cmd == "get_group"): + elif cmd == "get_deps" or cmd == "get_provides": package = json.loads(sys.stdin.read()) print json.dumps(list(getattr(depsolver, cmd)(package))) + elif cmd == "get_group": + data = json.loads(sys.stdin.read()) + if "type" in data: + packages = depsolver.get_group(data['group'], ptype=data['type']) + else: + packages = depsolver.get_group(data['group']) + print json.dumps(list(packages)) elif cmd == "is_package": package = json.loads(sys.stdin.read()) print json.dumps(getattr(depsolver, cmd)(package)) -- cgit v1.2.3-1-g7c22