Skip to content

Commit 6aee233

Browse files
committed
add event status log
1 parent 2524684 commit 6aee233

1 file changed

Lines changed: 23 additions & 3 deletions

File tree

openleadr/client.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ class OpenADRClient:
4444
"""
4545
def __init__(self, ven_name, vtn_url, debug=False, cert=None, key=None,
4646
passphrase=None, vtn_fingerprint=None, show_fingerprint=True, ca_file=None,
47-
allow_jitter=True, ven_id=None, disable_signature=False, check_hostname=True):
47+
allow_jitter=True, ven_id=None, disable_signature=False, check_hostname=True,
48+
event_status_log_period=10, events_clean_up_period=300):
4849
"""
4950
Initializes a new OpenADR Client (Virtual End Node)
5051
@@ -75,6 +76,8 @@ def __init__(self, ven_name, vtn_url, debug=False, cert=None, key=None,
7576
self.vtn_fingerprint = vtn_fingerprint
7677
self.debug = debug
7778
self.check_hostname = check_hostname
79+
self.event_status_log_period = event_status_log_period
80+
self.events_clean_up_period = events_clean_up_period
7881

7982
self.reports = []
8083
self.report_callbacks = {} # Holds the callbacks for each specific report
@@ -162,9 +165,12 @@ async def run(self):
162165
self.scheduler.add_job(self._poll,
163166
trigger='interval',
164167
seconds=self.poll_frequency.total_seconds())
168+
self.scheduler.add_job(self._event_status_log,
169+
trigger='interval',
170+
seconds=self.event_status_log_period)
165171
self.scheduler.add_job(self._event_cleanup,
166172
trigger='interval',
167-
seconds=300)
173+
seconds=self.events_clean_up_period)
168174
self.scheduler.start()
169175

170176
async def stop(self):
@@ -937,14 +943,14 @@ async def _execute_hooks(self, hook_name, *args, **kwargs):
937943
f"{err.__class__.__name__}: {err}")
938944

939945
async def _on_event(self, message):
940-
logger.debug("The VEN received an event")
941946
events = message['events']
942947
try:
943948
results = []
944949
for event in message['events']:
945950
event_id = event['event_descriptor']['event_id']
946951
event_status = event['event_descriptor']['event_status']
947952
modification_number = event['event_descriptor']['modification_number']
953+
logger.info("The VEN received an event with event_id: %s, status: %s, modification_number: %s", event_id, event_status, modification_number)
948954
received_event = utils.find_by(self.received_events, 'event_descriptor.event_id', event_id)
949955
if received_event:
950956
if received_event['event_descriptor']['modification_number'] == modification_number:
@@ -1003,6 +1009,20 @@ async def _on_event(self, message):
10031009
else:
10041010
logger.info("Not sending any event responses, because a response was not required/allowed by the VTN.")
10051011

1012+
async def _event_status_log(self):
1013+
"""
1014+
Periodic task that will log each event status change
1015+
"""
1016+
for event in self.received_events:
1017+
# ignoring the cancelled case
1018+
if event['event_descriptor']['event_status'] == 'cancelled':
1019+
return
1020+
1021+
event_status = utils.determine_event_status(event['active_period'])
1022+
if event_status != event['event_descriptor']['event_status']:
1023+
event['event_descriptor']['event_status'] = event_status
1024+
logger.info("event_id: %s has new status: %s", event['event_descriptor']['event_id'], event_status)
1025+
10061026
async def _event_cleanup(self):
10071027
"""
10081028
Periodic task that will clean up completed and cancelled events in our memory.

0 commit comments

Comments
 (0)