Merge "Add LoggerAdapter for executor jobs" into feature/zuulv3

This commit is contained in:
Jenkins 2017-06-06 17:31:09 +00:00 committed by Gerrit Code Review
commit 4b56de58a8
2 changed files with 31 additions and 14 deletions

View File

@ -410,14 +410,14 @@ class ExecutorServer(object):
self.job_workers = {} self.job_workers = {}
def _getMerger(self, root): def _getMerger(self, root, logger=None):
if root != self.merge_root: if root != self.merge_root:
cache_root = self.merge_root cache_root = self.merge_root
else: else:
cache_root = None cache_root = None
return zuul.merger.merger.Merger(root, self.connections, return zuul.merger.merger.Merger(root, self.connections,
self.merge_email, self.merge_name, self.merge_email, self.merge_name,
cache_root) cache_root, logger)
def start(self): def start(self):
self._running = True self._running = True
@ -638,15 +638,22 @@ class ExecutorServer(object):
job.sendWorkComplete(json.dumps(result)) job.sendWorkComplete(json.dumps(result))
class AnsibleJob(object): class AnsibleJobLogAdapter(logging.LoggerAdapter):
log = logging.getLogger("zuul.AnsibleJob") def process(self, msg, kwargs):
msg, kwargs = super(AnsibleJobLogAdapter, self).process(msg, kwargs)
msg = '[build: %s] %s' % (kwargs['extra']['job'], msg)
return msg, kwargs
class AnsibleJob(object):
RESULT_NORMAL = 1 RESULT_NORMAL = 1
RESULT_TIMED_OUT = 2 RESULT_TIMED_OUT = 2
RESULT_UNREACHABLE = 3 RESULT_UNREACHABLE = 3
RESULT_ABORTED = 4 RESULT_ABORTED = 4
def __init__(self, executor_server, job): def __init__(self, executor_server, job):
logger = logging.getLogger("zuul.AnsibleJob")
self.log = AnsibleJobLogAdapter(logger, {'job': job.unique})
self.executor_server = executor_server self.executor_server = executor_server
self.job = job self.job = job
self.jobdir = None self.jobdir = None
@ -720,7 +727,8 @@ class AnsibleJob(object):
task.wait() task.wait()
self.log.debug("Job %s: git updates complete" % (self.job.unique,)) self.log.debug("Job %s: git updates complete" % (self.job.unique,))
merger = self.executor_server._getMerger(self.jobdir.src_root) merger = self.executor_server._getMerger(self.jobdir.src_root,
self.log)
repos = {} repos = {}
for project in args['projects']: for project in args['projects']:
self.log.debug("Cloning %s/%s" % (project['connection'], self.log.debug("Cloning %s/%s" % (project['connection'],
@ -979,7 +987,8 @@ class AnsibleJob(object):
# the stack of changes we are testing, so check out the branch # the stack of changes we are testing, so check out the branch
# tip into a dedicated space. # tip into a dedicated space.
merger = self.executor_server._getMerger(jobdir_playbook.root) merger = self.executor_server._getMerger(jobdir_playbook.root,
self.log)
merger.checkoutBranch(playbook['connection'], project.name, merger.checkoutBranch(playbook['connection'], project.name,
playbook['branch']) playbook['branch'])
@ -1063,7 +1072,8 @@ class AnsibleJob(object):
# in the dependency chain for the change (in which case, # in the dependency chain for the change (in which case,
# there is no existing untrusted checkout of it). Check # there is no existing untrusted checkout of it). Check
# out the branch tip into a dedicated space. # out the branch tip into a dedicated space.
merger = self.executor_server._getMerger(trusted_root) merger = self.executor_server._getMerger(trusted_root,
self.log)
merger.checkoutBranch(role['connection'], project.name, merger.checkoutBranch(role['connection'], project.name,
'master') 'master')
orig_repo_path = os.path.join(trusted_root, orig_repo_path = os.path.join(trusted_root,

View File

@ -42,9 +42,12 @@ class ZuulReference(git.Reference):
class Repo(object): class Repo(object):
log = logging.getLogger("zuul.Repo") def __init__(self, remote, local, email, username,
cache_path=None, logger=None):
def __init__(self, remote, local, email, username, cache_path=None): if logger is None:
self.log = logging.getLogger("zuul.Repo")
else:
self.log = logger
self.remote_url = remote self.remote_url = remote
self.local_path = local self.local_path = local
self.email = email self.email = email
@ -261,10 +264,13 @@ class Repo(object):
class Merger(object): class Merger(object):
log = logging.getLogger("zuul.Merger")
def __init__(self, working_root, connections, email, username, def __init__(self, working_root, connections, email, username,
cache_root=None): cache_root=None, logger=None):
self.logger = logger
if logger is None:
self.log = logging.getLogger("zuul.Merger")
else:
self.log = logger
self.repos = {} self.repos = {}
self.working_root = working_root self.working_root = working_root
if not os.path.exists(working_root): if not os.path.exists(working_root):
@ -300,7 +306,8 @@ class Merger(object):
project_name) project_name)
else: else:
cache_path = None cache_path = None
repo = Repo(url, path, self.email, self.username, cache_path) repo = Repo(url, path, self.email, self.username, cache_path,
self.logger)
self.repos[key] = repo self.repos[key] = repo
except Exception: except Exception: