API - Adding basic system info/system state API (#1051)

This commit is contained in:
dgtlmoon
2022-10-23 19:15:11 +02:00
committed by GitHub
parent 492bbce6b6
commit 5d40e16c73
4 changed files with 46 additions and 3 deletions

View File

@@ -122,3 +122,33 @@ class CreateWatch(Resource):
return {'status': "OK"}, 200
return list, 200
class SystemInfo(Resource):
def __init__(self, **kwargs):
# datastore is a black box dependency
self.datastore = kwargs['datastore']
self.update_q = kwargs['update_q']
@auth.check_token
def get(self):
import time
overdue_watches = []
# Check all watches and report which have not been checked but should have been
for uuid, watch in self.datastore.data.get('watching', {}).items():
# see if now - last_checked is greater than the time that should have been
# this is not super accurate (maybe they just edited it) but better than nothing
t = watch.threshold_seconds()
if not t:
t = self.datastore.threshold_seconds
time_since_check = time.time() - watch.get('last_checked')
if time_since_check > t:
overdue_watches.append(uuid)
return {
'queue_size': self.update_q.qsize(),
'overdue_watches': overdue_watches,
'uptime': round(time.time() - self.datastore.start_time, 2),
'watch_count': len(self.datastore.data.get('watching', {}))
}, 200