diff --git a/module_build_service/builder/KojiModuleBuilder.py b/module_build_service/builder/KojiModuleBuilder.py index 2db0fe5a..b8044519 100644 --- a/module_build_service/builder/KojiModuleBuilder.py +++ b/module_build_service/builder/KojiModuleBuilder.py @@ -31,7 +31,6 @@ from module_build_service.common.koji import ( ) from module_build_service.common.retry import retry from module_build_service.scheduler import events -from module_build_service.scheduler.db_session import db_session from module_build_service.scheduler.reuse import get_reusable_components, get_reusable_module logging.basicConfig(level=logging.DEBUG) @@ -1167,20 +1166,14 @@ class KojiModuleBuilder(GenericBuilder): return weights @classmethod - def get_built_rpms_in_module_build(cls, mmd): + def get_built_rpms_in_module_build(cls, mmd, koji_tag): """ :param Modulemd mmd: Modulemd to get the built RPMs from. + :koji_tag str: koji_tag corresponding to the module :return: list of NVRs """ - build = models.ModuleBuild.get_build_from_nsvc( - db_session, - mmd.get_module_name(), - mmd.get_stream_name(), - mmd.get_version(), - mmd.get_context() - ) koji_session = get_session(conf, login=False) - rpms = koji_session.listTaggedRPMS(build.koji_tag, latest=True)[0] + rpms = koji_session.listTaggedRPMS(koji_tag, latest=True)[0] nvrs = set(kobo.rpmlib.make_nvr(rpm, force_epoch=True) for rpm in rpms) return list(nvrs) diff --git a/module_build_service/builder/MockModuleBuilder.py b/module_build_service/builder/MockModuleBuilder.py index 0cf5a1db..6d1d468c 100644 --- a/module_build_service/builder/MockModuleBuilder.py +++ b/module_build_service/builder/MockModuleBuilder.py @@ -753,24 +753,17 @@ class MockModuleBuilder(GenericBuilder): self._createrepo(include_module_yaml=True) @classmethod - def get_built_rpms_in_module_build(cls, mmd): + def get_built_rpms_in_module_build(cls, mmd, koji_tag): """ :param Modulemd mmd: Modulemd to get the built RPMs from. :return: list of NVRs """ - build = models.ModuleBuild.get_build_from_nsvc( - db_session, - mmd.get_module_name(), - mmd.get_stream_name(), - mmd.get_version(), - mmd.get_context() - ) - if build.koji_tag.startswith("repofile://"): + if koji_tag.startswith("repofile://"): # Modules from local repository have already the RPMs filled in mmd. return mmd.get_rpm_artifacts() else: koji_session = get_session(conf, login=False) - rpms = koji_session.listTaggedRPMS(build.koji_tag, latest=True)[0] + rpms = koji_session.listTaggedRPMS(koji_tag, latest=True)[0] nvrs = set(kobo.rpmlib.make_nvr(rpm, force_epoch=True) for rpm in rpms) return list(nvrs) diff --git a/module_build_service/builder/base.py b/module_build_service/builder/base.py index d122823b..2800b0f2 100644 --- a/module_build_service/builder/base.py +++ b/module_build_service/builder/base.py @@ -346,9 +346,10 @@ class GenericBuilder(six.with_metaclass(ABCMeta)): raise NotImplementedError() @classmethod - def get_built_rpms_in_module_build(cls, mmd): + def get_built_rpms_in_module_build(cls, mmd, koji_tag): """ :param Modulemd mmd: Modulemd to get the built RPMs from. + :koji_tag str: koji_tag corresponding to the module :return: list of NVRs """ raise NotImplementedError() diff --git a/module_build_service/scheduler/submit.py b/module_build_service/scheduler/submit.py index 06f4f2aa..f7af1f14 100644 --- a/module_build_service/scheduler/submit.py +++ b/module_build_service/scheduler/submit.py @@ -200,7 +200,7 @@ def record_filtered_rpms(mmd): filtered_rpms = [] rpm_filter = req_mmd.get_rpm_filters() if rpm_filter: - built_nvrs = builder.get_built_rpms_in_module_build(req_mmd) + built_nvrs = builder.get_built_rpms_in_module_build(req_mmd, req_data["koji_tag"]) for nvr in built_nvrs: parsed_nvr = kobo.rpmlib.parse_nvr(nvr) if parsed_nvr["name"] in rpm_filter: diff --git a/tests/staged_data/testmodule_init.yaml b/tests/staged_data/testmodule_init.yaml index 37195d0f..0a41c408 100644 --- a/tests/staged_data/testmodule_init.yaml +++ b/tests/staged_data/testmodule_init.yaml @@ -27,6 +27,7 @@ data: stream: f28 version: '3' context: '00000000' + koji_tag: module-f28-build api: rpms: - perl-Tangerine diff --git a/tests/test_builder/test_content_generator.py b/tests/test_builder/test_content_generator.py index 6eb4e39f..591d8fe4 100644 --- a/tests/test_builder/test_content_generator.py +++ b/tests/test_builder/test_content_generator.py @@ -947,7 +947,7 @@ class TestBuild: self.cg.module.modulemd = mmd_to_str(mmd) file_dir = self.cg._prepare_file_directory() with io.open(path.join(file_dir, "modulemd.src.txt"), encoding="utf-8") as mmd: - assert len(mmd.read()) == 1339 + assert len(mmd.read()) == 1385 def test_finalize_mmd_devel(self): self.cg.devel = True diff --git a/tests/test_builder/test_koji.py b/tests/test_builder/test_koji.py index 7f49c932..89cf6db2 100644 --- a/tests/test_builder/test_koji.py +++ b/tests/test_builder/test_koji.py @@ -776,9 +776,14 @@ class TestKojiBuilder: module_build.context = mmd.get_context() db_session.commit() - ret = KojiModuleBuilder.get_built_rpms_in_module_build(mmd) + ret = KojiModuleBuilder.get_built_rpms_in_module_build( + mmd, "module-testmodule-master-20170816080815-37c6c57" + ) assert set(ret) == {"bar-2:1.30-4.el8+1308+551bfa71", "tar-2:1.30-4.el8+1308+551bfa71"} session.assert_not_called() + assert session.listTaggedRPMS.mock_calls == [ + mock.call("module-testmodule-master-20170816080815-37c6c57", latest=True) + ] @pytest.mark.parametrize( "cg_enabled,cg_devel_enabled", [(False, False), (True, False), (True, True)]