From 33e0da75af8e666f41f65c05a5f5edf6d90f339c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Wieczorek?= Date: Tue, 17 Jun 2025 10:57:58 +0200 Subject: [PATCH 1/2] Revert "src/trigger.py: add --build-configs optional argument" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 81387ab4786d5c7a00afd22eae98c39dda323093. Build configurations list will not be known up front when external configuration files are enabled in Maestro. Dropping this filter will allow simplifying Trigger Service logic taking into account only parameters that are still relevant. Signed-off-by: Paweł Wieczorek --- src/trigger.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/trigger.py b/src/trigger.py index 794601556..cc53bfaf0 100755 --- a/src/trigger.py +++ b/src/trigger.py @@ -134,27 +134,23 @@ def _run_trigger(self, build_config, force, timeout, trees): except Exception as ex: self.traceback(ex) - def _iterate_build_configs(self, force, build_configs_list, - timeout, trees): + def _iterate_build_configs(self, force, timeout, trees): for name, config in self._build_configs.items(): - if not build_configs_list or name in build_configs_list: - self._run_trigger(config, force, timeout, trees) + self._run_trigger(config, force, timeout, trees) def _setup(self, args): return { 'poll_period': int(args.poll_period), 'force': args.force, - 'build_configs_list': (args.build_configs or '').split(), 'startup_delay': int(args.startup_delay or 0), 'timeout': args.timeout, 'trees': args.trees, } def _run(self, ctx): - poll_period, force, build_configs_list, startup_delay, timeout, trees = ( + poll_period, force, startup_delay, timeout, trees = ( ctx[key] for key in ( - 'poll_period', 'force', 'build_configs_list', 'startup_delay', - 'timeout', 'trees' + 'poll_period', 'force', 'startup_delay', 'timeout', 'trees' ) ) @@ -163,8 +159,7 @@ def _run(self, ctx): time.sleep(startup_delay) while True: - self._iterate_build_configs(force, build_configs_list, - timeout, trees) + self._iterate_build_configs(force, timeout, trees) if poll_period: self.log.info(f"Sleeping for {poll_period}s") time.sleep(poll_period) @@ -191,10 +186,6 @@ class cmd_run(Command): 'action': 'store_true', 'help': "Always create a new checkout node", }, - { - 'name': '--build-configs', - 'help': "List of build configurations to monitor", - }, { 'name': '--name', 'help': "Name of pipeline instance", From a2f30ddace30c561782de895188ac5461a912286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Wieczorek?= Date: Thu, 19 Jun 2025 20:50:43 +0200 Subject: [PATCH 2/2] src/trigger.py: Switch key data structure for main loop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build configurations list will not be known up front when external configuration files are enabled in Maestro. Switching main loop to iterate over monitored trees will allow obtaining this information right before its use. Signed-off-by: Paweł Wieczorek --- src/trigger.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/trigger.py b/src/trigger.py index cc53bfaf0..a3b6d400b 100755 --- a/src/trigger.py +++ b/src/trigger.py @@ -26,6 +26,7 @@ class Trigger(Service): def __init__(self, configs, args): super().__init__(configs, args, 'trigger') self._build_configs = configs['build_configs'] + self._trees = configs['trees'] self._current_user = self._api.user.whoami() def _log_revision(self, message, build_config, head_commit): @@ -134,9 +135,11 @@ def _run_trigger(self, build_config, force, timeout, trees): except Exception as ex: self.traceback(ex) - def _iterate_build_configs(self, force, timeout, trees): - for name, config in self._build_configs.items(): - self._run_trigger(config, force, timeout, trees) + def _iterate_trees(self, force, timeout, trees): + for tree in self._trees.keys(): + build_configs = {name: config for name, config in self._build_configs.items() if config.tree.name == tree} + for name, config in build_configs.items(): + self._run_trigger(config, force, timeout, trees) def _setup(self, args): return { @@ -159,7 +162,7 @@ def _run(self, ctx): time.sleep(startup_delay) while True: - self._iterate_build_configs(force, timeout, trees) + self._iterate_trees(force, timeout, trees) if poll_period: self.log.info(f"Sleeping for {poll_period}s") time.sleep(poll_period)