From 4457ca1086565e64f0bfbe962988ea10971c3d25 Mon Sep 17 00:00:00 2001 From: Simon Westphahl Date: Fri, 30 Oct 2020 14:54:17 +0100 Subject: [PATCH] Interface to get a driver's trigger event class In order to properly deserialize trigger events we need a way to get the trigger event class of the drivers. Change-Id: Idb16fd48ced078018e2735153ac213043f03c978 --- zuul/driver/__init__.py | 5 +++++ zuul/driver/gerrit/__init__.py | 4 ++++ zuul/driver/git/__init__.py | 9 +++++++-- zuul/driver/github/__init__.py | 4 ++++ zuul/driver/gitlab/__init__.py | 4 ++++ zuul/driver/pagure/__init__.py | 4 ++++ zuul/driver/timer/__init__.py | 4 ++++ zuul/driver/zuul/__init__.py | 4 ++++ zuul/lib/connections.py | 4 ++++ 9 files changed, 40 insertions(+), 2 deletions(-) diff --git a/zuul/driver/__init__.py b/zuul/driver/__init__.py index 713aceab89..863e5a4a26 100644 --- a/zuul/driver/__init__.py +++ b/zuul/driver/__init__.py @@ -161,6 +161,11 @@ class TriggerInterface(object, metaclass=abc.ABCMeta): """ pass + @abc.abstractmethod + def getTriggerEventClass(self): + """Get the drivers's trigger event class.""" + pass + class SourceInterface(object, metaclass=abc.ABCMeta): """The source interface to be implemented by a driver. diff --git a/zuul/driver/gerrit/__init__.py b/zuul/driver/gerrit/__init__.py index 4930c76317..0751f118be 100644 --- a/zuul/driver/gerrit/__init__.py +++ b/zuul/driver/gerrit/__init__.py @@ -15,6 +15,7 @@ from zuul.driver import Driver, ConnectionInterface, TriggerInterface from zuul.driver import SourceInterface, ReporterInterface from zuul.driver.gerrit import gerritconnection +from zuul.driver.gerrit import gerritmodel from zuul.driver.gerrit import gerrittrigger from zuul.driver.gerrit import gerritsource from zuul.driver.gerrit import gerritreporter @@ -49,6 +50,9 @@ class GerritDriver(Driver, ConnectionInterface, TriggerInterface, def getTrigger(self, connection, config=None): return gerrittrigger.GerritTrigger(self, connection, config) + def getTriggerEventClass(self): + return gerritmodel.GerritTriggerEvent + def getSource(self, connection): return gerritsource.GerritSource(self, connection) diff --git a/zuul/driver/git/__init__.py b/zuul/driver/git/__init__.py index 5a2687762e..e7d5281503 100644 --- a/zuul/driver/git/__init__.py +++ b/zuul/driver/git/__init__.py @@ -12,9 +12,11 @@ # License for the specific language governing permissions and limitations # under the License. -from zuul.driver import Driver, ConnectionInterface, SourceInterface -from zuul.driver import TriggerInterface +from zuul.driver import ( + Driver, ConnectionInterface, SourceInterface, TriggerInterface +) from zuul.driver.git import gitconnection +from zuul.driver.git import gitmodel from zuul.driver.git import gitsource from zuul.driver.git import gittrigger @@ -35,6 +37,9 @@ class GitDriver(Driver, ConnectionInterface, SourceInterface, def getTriggerSchema(self): return gittrigger.getSchema() + def getTriggerEventClass(self): + return gitmodel.GitTriggerEvent + def getRequireSchema(self): return {} diff --git a/zuul/driver/github/__init__.py b/zuul/driver/github/__init__.py index 919a521115..ce083a2a10 100644 --- a/zuul/driver/github/__init__.py +++ b/zuul/driver/github/__init__.py @@ -15,6 +15,7 @@ from zuul.driver import Driver, ConnectionInterface, TriggerInterface from zuul.driver import SourceInterface, ReporterInterface from zuul.driver.github import githubconnection +from zuul.driver.github import githubmodel from zuul.driver.github import githubtrigger from zuul.driver.github import githubsource from zuul.driver.github import githubreporter @@ -30,6 +31,9 @@ class GithubDriver(Driver, ConnectionInterface, TriggerInterface, def getTrigger(self, connection, config=None): return githubtrigger.GithubTrigger(self, connection, config) + def getTriggerEventClass(self): + return githubmodel.GithubTriggerEvent + def getSource(self, connection): return githubsource.GithubSource(self, connection) diff --git a/zuul/driver/gitlab/__init__.py b/zuul/driver/gitlab/__init__.py index 98bfb03b39..69f213d5d3 100644 --- a/zuul/driver/gitlab/__init__.py +++ b/zuul/driver/gitlab/__init__.py @@ -15,6 +15,7 @@ from zuul.driver import Driver, ConnectionInterface, TriggerInterface from zuul.driver import SourceInterface, ReporterInterface from zuul.driver.gitlab import gitlabconnection +from zuul.driver.gitlab import gitlabmodel from zuul.driver.gitlab import gitlabsource from zuul.driver.gitlab import gitlabreporter from zuul.driver.gitlab import gitlabtrigger @@ -30,6 +31,9 @@ class GitlabDriver(Driver, ConnectionInterface, TriggerInterface, def getTrigger(self, connection, config=None): return gitlabtrigger.GitlabTrigger(self, connection, config) + def getTriggerEventClass(self): + return gitlabmodel.GitlabTriggerEvent + def getSource(self, connection): return gitlabsource.GitlabSource(self, connection) diff --git a/zuul/driver/pagure/__init__.py b/zuul/driver/pagure/__init__.py index 5514b1c628..800583ff9c 100644 --- a/zuul/driver/pagure/__init__.py +++ b/zuul/driver/pagure/__init__.py @@ -15,6 +15,7 @@ from zuul.driver import Driver, ConnectionInterface, TriggerInterface from zuul.driver import SourceInterface, ReporterInterface from zuul.driver.pagure import pagureconnection +from zuul.driver.pagure import paguremodel from zuul.driver.pagure import paguresource from zuul.driver.pagure import pagurereporter from zuul.driver.pagure import paguretrigger @@ -30,6 +31,9 @@ class PagureDriver(Driver, ConnectionInterface, TriggerInterface, def getTrigger(self, connection, config=None): return paguretrigger.PagureTrigger(self, connection, config) + def getTriggerEventClass(self): + return paguremodel.PagureTriggerEvent + def getSource(self, connection): return paguresource.PagureSource(self, connection) diff --git a/zuul/driver/timer/__init__.py b/zuul/driver/timer/__init__.py index 8ab30b87ca..cc7552545a 100644 --- a/zuul/driver/timer/__init__.py +++ b/zuul/driver/timer/__init__.py @@ -23,6 +23,7 @@ from apscheduler.triggers.cron import CronTrigger from zuul.driver import Driver, TriggerInterface from zuul.driver.timer import timertrigger +from zuul.driver.timer import timermodel from zuul.driver.timer.timermodel import TimerTriggerEvent from zuul.lib.logutil import get_annotated_logger @@ -141,3 +142,6 @@ class TimerDriver(Driver, TriggerInterface): def getTriggerSchema(self): return timertrigger.getSchema() + + def getTriggerEventClass(self): + return timermodel.TimerTriggerEvent diff --git a/zuul/driver/zuul/__init__.py b/zuul/driver/zuul/__init__.py index fe37e74fed..93ffd53144 100644 --- a/zuul/driver/zuul/__init__.py +++ b/zuul/driver/zuul/__init__.py @@ -18,6 +18,7 @@ from uuid import uuid4 from zuul.driver import Driver, TriggerInterface from zuul.driver.zuul.zuulmodel import ZuulTriggerEvent +from zuul.driver.zuul import zuulmodel from zuul.driver.zuul import zuultrigger from zuul.lib.logutil import get_annotated_logger @@ -139,3 +140,6 @@ class ZuulDriver(Driver, TriggerInterface): def getTriggerSchema(self): return zuultrigger.getSchema() + + def getTriggerEventClass(self): + return zuulmodel.ZuulTriggerEvent diff --git a/zuul/lib/connections.py b/zuul/lib/connections.py index 0ef0949e98..608313fc0d 100644 --- a/zuul/lib/connections.py +++ b/zuul/lib/connections.py @@ -228,6 +228,10 @@ class ConnectionRegistry(object): connection = self.connections[connection_name] return connection.driver.getTrigger(connection, config) + def getTriggerEventClass(self, driver_name: str): + driver = self.drivers[driver_name] + return driver.getTriggerEventClass() + def getSourceByHostname(self, hostname): for connection in self.connections.values(): if hasattr(connection, 'canonical_hostname'):