Make pushing zuul refs upstream optional.

And the default -- so that Zuul doesn't need any special gerrit
privileges to run out of the box.

Change-Id: I36411b299c8363d509498ece8ea21f88665ca39a
Reviewed-on: https://review.openstack.org/11589
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
This commit is contained in:
James E. Blair 2012-08-17 13:48:46 -07:00 committed by Jenkins
parent c6294a5925
commit ceabcbca1b
3 changed files with 23 additions and 16 deletions

View File

@ -11,3 +11,4 @@ sshkey=none
[zuul]
layout_config=layout.yaml
git_dir=/tmp/zuul-test/git
push_change_refs=true

View File

@ -84,12 +84,13 @@ class Repo(object):
class Merger(object):
log = logging.getLogger("zuul.Merger")
def __init__(self, trigger, working_root):
def __init__(self, trigger, working_root, push_refs):
self.trigger = trigger
self.repos = {}
self.working_root = working_root
if not os.path.exists(working_root):
os.makedirs(working_root)
self.push_refs = push_refs
def addProject(self, project, url):
try:
@ -145,19 +146,20 @@ class Merger(object):
self.log.info("Unable to merge %s" % change)
return False
# Push the results upstream to the zuul ref
for project, branches in projects.items():
repo = self.getRepo(project)
for branch in branches:
ref = 'refs/zuul/' + branch + '/' + target_ref
try:
repo.push(ref, ref)
complete = self.trigger.waitForRefSha(project, ref)
except:
self.log.exception("Unable to push %s" % ref)
return False
if not complete:
self.log.error("Ref %s did not show up in repo" % ref)
return False
if self.push_refs:
# Push the results upstream to the zuul ref
for project, branches in projects.items():
repo = self.getRepo(project)
for branch in branches:
ref = 'refs/zuul/' + branch + '/' + target_ref
try:
repo.push(ref, ref)
complete = self.trigger.waitForRefSha(project, ref)
except:
self.log.exception("Unable to push %s" % ref)
return False
if not complete:
self.log.error("Ref %s did not show up in repo" % ref)
return False
return True

View File

@ -163,7 +163,11 @@ class Scheduler(threading.Thread):
merge_root = self.config.get('zuul', 'git_dir')
else:
merge_root = '/var/lib/zuul/git'
self.merger = merger.Merger(self.trigger, merge_root)
if self.config.has_option('zuul', 'push_change_refs'):
push_refs = self.config.getboolean('zuul', 'push_change_refs')
else:
push_refs = False
self.merger = merger.Merger(self.trigger, merge_root, push_refs)
for project in self.projects.values():
url = self.trigger.getGitUrl(project)
self.merger.addProject(project, url)