From 0c3fc85bb586aa9d874da33bff24b44f6b80c068 Mon Sep 17 00:00:00 2001 From: Yuming Zhu Date: Thu, 13 Sep 2018 16:51:15 +0800 Subject: [PATCH] hub: [postBuildStateChange] passing the newest build info --- hub/kojihub.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/hub/kojihub.py b/hub/kojihub.py index c6d13b86..148fe64f 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -5289,9 +5289,8 @@ def import_build(srpm, rpms, brmap=None, task_id=None, build_id=None, logs=None) update.rawset(completion_time='NOW()') update.set(volume_id=build['volume_id']) update.execute() + binfo = get_build(build_id, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='state', old=binfo['state'], new=st_complete, info=binfo) - binfo['volume_id'] = build['volume_id'] - binfo['volume_name'] = build['volume_name'] # now to handle the individual rpms for relpath in [srpm] + rpms: @@ -7256,6 +7255,7 @@ def _delete_build(binfo): builddir = koji.pathinfo.build(binfo) if os.path.exists(builddir): koji.util.rmtree(builddir) + binfo = get_build(build_id, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='state', old=binfo['state'], new=st_deleted, info=binfo) def reset_build(build): @@ -7323,6 +7323,7 @@ def reset_build(build): builddir = koji.pathinfo.build(binfo) if os.path.exists(builddir): koji.util.rmtree(builddir) + binfo = get_build(build, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='state', old=binfo['state'], new=koji.BUILD_STATES['CANCELED'], info=binfo) def cancel_build(build_id, cancel_task=True): @@ -7355,6 +7356,7 @@ def cancel_build(build_id, cancel_task=True): build_notification(task_id, build_id) if cancel_task: Task(task_id).cancelFull(strict=False) + build = get_build(build_id, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='state', old=build['state'], new=st_canceled, info=build) return True @@ -10933,17 +10935,14 @@ class RootExports(object): def setBuildOwner(self, build, user): context.session.assertPerm('admin') - buildinfo = get_build(build) - if not buildinfo: - raise koji.GenericError('build does not exist: %s' % build) - userinfo = get_user(user) - if not userinfo: - raise koji.GenericError('user does not exist: %s' % user) + buildinfo = get_build(build, strict=True) + userinfo = get_user(user, strict=True) userid = userinfo['id'] buildid = buildinfo['id'] koji.plugin.run_callbacks('preBuildStateChange', attribute='owner_id', old=buildinfo['owner_id'], new=userid, info=buildinfo) q = """UPDATE build SET owner=%(userid)i WHERE id=%(buildid)i""" _dml(q, locals()) + buildinfo = get_build(build, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='owner_id', old=buildinfo['owner_id'], new=userid, info=buildinfo) def setBuildTimestamp(self, build, ts): @@ -10953,10 +10952,8 @@ class RootExports(object): ts should be # of seconds since epoch or optionally an xmlrpc DateTime value""" context.session.assertPerm('admin') - buildinfo = get_build(build) - if not buildinfo: - raise koji.GenericError('build does not exist: %s' % build) - elif isinstance(ts, six.moves.xmlrpc_client.DateTime): + buildinfo = get_build(build, strict=True) + if isinstance(ts, six.moves.xmlrpc_client.DateTime): #not recommended #the xmlrpclib.DateTime class is almost useless try: @@ -10971,6 +10968,7 @@ class RootExports(object): SET completion_time=TIMESTAMP 'epoch' AT TIME ZONE 'utc' + '%(ts)f seconds'::interval WHERE id=%%(buildid)i""" % locals() _dml(q, locals()) + buildinfo = get_build(build, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='completion_ts', old=buildinfo['completion_ts'], new=ts, info=buildinfo) def count(self, methodName, *args, **kw): @@ -12055,7 +12053,7 @@ class HostExports(object): task = Task(task_id) task.assertHost(host.id) - build_info = get_build(build_id) + build_info = get_build(build_id, strict=True) # check volume policy vol_update = False @@ -12085,7 +12083,7 @@ class HostExports(object): if vol_update: update.set(volume_id=build_info['volume_id']) update.execute() - + build_info = get_build(build_id, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='state', old=build_info['state'], new=st_complete, info=build_info) # send email @@ -12210,6 +12208,7 @@ class HostExports(object): update.set(volume_id=build_info['volume_id']) update.rawset(completion_time='now()') update.execute() + build_info = get_build(build_id, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='state', old=build_info['state'], new=st_complete, info=build_info) # send email @@ -12353,6 +12352,7 @@ class HostExports(object): update.set(volume_id=build_info['volume_id']) update.rawset(completion_time='now()') update.execute() + build_info = get_build(build_id, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='state', old=build_info['state'], new=st_complete, info=build_info) # send email @@ -12389,8 +12389,9 @@ class HostExports(object): completion_time = NOW() WHERE id = %(build_id)i""" _dml(update, locals()) - build_notification(task_id, build_id) + buildinfo = get_build(build_id, strict=True) koji.plugin.run_callbacks('postBuildStateChange', attribute='state', old=buildinfo['state'], new=st_failed, info=buildinfo) + build_notification(task_id, build_id) def tagBuild(self, task_id, tag, build, force=False, fromtag=None): """Tag a build (host version)