From c9d2625a7736901974f25cc1113e3f01a63de183 Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Mon, 13 Mar 2023 16:17:57 -0400 Subject: [PATCH 1/2] refactor(cot_verify): remove unnecessary check in guess_worker_impl The scriptworker-prov-v1 provisioner is already defined in constants.py, so no need to check for it explicitly. --- src/scriptworker/cot/verify.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/scriptworker/cot/verify.py b/src/scriptworker/cot/verify.py index 67db1b7d..da1af32f 100644 --- a/src/scriptworker/cot/verify.py +++ b/src/scriptworker/cot/verify.py @@ -354,10 +354,7 @@ def guess_worker_impl(link): if task["payload"].get("image"): worker_impls.append("docker-worker") - if task["provisionerId"] in link.context.config["scriptworker_provisioners"]: - worker_impls.append("scriptworker") - # XXX while deprecated, "scriptworker-prov-v1" is still around for mac signing - if get_provisioner_id(task) == "scriptworker-prov-v1": + if get_provisioner_id(task) in link.context.config["scriptworker_provisioners"]: worker_impls.append("scriptworker") if task["payload"].get("mounts") is not None: worker_impls.append("generic-worker") From 3a3c6ebc228caede0718dbac3f95dc3c071c35a2 Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Mon, 13 Mar 2023 16:21:18 -0400 Subject: [PATCH 2/2] refactor(cot_verify): use a set to track worker_impls in guess_worker_impl --- src/scriptworker/cot/verify.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/scriptworker/cot/verify.py b/src/scriptworker/cot/verify.py index da1af32f..836ff191 100644 --- a/src/scriptworker/cot/verify.py +++ b/src/scriptworker/cot/verify.py @@ -347,33 +347,34 @@ def guess_worker_impl(link): CoTError: on inability to determine the worker implementation """ - worker_impls = [] + worker_impls = set() task = link.task name = link.name errors = [] if task["payload"].get("image"): - worker_impls.append("docker-worker") + worker_impls.add("docker-worker") if get_provisioner_id(task) in link.context.config["scriptworker_provisioners"]: - worker_impls.append("scriptworker") + worker_impls.add("scriptworker") if task["payload"].get("mounts") is not None: - worker_impls.append("generic-worker") + worker_impls.add("generic-worker") if task["payload"].get("osGroups") is not None: - worker_impls.append("generic-worker") + worker_impls.add("generic-worker") if task.get("tags", {}).get("worker-implementation", {}): - worker_impls.append(task["tags"]["worker-implementation"]) + worker_impls.add(task["tags"]["worker-implementation"]) for scope in task["scopes"]: if scope.startswith("docker-worker:"): - worker_impls.append("docker-worker") + worker_impls.add("docker-worker") if not worker_impls: errors.append("guess_worker_impl: can't find a worker_impl for {}!\n{}".format(name, task)) - if len(set(worker_impls)) > 1: + if len(worker_impls) > 1: errors.append("guess_worker_impl: too many matches for {}: {}!\n{}".format(name, set(worker_impls), task)) raise_on_errors(errors) - log.debug("{} {} is {}".format(name, link.task_id, worker_impls[0])) - return worker_impls[0] + impl = worker_impls.pop() + log.debug("{} {} is {}".format(name, link.task_id, impl)) + return impl # get_valid_worker_impls {{{1