From 0ab5a53561b888bdf907a33fc5978a80bf65fb4d Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Thu, 25 Jun 2026 14:28:06 +0200 Subject: [PATCH] [WIP] Handle BuildArch updates Signed-off-by: Cristian Le --- packit_service/events/koji/abstract.py | 2 ++ packit_service/events/koji/result.py | 2 ++ packit_service/worker/parser.py | 12 ++++++++++++ 3 files changed, 16 insertions(+) diff --git a/packit_service/events/koji/abstract.py b/packit_service/events/koji/abstract.py index c088ed415..0209644e0 100644 --- a/packit_service/events/koji/abstract.py +++ b/packit_service/events/koji/abstract.py @@ -20,12 +20,14 @@ class KojiEvent(Result): def __init__( self, task_id: int, + parent: Optional[int] = None, rpm_build_task_ids: Optional[dict[str, int]] = None, start_time: Optional[Union[int, float, str]] = None, completion_time: Optional[Union[int, float, str]] = None, ): super().__init__() self.task_id = task_id + self.parent = parent # dictionary with archs and IDs, e.g. {"x86_64": 123} self.rpm_build_task_ids = rpm_build_task_ids self.start_time: Optional[Union[int, float, str]] = start_time diff --git a/packit_service/events/koji/result.py b/packit_service/events/koji/result.py index b5da7782b..360cd4f0c 100644 --- a/packit_service/events/koji/result.py +++ b/packit_service/events/koji/result.py @@ -151,6 +151,7 @@ def __init__( self, task_id: int, state: KojiTaskState, + parent: Optional[int] = None, old_state: Optional[KojiTaskState] = None, rpm_build_task_ids: Optional[dict[str, int]] = None, rpm_build_failed_arch_list: Optional[list[str]] = None, @@ -158,6 +159,7 @@ def __init__( completion_time: Optional[Union[int, float, str]] = None, ): super().__init__( + parent=parent, task_id=task_id, rpm_build_task_ids=rpm_build_task_ids, start_time=start_time, diff --git a/packit_service/worker/parser.py b/packit_service/worker/parser.py index 9a58f9db1..c579ad6e9 100644 --- a/packit_service/worker/parser.py +++ b/packit_service/worker/parser.py @@ -1444,6 +1444,18 @@ def parse_koji_task_event(event) -> Optional[koji.result.Task]: start_time = nested_get(event, "info", "start_time") completion_time = nested_get(event, "info", "completion_time") + # Check if it is an early update to an archbuild + if nested_get(event, "info", "method") == "buildArch": + parent = nested_get(event, "info", "parent") + return koji.result.Task( + parent=parent, + task_id=task_id, + state=state_enum, + old_state=old_state, + start_time=start_time, + completion_time=completion_time, + ) + rpm_build_task_ids = {} rpm_build_failed_arch_list: list[str] = [] for children in nested_get(event, "info", "children", default=[]):