From b5860fa0394218b7bb41e96850d8988aa59088d3 Mon Sep 17 00:00:00 2001 From: Chenxiong Qi Date: Tue, 20 Nov 2018 19:31:03 +0800 Subject: [PATCH] Make it optional to tag build for CG import Fixes FACTORY-3467 Signed-off-by: Chenxiong Qi --- .../builder/KojiContentGenerator.py | 5 ++-- module_build_service/config.py | 5 ++++ .../scheduler/handlers/modules.py | 13 ++++++---- tests/test_scheduler/test_module_wait.py | 24 ++++++++++++------- 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/module_build_service/builder/KojiContentGenerator.py b/module_build_service/builder/KojiContentGenerator.py index 887f016a..a4305785 100644 --- a/module_build_service/builder/KojiContentGenerator.py +++ b/module_build_service/builder/KojiContentGenerator.py @@ -41,7 +41,7 @@ from six import text_type import koji import pungi.arch -from module_build_service import log, build_logs, Modulemd, glib +from module_build_service import conf, log, build_logs, Modulemd, glib logging.basicConfig(level=logging.DEBUG) @@ -734,7 +734,8 @@ class KojiContentGenerator(object): try: serverdir = self._upload_outputs(session, metadata, file_dir) build_info = session.CGImport(metadata, serverdir) - self._tag_cg_build() + if conf.koji_cg_tag_build: + self._tag_cg_build() log.info("Content generator import done.") log.debug(json.dumps(build_info, sort_keys=True, indent=4)) diff --git a/module_build_service/config.py b/module_build_service/config.py index 34c6c097..1b94eb5b 100644 --- a/module_build_service/config.py +++ b/module_build_service/config.py @@ -423,6 +423,11 @@ class Config(object): 'type': dict, 'default': {}, 'desc': 'Per base-module name:stream Koji arches list.'}, + 'koji_cg_tag_build': { + 'type': bool, + 'default': True, + 'desc': 'Indicate whether tagging build is enabled during importing ' + 'module to Koji.'}, 'koji_cg_build_tag_template': { 'type': str, 'default': "{}-modular-updates-candidate", diff --git a/module_build_service/scheduler/handlers/modules.py b/module_build_service/scheduler/handlers/modules.py index 2a0bc14b..28254db3 100644 --- a/module_build_service/scheduler/handlers/modules.py +++ b/module_build_service/scheduler/handlers/modules.py @@ -294,10 +294,15 @@ def wait(config, session, msg): log.debug("Assigning koji tag=%s to module build" % tag) build.koji_tag = tag - cg_build_koji_tag = get_content_generator_build_koji_tag(build_deps) - log.debug("Assigning Content Generator build koji tag=%s to module " - "build", cg_build_koji_tag) - build.cg_build_koji_tag = cg_build_koji_tag + if conf.koji_cg_tag_build: + cg_build_koji_tag = get_content_generator_build_koji_tag(build_deps) + log.debug("Assigning Content Generator build koji tag=%s to module build", + cg_build_koji_tag) + build.cg_build_koji_tag = cg_build_koji_tag + else: + log.debug('It is disabled to tag module build during importing into' + ' Koji by Content Generator.') + log.debug('Skip to assign Content Generator build koji tag to module build.') builder = module_build_service.builder.GenericBuilder.create_from_module( session, build, config) diff --git a/tests/test_scheduler/test_module_wait.py b/tests/test_scheduler/test_module_wait.py index 7e6c0681..a1c26356 100644 --- a/tests/test_scheduler/test_module_wait.py +++ b/tests/test_scheduler/test_module_wait.py @@ -26,6 +26,7 @@ import module_build_service.messaging import module_build_service.scheduler.handlers.modules import os import koji +import pytest from tests import conf, db, app, scheduler_init_data import module_build_service.resolver from module_build_service import build_logs, Modulemd @@ -206,6 +207,10 @@ class TestModuleWait: module_build = ModuleBuild.query.filter_by(id=2).one() assert module_build.cg_build_koji_tag == "modular-updates-candidate" + @pytest.mark.parametrize('koji_cg_tag_build,expected_cg_koji_build_tag', [ + [True, 'f27-modular-updates-candidate'], + [False, None], + ]) @patch("module_build_service.builder.GenericBuilder.default_buildroot_groups", return_value={'build': [], 'srpm-build': []}) @patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session") @@ -215,7 +220,8 @@ class TestModuleWait: @patch("module_build_service.config.Config.base_module_names", new_callable=mock.PropertyMock, return_value=set(["base-runtime", "platform"])) def test_set_cg_build_koji_tag( - self, cfg, generic_resolver, resolver, create_builder, koji_get_session, dbg): + self, cfg, generic_resolver, resolver, create_builder, koji_get_session, dbg, + koji_cg_tag_build, expected_cg_koji_build_tag): """ Test that build.cg_build_koji_tag is set. """ @@ -243,10 +249,12 @@ class TestModuleWait: resolver.get_module_build_dependencies.return_value = { "module-bootstrap-tag": base_mmd} - with patch.object(module_build_service.resolver, 'system_resolver', new=resolver): - msg = module_build_service.messaging.MBSModule(msg_id=None, module_build_id=2, - module_build_state='some state') - module_build_service.scheduler.handlers.modules.wait( - config=conf, session=db.session, msg=msg) - module_build = ModuleBuild.query.filter_by(id=2).one() - assert module_build.cg_build_koji_tag == "f27-modular-updates-candidate" + with patch.object(module_build_service.scheduler.handlers.modules.conf, + 'koji_cg_tag_build', new=koji_cg_tag_build): + with patch.object(module_build_service.resolver, 'system_resolver', new=resolver): + msg = module_build_service.messaging.MBSModule(msg_id=None, module_build_id=2, + module_build_state='some state') + module_build_service.scheduler.handlers.modules.wait( + config=conf, session=db.session, msg=msg) + module_build = ModuleBuild.query.filter_by(id=2).one() + assert module_build.cg_build_koji_tag == expected_cg_koji_build_tag