mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-02-03 13:13:27 +08:00
Make finalization before changing state to done
Signed-off-by: Valerij Maljulin <vmaljuli@redhat.com>
This commit is contained in:
@@ -1205,8 +1205,9 @@ chmod 644 %buildroot/etc/rpm/macros.zz-modules
|
||||
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:
|
||||
# Only import to koji CG if the module is "build".
|
||||
if self.config.koji_enable_content_generator and \
|
||||
self.module.state == models.BUILD_STATES['build']:
|
||||
cg = KojiContentGenerator(self.module, self.config)
|
||||
cg.koji_import()
|
||||
if conf.koji_cg_devel_module:
|
||||
|
||||
@@ -128,12 +128,6 @@ def done(config, session, msg):
|
||||
# This is ok.. it's a race condition we can ignore.
|
||||
pass
|
||||
|
||||
builder = module_build_service.builder.GenericBuilder.create_from_module(
|
||||
session, build, config)
|
||||
|
||||
# Tell the external buildsystem to wrap up (CG import, createrepo, etc.)
|
||||
builder.finalize()
|
||||
|
||||
build.transition(config, state="ready")
|
||||
session.commit()
|
||||
|
||||
|
||||
@@ -120,13 +120,9 @@ def done(config, session, msg):
|
||||
# So now we can either start a new batch if there are still some to build
|
||||
# or, if everything is built successfully, then we can bless the module as
|
||||
# complete.
|
||||
has_unbuilt_components = False
|
||||
has_failed_components = False
|
||||
for c in module_build.component_builds:
|
||||
if c.state in [None, koji.BUILD_STATES['BUILDING']]:
|
||||
has_unbuilt_components = True
|
||||
elif (c.state in failed_states):
|
||||
has_failed_components = True
|
||||
has_unbuilt_components = any(c.state in [None, koji.BUILD_STATES['BUILDING']]
|
||||
for c in module_build.component_builds)
|
||||
has_failed_components = any(c.state in failed_states for c in module_build.component_builds)
|
||||
|
||||
further_work = []
|
||||
if has_unbuilt_components and not has_failed_components:
|
||||
@@ -152,6 +148,9 @@ def done(config, session, msg):
|
||||
state=models.BUILD_STATES['failed'],
|
||||
state_reason=state_reason)
|
||||
else:
|
||||
# Tell the external buildsystem to wrap up (CG import, createrepo, etc.)
|
||||
builder.finalize()
|
||||
|
||||
module_build.transition(config, state=models.BUILD_STATES['done'])
|
||||
session.commit()
|
||||
|
||||
|
||||
@@ -666,7 +666,7 @@ class TestKojiBuilder:
|
||||
])
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.KojiContentGenerator')
|
||||
def test_finalize(self, mock_koji_cg_cls, cg_enabled, cg_devel_enabled):
|
||||
self.module.state = 3
|
||||
self.module.state = 2
|
||||
with patch('module_build_service.config.Config.koji_enable_content_generator',
|
||||
new_callable=mock.PropertyMock, return_value=cg_enabled):
|
||||
with patch('module_build_service.config.Config.koji_cg_devel_module',
|
||||
|
||||
@@ -75,6 +75,39 @@ class TestRepoDone:
|
||||
source=('https://src.fedoraproject.org/rpms/tangerine?'
|
||||
'#fbed359411a1baa08d4a88e0d12d426fbf8f602c'))
|
||||
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.finalize')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.recover_orphaned_artifact', return_value=[])
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.get_average_build_time',
|
||||
return_value=0.0)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.list_tasks_for_components',
|
||||
return_value=[])
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.buildroot_ready', return_value=True)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.get_session')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.build')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.buildroot_connect')
|
||||
def test_a_single_match_finalize(self, connect, build_fn, get_session, ready, list_tasks_fn,
|
||||
mock_gabt, mock_uea, finalizer):
|
||||
""" Test that when a repo msg hits us and we have a single match.
|
||||
"""
|
||||
scheduler_init_data(tangerine_state=1)
|
||||
get_session.return_value = mock.Mock(), 'development'
|
||||
build_fn.return_value = 1234, 1, '', None
|
||||
|
||||
msg = module_build_service.messaging.KojiRepoChange(
|
||||
'some_msg_id', 'module-testmodule-master-20170109091357-7c29193d-build')
|
||||
module_build_service.scheduler.handlers.repos.done(
|
||||
config=conf, session=db.session, msg=msg)
|
||||
|
||||
finalizer.assert_called_once()
|
||||
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.recover_orphaned_artifact', return_value=[])
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
|
||||
Reference in New Issue
Block a user