From f2c410e72b7bc54be0dcb3f88ae9f06a9934ceaf Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 12 Mar 2013 03:47:56 +0100 Subject: Plugins/Packages: backported get_new_packages 1.3.0 uses get_new_packages to calculate the differencies between the configured packages and all packages with deps. This could be overwritten if some plugin for Packages needs to do something special (e.g. if the names of the packages are specialized during dependency calculation). --- src/lib/Server/Plugins/Packages/Collection.py | 18 ++++++++++++++++++ src/lib/Server/Plugins/Packages/__init__.py | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src/lib/Server/Plugins') diff --git a/src/lib/Server/Plugins/Packages/Collection.py b/src/lib/Server/Plugins/Packages/Collection.py index f5e5bbe02..269ce90f5 100644 --- a/src/lib/Server/Plugins/Packages/Collection.py +++ b/src/lib/Server/Plugins/Packages/Collection.py @@ -191,6 +191,24 @@ class Collection(Bcfg2.Server.Plugin.Debuggable): default="auto"), type=self.ptype, origin='Packages') + def get_new_packages(self, initial, complete): + """ Compute the difference between the complete package list + (as returned by :func:`complete`) and the initial package list + computed from the specification. This is necessary because + the format may be different between the two lists due to + :func:`packages_to_entry` and :func:`packages_from_entry`. See + :ref:`pkg-objects` for more details. + + :param initial: The initial package list + :type initial: set of strings, but see :ref:`pkg-objects` + :param complete: The final package list + :type complete: set of strings, but see :ref:`pkg-objects` + :return: set of strings, but see :ref:`pkg-objects` - the set + of packages that are in ``complete`` but not in + ``initial`` + """ + return list(complete.difference(initial)) + def complete(self, packagelist, pinnings=None, recommended=None): '''Build the transitive closure of all package dependencies diff --git a/src/lib/Server/Plugins/Packages/__init__.py b/src/lib/Server/Plugins/Packages/__init__.py index d998f1c8b..66b597bd6 100644 --- a/src/lib/Server/Plugins/Packages/__init__.py +++ b/src/lib/Server/Plugins/Packages/__init__.py @@ -185,7 +185,7 @@ class Packages(Bcfg2.Server.Plugin.Plugin, if unknown: self.logger.info("Packages: Got %d unknown entries" % len(unknown)) self.logger.info("Packages: %s" % list(unknown)) - newpkgs = list(packages.difference(initial)) + newpkgs = collection.get_new_packages(initial, packages) self.debug_log("Packages: %d initial, %d complete, %d new" % (len(initial), len(packages), len(newpkgs))) newpkgs.sort() -- cgit v1.2.3-1-g7c22