diff --git a/module_build_service/scheduler/default_modules.py b/module_build_service/scheduler/default_modules.py
index 2225878..2bced95 100644
--- a/module_build_service/scheduler/default_modules.py
+++ b/module_build_service/scheduler/default_modules.py
@@ -84,22 +84,23 @@ def add_default_modules(db_session, mmd, arches):
)
continue
- try:
- # We are reusing resolve_requires instead of directly querying the database since it
- # provides the exact format that is needed for mbs.xmd.buildrequires.
- #
- # Only one default module is processed at a time in resolve_requires so that we
- # are aware of which modules are not in the database, and can add those that are as
- # buildrequires.
- resolver = GenericResolver.create(db_session, conf)
- resolved = resolver.resolve_requires([ns])
- except UnprocessableEntity:
+ # Query for the latest default module that was built against this base module
+ resolver = GenericResolver.create(db_session, conf)
+ default_module_mmds = resolver.get_buildrequired_modulemds(name, stream, bm_mmd)
+ if not default_module_mmds:
log.warning(
"The default module %s from %s is not in the database and couldn't be added as "
"a buildrequire",
ns, bm_nsvc,
)
continue
+ # Since a default module entry only has the name and stream, there's no way to know
+ # which context to pick from if multiple are present. In this case, just pick the first
+ # one, which is the latest version but potentially a random context.
+ default_module_mmd = default_module_mmds[0]
+ # Use resolve_requires since it provides the exact format that is needed for
+ # mbs.xmd.buildrequires
+ resolved = resolver.resolve_requires([default_module_mmd.get_nsvc()])
nsvc = ":".join([name, stream, resolved[name]["version"], resolved[name]["context"]])
log.info("Adding the default module %s as a buildrequire", nsvc)
diff --git a/tests/test_scheduler/test_default_modules.py b/tests/test_scheduler/test_default_modules.py
index 5e8f288..46d53f7 100644
--- a/tests/test_scheduler/test_default_modules.py
+++ b/tests/test_scheduler/test_default_modules.py
@@ -21,8 +21,6 @@ def test_add_default_modules(mock_get_dm, mock_hc, db_session):
Test that default modules present in the database are added, and the others are ignored.
"""
clean_database()
- make_module_in_db("python:3:12345:1", db_session=db_session)
- make_module_in_db("nodejs:11:2345:2", db_session=db_session)
mmd = load_mmd(read_staged_data("formatted_testmodule.yaml"))
xmd_brs = mmd.get_xmd()["mbs"]["buildrequires"]
assert set(xmd_brs.keys()) == {"platform"}
@@ -40,6 +38,9 @@ def test_add_default_modules(mock_get_dm, mock_hc, db_session):
platform_xmd["mbs"]["use_default_modules"] = True
platform_mmd.set_xmd(platform_xmd)
platform.modulemd = mmd_to_str(platform_mmd)
+
+ make_module_in_db("python:3:12345:1", base_module=platform, db_session=db_session)
+ make_module_in_db("nodejs:11:2345:2", base_module=platform, db_session=db_session)
db_session.commit()
mock_get_dm.return_value = {