diff options
author | Simon Westphahl <simon.westphahl@bmw.de> | 2020-10-30 09:52:21 +0100 |
---|---|---|
committer | Simon Westphahl <simon.westphahl@bmw.de> | 2021-03-18 09:23:44 +0100 |
commit | 55ac08d3d6ebe9015798e5cbc5a9b34065052bcb (patch) | |
tree | 2e603298146ff11354ff015fa657dea06b41d233 | |
parent | 89328b9251b29ef48adcb00bef12279f31f75de5 (diff) | |
download | zuul-55ac08d3d6ebe9015798e5cbc5a9b34065052bcb.tar.gz |
Allow (de-)serialization of trigger events
Since trigger events will be stored in Zookeeper we need a way to
(de-)serialze them from/to dictionaries.
Change-Id: I1698e22b61947761ddeb10264b84ec157609495b
-rw-r--r-- | zuul/driver/gerrit/gerritmodel.py | 16 | ||||
-rw-r--r-- | zuul/driver/github/githubmodel.py | 23 | ||||
-rw-r--r-- | zuul/driver/gitlab/gitlabmodel.py | 20 | ||||
-rw-r--r-- | zuul/driver/pagure/paguremodel.py | 20 | ||||
-rw-r--r-- | zuul/driver/timer/timermodel.py | 9 | ||||
-rw-r--r-- | zuul/driver/zuul/zuulmodel.py | 9 | ||||
-rw-r--r-- | zuul/model.py | 60 |
7 files changed, 154 insertions, 3 deletions
diff --git a/zuul/driver/gerrit/gerritmodel.py b/zuul/driver/gerrit/gerritmodel.py index c80c04563..095761222 100644 --- a/zuul/driver/gerrit/gerritmodel.py +++ b/zuul/driver/gerrit/gerritmodel.py @@ -16,7 +16,6 @@ import copy import re import time import urllib.parse - import dateutil.parser from zuul.model import EventFilter, RefFilter @@ -165,6 +164,21 @@ class GerritTriggerEvent(TriggerEvent): self.scheme = None self.patchsetcomments = None + def toDict(self): + d = super().toDict() + d["approvals"] = self.approvals + d["uuid"] = self.uuid + d["scheme"] = self.scheme + d["patchsetcomments"] = self.patchsetcomments + return d + + def updateFromDict(self, d): + super().updateFromDict(d) + self.approvals = d["approvals"] + self.uuid = d["uuid"] + self.scheme = d["scheme"] + self.patchsetcomments = d["patchsetcomments"] + def __repr__(self): ret = '<GerritTriggerEvent %s %s' % (self.type, self.canonical_project_name) diff --git a/zuul/driver/github/githubmodel.py b/zuul/driver/github/githubmodel.py index 433141ec1..cc4ca747d 100644 --- a/zuul/driver/github/githubmodel.py +++ b/zuul/driver/github/githubmodel.py @@ -78,6 +78,29 @@ class GithubTriggerEvent(TriggerEvent): self.status = None self.commits = [] + def toDict(self): + d = super().toDict() + d["title"] = self.title + d["label"] = self.label + d["unlabel"] = self.unlabel + d["action"] = self.action + d["delivery"] = self.delivery + d["check_run"] = self.check_run + d["status"] = self.status + d["commits"] = self.commits + return d + + def updateFromDict(self, d): + super().updateFromDict(d) + self.title = d["title"] + self.label = d["label"] + self.unlabel = d["unlabel"] + self.action = d["action"] + self.delivery = d["delivery"] + self.check_run = d["check_run"] + self.status = d["status"] + self.commits = d["commits"] + def isPatchsetCreated(self): if self.type == 'pull_request': return self.action in ['opened', 'changed'] diff --git a/zuul/driver/gitlab/gitlabmodel.py b/zuul/driver/gitlab/gitlabmodel.py index fdf6de042..88f377488 100644 --- a/zuul/driver/gitlab/gitlabmodel.py +++ b/zuul/driver/gitlab/gitlabmodel.py @@ -13,7 +13,6 @@ # under the License. import re - from zuul.model import Change, TriggerEvent, EventFilter, RefFilter EMPTY_GIT_REF = '0' * 40 # git sha of all zeros, used during creates/deletes @@ -66,6 +65,25 @@ class GitlabTriggerEvent(TriggerEvent): self.change_number = None self.tag = None + def toDict(self): + d = super().toDict() + d["trigger_name"] = self.trigger_name + d["title"] = self.title + d["action"] = self.action + d["labels"] = self.labels + d["change_number"] = self.change_number + d["tag"] = self.tag + return d + + def updateFromDict(self, d): + super().updateFromDict(d) + self.trigger_name = d["trigger_name"] + self.title = d["title"] + self.action = d["action"] + self.labels = d["labels"] + self.change_number = d["change_number"] + self.tag = d["tag"] + def _repr(self): r = [super(GitlabTriggerEvent, self)._repr()] if self.action: diff --git a/zuul/driver/pagure/paguremodel.py b/zuul/driver/pagure/paguremodel.py index 93a0866da..b06daa0a5 100644 --- a/zuul/driver/pagure/paguremodel.py +++ b/zuul/driver/pagure/paguremodel.py @@ -13,6 +13,7 @@ # under the License. import re + from zuul.model import Change, TriggerEvent, EventFilter, RefFilter EMPTY_GIT_REF = '0' * 40 # git sha of all zeros, used during creates/deletes @@ -71,6 +72,25 @@ class PagureTriggerEvent(TriggerEvent): self.tags = [] self.tag = None + def toDict(self): + d = super().toDict() + d["trigger_name"] = self.trigger_name + d["title"] = self.title + d["action"] = self.action + d["status"] = self.status + d["tags"] = list(self.tags) + d["tag"] = self.tag + return d + + def updateFromDict(self, d): + super().updateFromDict(d) + self.trigger_name = d.get("trigger_name", "pagure") + self.title = d.get("title") + self.action = d.get("action") + self.status = d.get("status") + self.tags = d.get("tags", []) + self.tag = d.get("tag") + def _repr(self): r = [super(PagureTriggerEvent, self)._repr()] if self.action: diff --git a/zuul/driver/timer/timermodel.py b/zuul/driver/timer/timermodel.py index d6f14152e..d1806eed7 100644 --- a/zuul/driver/timer/timermodel.py +++ b/zuul/driver/timer/timermodel.py @@ -60,3 +60,12 @@ class TimerTriggerEvent(TriggerEvent): def __init__(self): super(TimerTriggerEvent, self).__init__() self.timespec = None + + def toDict(self): + d = super().toDict() + d["timespec"] = self.timespec + return d + + def updateFromDict(self, d): + super().updateFromDict(d) + self.timespec = d["timespec"] diff --git a/zuul/driver/zuul/zuulmodel.py b/zuul/driver/zuul/zuulmodel.py index 036f6d2dd..6c67ab83c 100644 --- a/zuul/driver/zuul/zuulmodel.py +++ b/zuul/driver/zuul/zuulmodel.py @@ -61,3 +61,12 @@ class ZuulTriggerEvent(TriggerEvent): def __init__(self): super(ZuulTriggerEvent, self).__init__() self.pipeline_name = None + + def toDict(self): + d = super().toDict() + d["pipeline_name"] = self.pipeline_name + return d + + def updateFromDict(self, d): + super().updateFromDict(d) + self.pipeline_name = d["pipeline_name"] diff --git a/zuul/model.py b/zuul/model.py index 0771ff169..05730db68 100644 --- a/zuul/model.py +++ b/zuul/model.py @@ -3804,7 +3804,7 @@ class NodesProvisionedEvent(ResultEvent): self.request_id = request.id -class TriggerEvent(object): +class TriggerEvent(AbstractEvent): """Incoming event from an external system.""" def __init__(self): # TODO(jeblair): further reduce this list @@ -3841,6 +3841,64 @@ class TriggerEvent(object): self.timestamp = None self.arrived_at_scheduler_timestamp = None + def toDict(self): + return { + "data": self.data, + "type": self.type, + "branch_updated": self.branch_updated, + "branch_created": self.branch_created, + "branch_deleted": self.branch_deleted, + "branch_protected": self.branch_protected, + "ref": self.ref, + "tenant_name": self.tenant_name, + "project_hostname": self.project_hostname, + "project_name": self.project_name, + "trigger_name": self.trigger_name, + "account": self.account, + "change_number": self.change_number, + "change_url": self.change_url, + "patch_number": self.patch_number, + "branch": self.branch, + "comment": self.comment, + "state": self.state, + "oldrev": self.oldrev, + "newrev": self.newrev, + "forced_pipeline": self.forced_pipeline, + "zuul_event_id": self.zuul_event_id, + "timestamp": self.timestamp, + "arrived_at_scheduler_timestamp": ( + self.arrived_at_scheduler_timestamp + ), + } + + def updateFromDict(self, d): + self.data = d["data"] + self.type = d["type"] + self.branch_updated = d["branch_updated"] + self.branch_created = d["branch_created"] + self.branch_deleted = d["branch_deleted"] + self.branch_protected = d["branch_protected"] + self.ref = d["ref"] + self.tenant_name = d["tenant_name"] + self.project_hostname = d["project_hostname"] + self.project_name = d["project_name"] + self.trigger_name = d["trigger_name"] + self.account = d["account"] + self.change_number = d["change_number"] + self.change_url = d["change_url"] + self.patch_number = d["patch_number"] + self.branch = d["branch"] + self.comment = d["comment"] + self.state = d["state"] + self.oldrev = d["oldrev"] + self.newrev = d["newrev"] + self.forced_pipeline = d["forced_pipeline"] + self.zuul_event_id = d["zuul_event_id"] + self.timestamp = d["timestamp"] + self.arrived_at_scheduler_timestamp = ( + d["arrived_at_scheduler_timestamp"] + ) + @property def canonical_project_name(self): return self.project_hostname + '/' + self.project_name |