Add precedence to merge jobs

When creating a merge job, give it the precedence of the associated
pipeline.

Change-Id: I96c6a942a08f603ae7cce442427ae171d7e76d78
This commit is contained in:
James E. Blair 2014-09-24 13:37:45 -07:00
parent c9d11ab291
commit e9a8184fe0
2 changed files with 15 additions and 8 deletions

View File

@ -18,6 +18,8 @@ from uuid import uuid4
import gear
import zuul.model
def getJobData(job):
if not len(job.data):
@ -79,23 +81,26 @@ class MergeClient(object):
return True
return False
def submitJob(self, name, data, build_set):
def submitJob(self, name, data, build_set,
precedence=zuul.model.PRECEDENCE_NORMAL):
uuid = str(uuid4().hex)
self.log.debug("Submitting job %s with data %s" % (name, data))
job = gear.Job(name,
json.dumps(data),
unique=uuid)
self.build_sets[uuid] = build_set
self.gearman.submitJob(job)
self.gearman.submitJob(job, precedence=precedence)
def mergeChanges(self, items, build_set):
def mergeChanges(self, items, build_set,
precedence=zuul.model.PRECEDENCE_NORMAL):
data = dict(items=items)
self.submitJob('merger:merge', data, build_set)
self.submitJob('merger:merge', data, build_set, precedence)
def updateRepo(self, project, url, build_set):
def updateRepo(self, project, url, build_set,
precedence=zuul.model.PRECEDENCE_NORMAL):
data = dict(project=project,
url=url)
self.submitJob('merger:update', data, build_set)
self.submitJob('merger:update', data, build_set, precedence)
def onBuildCompleted(self, job):
build_set = self.build_sets.get(job.unique)

View File

@ -1222,12 +1222,14 @@ class BasePipelineManager(object):
all_items = dependent_items + [item]
merger_items = map(self._makeMergerItem, all_items)
self.sched.merger.mergeChanges(merger_items,
item.current_build_set)
item.current_build_set,
self.pipeline.precedence)
else:
self.log.debug("Preparing update repo for: %s" % item.change)
url = self.pipeline.source.getGitUrl(item.change.project)
self.sched.merger.updateRepo(item.change.project.name,
url, build_set)
url, build_set,
self.pipeline.precedence)
return False
def _launchJobs(self, item, jobs):