Generate koji tag from MBS and use informative name

koji now supports tags with max length of 256, we can use
more informative tag name instead of the hash one.

The new format of koji tag name is:

    module-<name>-<stream>-<version>-<context>

However when the generated tag's length > (256 - len('build')), we
fallback to the old way of name in hash format (module-<hash>).

In this change, koji tag is always generated from MBS itself, even
with pdc resolver.

FIXES: #918 #925
This commit is contained in:
Qixiang Wan
2018-04-23 09:41:53 +08:00
parent 8351713828
commit 8b807a9fcd
9 changed files with 49 additions and 45 deletions

View File

@@ -298,7 +298,7 @@ def scheduler_init_data(tangerine_state=None):
build_one.state = BUILD_STATES['build']
build_one.build_context = 'ac4de1c346dcf09ce77d38cd4e75094ec1c08eb0'
build_one.runtime_context = 'ac4de1c346dcf09ce77d38cd4e75094ec1c08eb0'
build_one.koji_tag = 'module-95b214a704c984be'
build_one.koji_tag = 'module-testmodule-master-20170109091357-7c29193d'
build_one.scmurl = 'git://pkgs.stg.fedoraproject.org/modules/testmodule.git?#ff1ea79'
if tangerine_state:
build_one.batch = 3
@@ -403,7 +403,7 @@ def reuse_component_init_data():
build_one.ref_build_context = 'ac4de1c346dcf09ce77d38cd4e75094ec1c08eb0'
build_one.runtime_context = 'ac4de1c346dcf09ce77d38cd4e75094ec1c08eb0'
build_one.build_context = 'ac4de1c346dcf09ce77d38cd4e75094ec1c08eb1'
build_one.koji_tag = 'module-de3adf79caf3e1b8'
build_one.koji_tag = 'module-testmodule-master-20170109091357-78e4a6fd'
build_one.scmurl = 'git://pkgs.stg.fedoraproject.org/modules/testmodule.git?#ff1ea79'
build_one.batch = 3
build_one.owner = 'Tom Brady'
@@ -578,7 +578,7 @@ def reuse_shared_userspace_init_data():
build_one.runtime_context = '50dd3eb5dde600d072e45d4120e1548ce66bc94a'
build_one.state = BUILD_STATES['ready']
build_one.modulemd = mmd.dumps()
build_one.koji_tag = 'module-testmodule-master-20170109091357'
build_one.koji_tag = 'module-shared-userspace-f26-20170601141014-75f92abb'
build_one.scmurl = ('git://pkgs.stg.fedoraproject.org/modules/testmodule.'
'git?#7fea453')
build_one.batch = 16
@@ -629,7 +629,7 @@ def reuse_shared_userspace_init_data():
build_one.runtime_context = '50dd3eb5dde600d072e45d4120e1548ce66bc94a'
build_one.state = BUILD_STATES['done']
build_one.modulemd = mmd2.dumps()
build_one.koji_tag = 'module-testmodule-master-20170109091357'
build_one.koji_tag = 'module-shared-userspace-f26-20170605091544-75f92abb'
build_one.scmurl = ('git://pkgs.stg.fedoraproject.org/modules/testmodule.'
'git?#7fea453')
build_one.batch = 0

View File

@@ -59,6 +59,7 @@ class TestModuleWait:
mocked_module_build.name = 'foo'
mocked_module_build.stream = 'stream'
mocked_module_build.version = '1'
mocked_module_build.context = '1234567'
mocked_module_build.state = 1
mocked_module_build.id = 1
mocked_module_build.json.return_value = {

View File

@@ -67,7 +67,7 @@ class TestRepoDone:
build_fn.return_value = 1234, 1, '', None
msg = module_build_service.messaging.KojiRepoChange(
'some_msg_id', 'module-95b214a704c984be-build')
'some_msg_id', 'module-testmodule-master-20170109091357-7c29193d-build')
module_build_service.scheduler.handlers.repos.done(
config=conf, session=db.session, msg=msg)
build_fn.assert_called_once_with(
@@ -101,7 +101,7 @@ class TestRepoDone:
build_fn.return_value = None, 4, 'Failed to submit artifact tangerine to Koji', None
msg = module_build_service.messaging.KojiRepoChange(
'some_msg_id', 'module-95b214a704c984be-build')
'some_msg_id', 'module-testmodule-master-20170109091357-7c29193d-build')
module_build_service.scheduler.handlers.repos.done(
config=conf, session=db.session, msg=msg)
build_fn.assert_called_once_with(
@@ -119,7 +119,7 @@ class TestRepoDone:
"""
scheduler_init_data(1)
msg = module_build_service.messaging.KojiRepoChange(
'some_msg_id', 'module-95b214a704c984be-build')
'some_msg_id', 'module-testmodule-master-20170109091357-7c29193d-build')
component_build = module_build_service.models.ComponentBuild.query\
.filter_by(package='tangerine').one()
component_build.tagged = False
@@ -156,7 +156,7 @@ class TestRepoDone:
build_fn.return_value = None, 4, 'Failed to submit artifact x to Koji', None
msg = module_build_service.messaging.KojiRepoChange(
'some_msg_id', 'module-95b214a704c984be-build')
'some_msg_id', 'module-testmodule-master-20170109091357-7c29193d-build')
module_build_service.scheduler.handlers.repos.done(
config=conf, session=db.session, msg=msg)
module_build = module_build_service.models.ModuleBuild.query.get(2)

View File

@@ -535,6 +535,22 @@ class TestUtils:
for c in module_build.component_builds:
assert c.weight == 1.5
def test_generate_koji_tag_in_nsvc_format(self):
name, stream, version, context = ('testmodule', 'master', '20170816080815', '37c6c57')
tag = module_build_service.utils.generate_koji_tag(name, stream, version, context)
assert tag == 'module-testmodule-master-20170816080815-37c6c57'
def test_generate_koji_tag_in_hash_format(self):
name, version, context = ('testmodule', '20170816080815', '37c6c57')
stream = 'this-is-a-stream-with-very-looooong-name' + '-blah' * 50
nsvc_list = [name, stream, version, context]
tag = module_build_service.utils.generate_koji_tag(*nsvc_list)
expected_tag = 'module-1cf457d452e54dda'
assert tag == expected_tag
class DummyModuleBuilder(GenericBuilder):
"""