summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Westphahl <simon.westphahl@bmw.de>2022-09-07 10:41:37 +0200
committerSimon Westphahl <simon.westphahl@bmw.de>2022-09-07 10:41:37 +0200
commit687f1c4749c8532279620dc62536fd118ce3b3a5 (patch)
tree0f1f010ce12c81c3027a3a3265d15276126881c3
parent0b4c6b011701f8723cb722a739d2ce24d6ad4376 (diff)
downloadzuul-687f1c4749c8532279620dc62536fd118ce3b3a5.tar.gz
Don't run cleanup playbooks after setup failure
When a job already fails during setup we never load the frozen hostvars. Since the cleanup playbooks depend on those, we can skip the cleanup runs if the dict is empty. As we always add "localhost" to the hostlist, the frozen hostvars will never be empty when loading was successful. This will get rid of the following exception: Traceback (most recent call last): File "/opt/zuul/lib/python3.10/site-packages/zuul/executor/server.py", line 1126, in execute self._execute() File "/opt/zuul/lib/python3.10/site-packages/zuul/executor/server.py", line 1493, in _execute self.runCleanupPlaybooks(success) File "/opt/zuul/lib/python3.10/site-packages/zuul/executor/server.py", line 1854, in runCleanupPlaybooks self.runAnsiblePlaybook( File "/opt/zuul/lib/python3.10/site-packages/zuul/executor/server.py", line 3042, in runAnsiblePlaybook self.writeInventory(playbook, self.frozen_hostvars) File "/opt/zuul/lib/python3.10/site-packages/zuul/executor/server.py", line 2551, in writeInventory inventory = make_inventory_dict( File "/opt/zuul/lib/python3.10/site-packages/zuul/executor/server.py", line 913, in make_inventory_dict node_hostvars = hostvars[node['name']].copy() KeyError: 'node' Change-Id: I33a6a9ab355482e471e79f3dd5d702589fee04b3
-rw-r--r--zuul/executor/server.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/zuul/executor/server.py b/zuul/executor/server.py
index 1273cbaa4..89f93b8c5 100644
--- a/zuul/executor/server.py
+++ b/zuul/executor/server.py
@@ -1837,6 +1837,11 @@ class AnsibleJob(object):
if not self.jobdir.cleanup_playbooks:
return
+ if not self.frozen_hostvars:
+ # Job failed before we could load the frozen hostvars.
+ # This means we can't run any cleanup playbooks.
+ return
+
# TODO: make this configurable
cleanup_timeout = 300