From d4e45079dbe7a394ee5b862490a08f8909442144 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Thu, 1 Nov 2012 00:06:17 +0100 Subject: Packages: add priority to sources and sort according to it --- schemas/packages.xsd | 10 ++++++++++ src/lib/Bcfg2/Server/Plugins/Packages/PackagesSources.py | 2 ++ src/lib/Bcfg2/Server/Plugins/Packages/Source.py | 3 +++ 3 files changed, 15 insertions(+) diff --git a/schemas/packages.xsd b/schemas/packages.xsd index e538bb0e7..0fd3f6647 100644 --- a/schemas/packages.xsd +++ b/schemas/packages.xsd @@ -211,6 +211,16 @@ + + + + The priority of the source. This is used to order the + sources. After sorting, the first source, that could + deliver the package, is used. If not supplied the default + priority is 500. + + + diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/PackagesSources.py b/src/lib/Bcfg2/Server/Plugins/Packages/PackagesSources.py index c47e18201..b18db5baf 100644 --- a/src/lib/Bcfg2/Server/Plugins/Packages/PackagesSources.py +++ b/src/lib/Bcfg2/Server/Plugins/Packages/PackagesSources.py @@ -115,6 +115,8 @@ class PackagesSources(Bcfg2.Server.Plugin.StructFile, source = self.source_from_xml(xsource) if source is not None: self.entries.append(source) + sorted(self.entries, key=(lambda source: source.priority), + reverse=True) Index.__doc__ = Bcfg2.Server.Plugin.StructFile.Index.__doc__ + """ ``Index`` is responsible for calling :func:`source_from_xml` diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Source.py b/src/lib/Bcfg2/Server/Plugins/Packages/Source.py index 55d12c400..01f2a732f 100644 --- a/src/lib/Bcfg2/Server/Plugins/Packages/Source.py +++ b/src/lib/Bcfg2/Server/Plugins/Packages/Source.py @@ -209,6 +209,9 @@ class Source(Bcfg2.Server.Plugin.Debuggable): # pylint: disable=R0902 #: The "version" attribute from :attr:`xsource` self.version = xsource.get('version', '') + #: The "priority" attribute from :attr:`xsource` + self.priority = xsource.get('priority', 500) + #: A list of predicates that are used to determine if this #: source applies to a given #: :class:`Bcfg2.Server.Plugins.Metadata.ClientMetadata` -- cgit v1.2.3-1-g7c22