mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-04 03:08:21 +08:00
Fix filters generation
This commit is contained in:
@@ -1071,6 +1071,17 @@ chmod 644 %buildroot/etc/rpm/macros.zz-modules
|
||||
|
||||
return weights
|
||||
|
||||
@classmethod
|
||||
def get_built_rpms_in_module_build(cls, build):
|
||||
"""
|
||||
:param ModuleBuild build: Module build to get the built RPMs from.
|
||||
:return: list of NVRs
|
||||
"""
|
||||
koji_session = KojiModuleBuilder.get_session(conf, None)
|
||||
rpms = koji_session.listTaggedRPMS(build.koji_tag, latest=True)[0]
|
||||
nvrs = set(kobo.rpmlib.make_nvr(rpm, force_epoch=True) for rpm in rpms)
|
||||
return list(nvrs)
|
||||
|
||||
def finalize(self):
|
||||
# Only import to koji CG if the module is "done".
|
||||
if self.config.koji_enable_content_generator and self.module.state == 3:
|
||||
|
||||
@@ -336,6 +336,14 @@ class GenericBuilder(six.with_metaclass(ABCMeta)):
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
@classmethod
|
||||
def get_built_rpms_in_module_build(cls, build):
|
||||
"""
|
||||
:param ModuleBuild build: Module build to get the built RPMs from.
|
||||
:return: list of NVRs
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
@classmethod
|
||||
def recover_orphaned_artifact(cls, component_build):
|
||||
"""
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
# SOFTWARE.
|
||||
#
|
||||
# Written by Matt Prahl <mprahl@redhat.com>
|
||||
# Jan Kaluza <jkaluza@redhat.com>
|
||||
|
||||
import kobo.rpmlib
|
||||
|
||||
from module_build_service import log
|
||||
from module_build_service.resolver.base import GenericResolver
|
||||
@@ -177,6 +180,7 @@ class DBResolver(GenericResolver):
|
||||
:param requires: a dictionary with the module name as the key and the stream as the value
|
||||
:return: a dictionary
|
||||
"""
|
||||
from module_build_service.builder import GenericBuilder
|
||||
new_requires = {}
|
||||
with models.make_session(self.config) as session:
|
||||
for nsvc in requires:
|
||||
@@ -236,9 +240,12 @@ class DBResolver(GenericResolver):
|
||||
# Find out the particular NVR of filtered packages
|
||||
rpm_filter = mmd.get_rpm_filter()
|
||||
if rpm_filter and rpm_filter.get():
|
||||
for rpm in build.component_builds:
|
||||
if rpm.package in rpm_filter.get():
|
||||
filtered_rpms.append(rpm.nvr)
|
||||
rpm_filter = rpm_filter.get()
|
||||
built_nvrs = GenericBuilder.get_built_rpms_in_module_build(build)
|
||||
for nvr in built_nvrs:
|
||||
parsed_nvr = kobo.rpmlib.parse_nvr(nvr)
|
||||
if parsed_nvr["name"] in rpm_filter:
|
||||
filtered_rpms.append(nvr)
|
||||
|
||||
new_requires[module_name] = {
|
||||
'ref': commit_hash,
|
||||
|
||||
@@ -510,3 +510,23 @@ class TestKojiBuilder:
|
||||
else:
|
||||
expected_calls = []
|
||||
assert session.packageListBlock.mock_calls == expected_calls
|
||||
|
||||
@patch('module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session')
|
||||
def test_get_built_rpms_in_module_build(self, get_session):
|
||||
session = MagicMock()
|
||||
session.listTaggedRPMS.return_value = ([
|
||||
{'build_id': 735939, 'name': 'tar', 'extra': None, 'arch': 'ppc64le',
|
||||
'buildtime': 1533299221, 'id': 6021394, 'epoch': 2, 'version': '1.30',
|
||||
'metadata_only': False, 'release': '4.el8+1308+551bfa71',
|
||||
'buildroot_id': 4321122, 'payloadhash': '0621ab2091256d21c47dcac868e7fc2a',
|
||||
'size': 878684},
|
||||
{'build_id': 735939, 'name': 'bar', 'extra': None, 'arch': 'ppc64le',
|
||||
'buildtime': 1533299221, 'id': 6021394, 'epoch': 2, 'version': '1.30',
|
||||
'metadata_only': False, 'release': '4.el8+1308+551bfa71',
|
||||
'buildroot_id': 4321122, 'payloadhash': '0621ab2091256d21c47dcac868e7fc2a',
|
||||
'size': 878684}], [])
|
||||
get_session.return_value = session
|
||||
|
||||
ret = KojiModuleBuilder.get_built_rpms_in_module_build(self.module)
|
||||
assert set(ret) == set(
|
||||
['bar-2:1.30-4.el8+1308+551bfa71', 'tar-2:1.30-4.el8+1308+551bfa71'])
|
||||
|
||||
@@ -120,6 +120,37 @@ class TestDBModule:
|
||||
]
|
||||
assert set(result) == set(expected)
|
||||
|
||||
@patch("module_build_service.builder.base.GenericBuilder.get_built_rpms_in_module_build")
|
||||
def test_resolve_requires(self, built_rpms):
|
||||
build = models.ModuleBuild.query.get(2)
|
||||
mmd = build.mmd()
|
||||
filter_list = Modulemd.SimpleSet()
|
||||
filter_list.add("foo")
|
||||
filter_list.add("bar")
|
||||
mmd.set_rpm_filter(filter_list)
|
||||
build.modulemd = mmd.dumps()
|
||||
db.session.commit()
|
||||
|
||||
built_rpms.return_value = [
|
||||
"foo-0:2.4.48-3.el8+1308+551bfa71",
|
||||
"foo-debuginfo-0:2.4.48-3.el8+1308+551bfa71",
|
||||
"bar-0:2.5.48-3.el8+1308+551bfa71",
|
||||
"bar-debuginfo-0:2.5.48-3.el8+1308+551bfa71",
|
||||
"x-0:2.5.48-3.el8+1308+551bfa71",
|
||||
"x-debuginfo-0:2.5.48-3.el8+1308+551bfa71"]
|
||||
|
||||
resolver = mbs_resolver.GenericResolver.create(tests.conf, backend='db')
|
||||
result = resolver.resolve_requires([":".join([
|
||||
build.name, build.stream, build.version, build.context])])
|
||||
|
||||
assert result == {
|
||||
'testmodule': {
|
||||
'stream': 'master', 'version': '20170109091357', 'context': u'78e4a6fd',
|
||||
'ref': 'ff1ea79fc952143efeed1851aa0aa006559239ba',
|
||||
'filtered_rpms': [
|
||||
'foo-0:2.4.48-3.el8+1308+551bfa71',
|
||||
'bar-0:2.5.48-3.el8+1308+551bfa71']}}
|
||||
|
||||
def test_resolve_profiles(self):
|
||||
"""
|
||||
Tests that the profiles get resolved recursively
|
||||
|
||||
Reference in New Issue
Block a user