diff options
author | Simon Westphahl <simon.westphahl@bmw.de> | 2022-09-07 10:41:37 +0200 |
---|---|---|
committer | Simon Westphahl <simon.westphahl@bmw.de> | 2022-09-07 10:41:37 +0200 |
commit | 687f1c4749c8532279620dc62536fd118ce3b3a5 (patch) | |
tree | 0f1f010ce12c81c3027a3a3265d15276126881c3 | |
parent | 0b4c6b011701f8723cb722a739d2ce24d6ad4376 (diff) | |
download | zuul-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.py | 5 |
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 |