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:
parent
c9d11ab291
commit
e9a8184fe0
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue