Always run post playbooks
Post playbooks get us things like logs. Including logs from pre-playbooks. Generally, we want to retry the job if a pre-playbook fails. However, if it keeps failing, we run into the RETRY_LIMIT and stop trying. In that case, we would like to see the logs from the failed job. To make that happen, always run all of the post-playbooks for a job, even if the pre-playbooks have failed. Change-Id: I8457e5a89a3cc34c351f1f861847c5fbe231e28e
This commit is contained in:
parent
547af8e8fd
commit
7d5a8fe2d1
|
@ -882,6 +882,7 @@ class AnsibleJob(object):
|
|||
def runPlaybooks(self, args):
|
||||
result = None
|
||||
|
||||
pre_failed = False
|
||||
for playbook in self.jobdir.pre_playbooks:
|
||||
# TODOv3(pabelanger): Implement pre-run timeout setting.
|
||||
pre_status, pre_code = self.runAnsiblePlaybook(
|
||||
|
@ -889,31 +890,36 @@ class AnsibleJob(object):
|
|||
if pre_status != self.RESULT_NORMAL or pre_code != 0:
|
||||
# These should really never fail, so return None and have
|
||||
# zuul try again
|
||||
pre_failed = True
|
||||
break
|
||||
|
||||
if not pre_failed:
|
||||
job_status, job_code = self.runAnsiblePlaybook(
|
||||
self.jobdir.playbook, args['timeout'])
|
||||
if job_status == self.RESULT_TIMED_OUT:
|
||||
return 'TIMED_OUT'
|
||||
if job_status == self.RESULT_ABORTED:
|
||||
return 'ABORTED'
|
||||
if job_status != self.RESULT_NORMAL:
|
||||
# The result of the job is indeterminate. Zuul will
|
||||
# run it again.
|
||||
return result
|
||||
|
||||
job_status, job_code = self.runAnsiblePlaybook(
|
||||
self.jobdir.playbook, args['timeout'])
|
||||
if job_status == self.RESULT_TIMED_OUT:
|
||||
return 'TIMED_OUT'
|
||||
if job_status == self.RESULT_ABORTED:
|
||||
return 'ABORTED'
|
||||
if job_status != self.RESULT_NORMAL:
|
||||
# The result of the job is indeterminate. Zuul will
|
||||
# run it again.
|
||||
return result
|
||||
|
||||
success = (job_code == 0)
|
||||
if success:
|
||||
result = 'SUCCESS'
|
||||
else:
|
||||
result = 'FAILURE'
|
||||
success = (job_code == 0)
|
||||
if success:
|
||||
result = 'SUCCESS'
|
||||
else:
|
||||
result = 'FAILURE'
|
||||
|
||||
for playbook in self.jobdir.post_playbooks:
|
||||
# TODOv3(pabelanger): Implement post-run timeout setting.
|
||||
post_status, post_code = self.runAnsiblePlaybook(
|
||||
playbook, args['timeout'], success)
|
||||
if post_status != self.RESULT_NORMAL or post_code != 0:
|
||||
result = 'POST_FAILURE'
|
||||
# If we encountered a pre-failure, that takes
|
||||
# precedence over the post result.
|
||||
if not pre_failed:
|
||||
result = 'POST_FAILURE'
|
||||
return result
|
||||
|
||||
def getHostList(self, args):
|
||||
|
|
Loading…
Reference in New Issue