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
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user