From cc5836d3cee3f2035d6cfb2662529cd6c7593e6f Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Mon, 31 Oct 2016 11:24:32 +0100 Subject: [PATCH] Fix 'We have no record of ...' when Koji task finishes by comparing task_id with task_id and not with buil_id. --- module_build_service/messaging.py | 12 +++++++++--- module_build_service/models.py | 2 +- tests/test_messaging/test_messaging_functions.py | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/module_build_service/messaging.py b/module_build_service/messaging.py index 80aa5cf6..3e2e1dad 100644 --- a/module_build_service/messaging.py +++ b/module_build_service/messaging.py @@ -87,6 +87,10 @@ class BaseMessage(object): attr = content['attribute'] if attr == "state": build_id = content['info']['id'] + # TODO: Someone with AMQ knowledge should check if + # info.id is build id or task_id here. For now I presume + # it is task_id. + task_id = content['info']['id'] build_state = content['new'] # These are not available before build is assigned build_name = None @@ -99,7 +103,7 @@ class BaseMessage(object): build_release = content['info']['release'] msg_obj = KojiBuildChange( - msg.id, build_id, build_state, build_name, + msg.id, build_id, task_id, build_state, build_name, build_version, build_release) elif service == 'module_build_service': @@ -150,13 +154,14 @@ class BaseMessage(object): if category == 'buildsys' and object == 'build' and \ subobject == 'state' and event == 'change': build_id = msg_inner_msg.get('build_id') + task_id = msg_inner_msg.get('task_id') build_new_state = msg_inner_msg.get('new') build_name = msg_inner_msg.get('name') build_version = msg_inner_msg.get('version') build_release = msg_inner_msg.get('release') msg_obj = KojiBuildChange( - msg_id, build_id, build_new_state, build_name, + msg_id, build_id, task_id, build_new_state, build_name, build_version, build_release) elif category == 'buildsys' and object == 'repo' and \ @@ -189,10 +194,11 @@ class KojiBuildChange(BaseMessage): :param build_version: the version of the build (e.g. 6.06.06) :param build_release: the release of the build (e.g. 4.fc25) """ - def __init__(self, msg_id, build_id, build_new_state, build_name, + def __init__(self, msg_id, build_id, task_id, build_new_state, build_name, build_version, build_release): super(KojiBuildChange, self).__init__(msg_id) self.build_id = build_id + self.task_id = task_id self.build_new_state = build_new_state self.build_name = build_name self.build_version = build_version diff --git a/module_build_service/models.py b/module_build_service/models.py index 67c97f3e..a42bacca 100644 --- a/module_build_service/models.py +++ b/module_build_service/models.py @@ -312,7 +312,7 @@ class ComponentBuild(RidaBase): def from_component_event(cls, session, event): if type(event) == module_build_service.messaging.KojiBuildChange: return session.query(cls).filter( - cls.task_id == event.build_id).first() + cls.task_id == event.task_id).first() else: raise ValueError("%r is not a koji message." % event['topic']) diff --git a/tests/test_messaging/test_messaging_functions.py b/tests/test_messaging/test_messaging_functions.py index 052aa686..df4e650e 100644 --- a/tests/test_messaging/test_messaging_functions.py +++ b/tests/test_messaging/test_messaging_functions.py @@ -72,6 +72,7 @@ class TestUtilFunctions(unittest.TestCase): msg_obj = next(module_build_service.messaging._fedmsg_listen(None)) self.assertEquals(type(msg_obj), module_build_service.messaging.KojiBuildChange) self.assertEquals(msg_obj.build_id, 2345678) + self.assertEquals(msg_obj.task_id, 1234567) self.assertEquals(msg_obj.build_new_state, 0) self.assertEquals(msg_obj.build_name, 'some-package') self.assertEquals(msg_obj.build_version, '2.1.0')