diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2013-03-12 03:47:56 +0100 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2013-03-12 03:47:56 +0100 |
commit | f2c410e72b7bc54be0dcb3f88ae9f06a9934ceaf (patch) | |
tree | 508bb88438d97ee6369199a842c56b5138514a60 /src/lib/Server | |
parent | af94542b8d938dd931c07d439e9eb6437aab38bf (diff) | |
download | bcfg2-f2c410e72b7bc54be0dcb3f88ae9f06a9934ceaf.tar.gz bcfg2-f2c410e72b7bc54be0dcb3f88ae9f06a9934ceaf.tar.bz2 bcfg2-f2c410e72b7bc54be0dcb3f88ae9f06a9934ceaf.zip |
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).
Diffstat (limited to 'src/lib/Server')
-rw-r--r-- | src/lib/Server/Plugins/Packages/Collection.py | 18 | ||||
-rw-r--r-- | src/lib/Server/Plugins/Packages/__init__.py | 2 |
2 files changed, 19 insertions, 1 deletions
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() |