Skip to content

Commit 531370d

Browse files
authored
Merge pull request #3 from Nostromo-energy/add_event_status_log
add event status log
2 parents c1ac872 + 05f8ae2 commit 531370d

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

openleadr/client.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ class OpenADRClient:
4646

4747
def __init__(self, ven_name, vtn_url, debug=False, cert=None, key=None,
4848
passphrase=None, vtn_fingerprint=None, show_fingerprint=True, ca_file=None,
49-
allow_jitter=True, ven_id=None, disable_signature=False, check_hostname=True):
49+
allow_jitter=True, ven_id=None, disable_signature=False, check_hostname=True,
50+
event_status_log_period=10, events_clean_up_period=300):
5051
"""
5152
Initializes a new OpenADR Client (Virtual End Node)
5253
@@ -67,6 +68,9 @@ def __init__(self, ven_name, vtn_url, debug=False, cert=None, key=None,
6768
:param str ven_id: The ID for this VEN. If you leave this blank,
6869
a VEN_ID will be assigned by the VTN.
6970
:param bool disable_signature: Whether or not to sign outgoing messages using a public-private key pair in PEM format.
71+
:param bool check_hostname: Whether or not to check hostname
72+
:param int event_status_log_period: Setting the priod of status change logging
73+
:param int events_clean_up_period: Setting the priod of not relevant events clean up
7074
"""
7175

7276
self.ven_name = ven_name
@@ -77,6 +81,8 @@ def __init__(self, ven_name, vtn_url, debug=False, cert=None, key=None,
7781
self.vtn_fingerprint = vtn_fingerprint
7882
self.debug = debug
7983
self.check_hostname = check_hostname
84+
self.event_status_log_period = event_status_log_period
85+
self.events_clean_up_period = events_clean_up_period
8086

8187
self.reports = []
8288
self.report_callbacks = {} # Holds the callbacks for each specific report
@@ -165,9 +171,12 @@ async def run(self):
165171
self.scheduler.add_job(self._poll,
166172
trigger='interval',
167173
seconds=self.poll_frequency.total_seconds())
174+
self.scheduler.add_job(self._event_status_log,
175+
trigger='interval',
176+
seconds=self.event_status_log_period)
168177
self.scheduler.add_job(self._event_cleanup,
169178
trigger='interval',
170-
seconds=300)
179+
seconds=self.events_clean_up_period)
171180
self.scheduler.start()
172181

173182
async def stop(self):
@@ -1038,14 +1047,14 @@ async def _execute_hooks(self, hook_name, *args, **kwargs):
10381047
f"{err.__class__.__name__}: {err}")
10391048

10401049
async def _on_event(self, message):
1041-
logger.debug("The VEN received an event")
10421050
events = message['events']
10431051
try:
10441052
results = []
10451053
for event in message['events']:
10461054
event_id = event['event_descriptor']['event_id']
10471055
event_status = event['event_descriptor']['event_status']
10481056
modification_number = event['event_descriptor']['modification_number']
1057+
logger.info("The VEN received an event with event_id: %s, status: %s, modification_number: %s", event_id, event_status, modification_number) # change to debug
10491058
received_event = utils.find_by(self.received_events, 'event_descriptor.event_id', event_id)
10501059
if received_event:
10511060
if received_event['event_descriptor']['modification_number'] == modification_number:
@@ -1104,6 +1113,20 @@ async def _on_event(self, message):
11041113
else:
11051114
logger.info("Not sending any event responses, because a response was not required/allowed by the VTN.")
11061115

1116+
async def _event_status_log(self):
1117+
"""
1118+
Periodic task that will log each event status change
1119+
"""
1120+
for event in self.received_events:
1121+
# ignoring the cancelled case
1122+
if event['event_descriptor']['event_status'] == 'cancelled':
1123+
continue
1124+
1125+
event_status = utils.determine_event_status(event['active_period'])
1126+
if event_status != event['event_descriptor']['event_status']:
1127+
event['event_descriptor']['event_status'] = event_status
1128+
logger.info("event_id: %s has new status: %s", event['event_descriptor']['event_id'], event_status) # change to debug
1129+
11071130
async def _event_cleanup(self):
11081131
"""
11091132
Periodic task that will clean up completed and cancelled events in our memory.

0 commit comments

Comments
 (0)