summaryrefslogtreecommitdiffstats
path: root/gitautodeploy/events.py
diff options
context:
space:
mode:
authorOliver Poignant <oliver@poignant.se>2017-01-01 13:21:08 +0100
committerOliver Poignant <oliver@poignant.se>2017-01-01 13:21:08 +0100
commitbebe5fb16550ee46d165eb46de2e7aaa9cfd5406 (patch)
tree842d55dc48a069d103bcce8f8d7b5476367297e7 /gitautodeploy/events.py
parent01995b6b301763c92f40d6453d19eeb81c85e15c (diff)
downloadGit-Auto-Deploy-bebe5fb16550ee46d165eb46de2e7aaa9cfd5406.zip
Git-Auto-Deploy-bebe5fb16550ee46d165eb46de2e7aaa9cfd5406.tar.gz
Git-Auto-Deploy-bebe5fb16550ee46d165eb46de2e7aaa9cfd5406.tar.bz2
API for event status (disabled by default). Enhanced event logging.
Diffstat (limited to 'gitautodeploy/events.py')
-rw-r--r--gitautodeploy/events.py65
1 files changed, 57 insertions, 8 deletions
diff --git a/gitautodeploy/events.py b/gitautodeploy/events.py
index b021165..bbf93a2 100644
--- a/gitautodeploy/events.py
+++ b/gitautodeploy/events.py
@@ -1,4 +1,4 @@
-class Action(object):
+class SystemEvent(object):
def __init__(self, name=None):
import logging
@@ -7,16 +7,25 @@ class Action(object):
self.hub = None
self.messages = []
self.name = name
+ self.id = None
+ self.waiting = None
+ self.success = None
def __repr__(self):
- if self.name:
- return "<Action:%s>" % self.name
+ if self.id:
+ return "<SystemEvent:%s>" % self.id
else:
- return "<Action>"
+ return "<SystemEvent>"
def dict_repr(self):
+ from time import time
return {
- "messages": self.messages
+ "id": self.id,
+ "type": type(self).__name__,
+ "timestamp": time(),
+ "messages": self.messages,
+ "waiting": self.waiting,
+ "success": self.success
}
def register_hub(self, hub):
@@ -26,6 +35,21 @@ class Action(object):
self.messages.append(message)
self.hub.update_action(self, message)
+ def notify(self):
+ self.hub.notify(self)
+
+ def set_id(self, id):
+ self.id = id
+
+ def get_id(self):
+ return self.id
+
+ def set_waiting(self, value):
+ self.waiting = value
+
+ def set_success(self, value):
+ self.success = value
+
def log_debug(self, message):
self.logger.debug(message)
self.register_message(message, "DEBUG")
@@ -49,7 +73,7 @@ class Action(object):
self.hub.update_action(self)
-class WebhookAction(Action):
+class WebhookAction(SystemEvent):
"""Represents a webhook request event and keeps a copy of all incoming and outgoing data for monitoring purposes."""
def __init__(self, client_address, request_headers, request_body):
@@ -63,8 +87,27 @@ class WebhookAction(Action):
def dict_repr(self):
data = super(WebhookAction, self).dict_repr()
- data['request_headers'] = self.request_headers
- data['request_body'] = self.request_body
+ data['client-address'] = self.client_address[0]
+ data['client-port'] = self.client_address[1]
+ data['request-headers'] = self.request_headers
+ data['request-body'] = self.request_body
+ return data
+
+
+class StartupEvent(SystemEvent):
+
+ def __init__(self, address=None, port=None):
+ self.address = address
+ self.port = port
+ super(StartupEvent, self).__init__()
+
+ def __repr__(self):
+ return "<StartupEvent>"
+
+ def dict_repr(self):
+ data = super(StartupEvent, self).dict_repr()
+ data['address'] = self.address
+ data['port'] = self.port
return data
@@ -73,6 +116,7 @@ class EventStore(object):
def __init__(self):
self.actions = []
self.observers = []
+ self.next_id = 0
def register_observer(self, observer):
self.observers.append(observer)
@@ -86,7 +130,9 @@ class EventStore(object):
observer.update(*args, **kwargs)
def register_action(self, action):
+ action.set_id(self.next_id)
action.register_hub(self)
+ self.next_id = self.next_id + 1
self.actions.append(action)
self.update_observers(action)
@@ -94,6 +140,9 @@ class EventStore(object):
if len(self.actions) > 100:
self.actions.pop(0)
+ def notify(self, event):
+ self.update_observers(event=event)
+
def update_action(self, action, message=None):
self.update_observers(action, message)