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.
This commit is contained in:
Jan Kaluza
2019-07-09 09:51:12 +02:00
parent 95febc2e1b
commit 8301aeb9eb
3 changed files with 10 additions and 26 deletions

View File

@@ -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]

View File

@@ -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

View File

@@ -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.