From 8301aeb9eb461b4637b241b22de4a3690e9dd862 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Tue, 9 Jul 2019 09:51:12 +0200 Subject: [PATCH] Return the latest base module in case stream_version_lte is used, but stream is not in x.y.z format. This seems to be better behaviour than simply rejecting the module build completely. MBS still shows warning in the log that it cannot find any compatible module, but the build continues with the base module requested in the submitted modulemd. --- module_build_service/resolver/DBResolver.py | 25 +++++++-------------- module_build_service/resolver/base.py | 9 +------- module_build_service/utils/mse.py | 2 +- 3 files changed, 10 insertions(+), 26 deletions(-) diff --git a/module_build_service/resolver/DBResolver.py b/module_build_service/resolver/DBResolver.py index ba6f59ed..e1f23d4a 100644 --- a/module_build_service/resolver/DBResolver.py +++ b/module_build_service/resolver/DBResolver.py @@ -86,14 +86,7 @@ class DBResolver(GenericResolver): if module: return load_mmd(module.modulemd) - def get_module_modulemds( - self, - name, - stream, - version=None, - context=None, - strict=False, - ): + def get_module_modulemds(self, name, stream, version=None, context=None, strict=False): """ Gets the module modulemds from the resolver. :param name: a string of the module's name @@ -149,20 +142,18 @@ class DBResolver(GenericResolver): """ builds = [] with models.make_session(self.config) as session: + stream_version = None if stream_version_lte: stream_in_xyz_format = len(str(models.ModuleBuild.get_stream_version( stream, right_pad=False))) >= 5 - if not stream_in_xyz_format: + if stream_in_xyz_format: + stream_version = models.ModuleBuild.get_stream_version(stream) + else: log.warning( - "Cannot get compatible base modules, because stream_version_let is used, " + "Cannot get compatible base modules, because stream_version_lte is used, " "but stream %r is not in x.y.z format." % stream) - return [] - stream_version = models.ModuleBuild.get_stream_version(stream) - builds = models.ModuleBuild.get_last_builds_in_stream_version_lte( - session, name, stream_version, virtual_streams, states) - else: - builds = models.ModuleBuild.get_last_builds_in_stream_version_lte( - session, name, None, virtual_streams, states) + builds = models.ModuleBuild.get_last_builds_in_stream_version_lte( + session, name, stream_version, virtual_streams, states) return [build.mmd() for build in builds] diff --git a/module_build_service/resolver/base.py b/module_build_service/resolver/base.py index 7f8dbb6a..db4e0606 100644 --- a/module_build_service/resolver/base.py +++ b/module_build_service/resolver/base.py @@ -111,14 +111,7 @@ class GenericResolver(six.with_metaclass(ABCMeta)): raise NotImplementedError() @abstractmethod - def get_module_modulemds( - self, - name, - stream, - version=None, - context=None, - strict=False - ): + def get_module_modulemds(self, name, stream, version=None, context=None, strict=False): raise NotImplementedError() @abstractmethod diff --git a/module_build_service/utils/mse.py b/module_build_service/utils/mse.py index b9b427ec..20740391 100644 --- a/module_build_service/utils/mse.py +++ b/module_build_service/utils/mse.py @@ -340,7 +340,7 @@ def get_mmds_required_by_module_recursively( mmds.setdefault(ns, []) mmds[ns].append(base_module) - # The currently submitted module build must be build only against "ready" base modules, + # The currently submitted module build must be built only against "ready" base modules, # but its dependencies might have been built against some old platform which is already # EOL ("garbage" state). In order to find such old module builds, we need to include # also EOL platform streams.