diff options
author | Oliver Poignant <oliver@poignant.se> | 2017-01-01 13:21:08 +0100 |
---|---|---|
committer | Oliver Poignant <oliver@poignant.se> | 2017-01-01 13:21:08 +0100 |
commit | bebe5fb16550ee46d165eb46de2e7aaa9cfd5406 (patch) | |
tree | 842d55dc48a069d103bcce8f8d7b5476367297e7 /gitautodeploy/events.py | |
parent | 01995b6b301763c92f40d6453d19eeb81c85e15c (diff) | |
download | Git-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.py | 65 |
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) |