Add tenants
Change-Id: Ia6c21152c00c9380c17c559290ed98ff22cf767b
This commit is contained in:
@@ -31,6 +31,7 @@ class BaseSource(object):
|
||||
self.source_config = source_config
|
||||
self.sched = sched
|
||||
self.connection = connection
|
||||
self.projects = {}
|
||||
|
||||
def stop(self):
|
||||
"""Stop the source."""
|
||||
@@ -60,7 +61,7 @@ class BaseSource(object):
|
||||
"""Called after configuration has been processed."""
|
||||
|
||||
@abc.abstractmethod
|
||||
def getChange(self, event, project):
|
||||
def getChange(self, event):
|
||||
"""Get the change representing an event."""
|
||||
|
||||
@abc.abstractmethod
|
||||
@@ -70,3 +71,7 @@ class BaseSource(object):
|
||||
@abc.abstractmethod
|
||||
def getGitUrl(self, project):
|
||||
"""Get the git url for a project."""
|
||||
|
||||
@abc.abstractmethod
|
||||
def getProject(self, name):
|
||||
"""Get a project."""
|
||||
|
||||
@@ -16,7 +16,7 @@ import logging
|
||||
import re
|
||||
import time
|
||||
from zuul import exceptions
|
||||
from zuul.model import Change, Ref, NullChange
|
||||
from zuul.model import Change, Ref, NullChange, Project
|
||||
from zuul.source import BaseSource
|
||||
|
||||
|
||||
@@ -126,7 +126,12 @@ class GerritSource(BaseSource):
|
||||
def postConfig(self):
|
||||
pass
|
||||
|
||||
def getChange(self, event, project):
|
||||
def getProject(self, name):
|
||||
if name not in self.projects:
|
||||
self.projects[name] = Project(name)
|
||||
return self.projects[name]
|
||||
|
||||
def getChange(self, event):
|
||||
if event.change_number:
|
||||
refresh = False
|
||||
if event._needs_refresh:
|
||||
@@ -135,12 +140,14 @@ class GerritSource(BaseSource):
|
||||
change = self._getChange(event.change_number, event.patch_number,
|
||||
refresh=refresh)
|
||||
elif event.ref:
|
||||
project = self.getProject(event.project_name)
|
||||
change = Ref(project)
|
||||
change.ref = event.ref
|
||||
change.oldrev = event.oldrev
|
||||
change.newrev = event.newrev
|
||||
change.url = self._getGitwebUrl(project, sha=event.newrev)
|
||||
else:
|
||||
# TODOv3(jeblair): we need to get the project from the event
|
||||
change = NullChange(project)
|
||||
return change
|
||||
|
||||
@@ -227,11 +234,7 @@ class GerritSource(BaseSource):
|
||||
|
||||
if 'project' not in data:
|
||||
raise exceptions.ChangeNotFound(change.number, change.patchset)
|
||||
# If updated changed came as a dependent on
|
||||
# and its project is not defined,
|
||||
# then create a 'foreign' project for it in layout
|
||||
change.project = self.sched.getProject(data['project'],
|
||||
create_foreign=bool(history))
|
||||
change.project = self.getProject(data['project'])
|
||||
change.branch = data['branch']
|
||||
change.url = data['url']
|
||||
max_ps = 0
|
||||
|
||||
Reference in New Issue
Block a user