Merge "Log execution phase and include information" into feature/zuulv3

This commit is contained in:
Jenkins 2017-07-13 05:30:22 +00:00 committed by Gerrit Code Review
commit e391ec8df8
2 changed files with 27 additions and 12 deletions

View File

@ -150,14 +150,29 @@ class CallbackModule(default.CallbackModule):
def v2_playbook_on_start(self, playbook):
self._playbook_name = os.path.splitext(playbook._file_name)[0]
def v2_playbook_on_include(self, included_file):
for host in included_file._hosts:
self._log("{host} | included: {filename}".format(
host=host.name,
filename=included_file._filename))
def v2_playbook_on_play_start(self, play):
self._play = play
# Get the hostvars from just one host - the vars we're looking for will
# be identical on all of them
hostvars = self._play._variable_manager._hostvars
a_host = hostvars.keys()[0]
self.phase = hostvars[a_host]['zuul_execution_phase']
if self.phase != 'run':
self.phase = '{phase}-{index}'.format(
phase=self.phase,
index=hostvars[a_host]['zuul_execution_phase_index'])
# the name of a play defaults to the hosts string
name = play.get_name().strip()
if not name:
msg = u"PLAY"
else:
msg = u"PLAY [{playbook} : {name}]".format(
playbook=self._playbook_name, name=name)
msg = u"PLAY [{phase} : {playbook} : {name}]".format(
phase=self.phase,
playbook=self._playbook_name, name=name)
self._log(msg)
# Log an extra blank line to get space after each play

View File

@ -896,10 +896,10 @@ class AnsibleJob(object):
result = None
pre_failed = False
for count, playbook in enumerate(self.jobdir.pre_playbooks):
for index, playbook in enumerate(self.jobdir.pre_playbooks):
# TODOv3(pabelanger): Implement pre-run timeout setting.
pre_status, pre_code = self.runAnsiblePlaybook(
playbook, args['timeout'], phase='pre', count=count)
playbook, args['timeout'], phase='pre', index=index)
if pre_status != self.RESULT_NORMAL or pre_code != 0:
# These should really never fail, so return None and have
# zuul try again
@ -925,10 +925,10 @@ class AnsibleJob(object):
else:
result = 'FAILURE'
for count, playbook in enumerate(self.jobdir.post_playbooks):
for index, playbook in enumerate(self.jobdir.post_playbooks):
# TODOv3(pabelanger): Implement post-run timeout setting.
post_status, post_code = self.runAnsiblePlaybook(
playbook, args['timeout'], success, phase='post', count=count)
playbook, args['timeout'], success, phase='post', index=index)
if post_status != self.RESULT_NORMAL or post_code != 0:
# If we encountered a pre-failure, that takes
# precedence over the post result.
@ -1388,7 +1388,7 @@ class AnsibleJob(object):
return (self.RESULT_NORMAL, ret)
def runAnsiblePlaybook(self, playbook, timeout, success=None,
phase=None, count=None):
phase=None, index=None):
env_copy = os.environ.copy()
env_copy['LOGNAME'] = 'zuul'
@ -1405,8 +1405,8 @@ class AnsibleJob(object):
if phase:
cmd.extend(['-e', 'zuul_execution_phase=%s' % phase])
if count is not None:
cmd.extend(['-e', 'zuul_execution_phase_count=%s' % count])
if index is not None:
cmd.extend(['-e', 'zuul_execution_phase_index=%s' % index])
result, code = self.runAnsible(
cmd=cmd, timeout=timeout, trusted=playbook.trusted)