mirror of
https://github.com/YunoHost/moulinette.git
synced 2024-09-03 20:06:31 +02:00
Limit stats and fix filtering in monitor
This commit is contained in:
parent
f93fb66e10
commit
9207009dfa
1 changed files with 12 additions and 4 deletions
|
@ -450,6 +450,14 @@ def _save_stats(stats, period, date=None):
|
||||||
if not os.path.isdir(stats_path):
|
if not os.path.isdir(stats_path):
|
||||||
os.makedirs(stats_path)
|
os.makedirs(stats_path)
|
||||||
|
|
||||||
|
# Limit stats
|
||||||
|
if date is None:
|
||||||
|
t = stats['timestamp']
|
||||||
|
limit = { 'day': 86400, 'week': 604800, 'month': 2419200 }
|
||||||
|
if (t[len(t) - 1] - t[0]) > limit[period]:
|
||||||
|
begin = t[len(t) - 1] - limit[period]
|
||||||
|
stats = _filter_stats(stats, begin)
|
||||||
|
|
||||||
# Write file content
|
# Write file content
|
||||||
with open(pkl_file, 'w') as f:
|
with open(pkl_file, 'w') as f:
|
||||||
pickle.dump(stats, f)
|
pickle.dump(stats, f)
|
||||||
|
@ -507,7 +515,7 @@ def _filter_stats(stats, t_begin=None, t_end=None):
|
||||||
if t_begin and i_begin is None and t >= t_begin:
|
if t_begin and i_begin is None and t >= t_begin:
|
||||||
i_begin = i
|
i_begin = i
|
||||||
if t_end and i != 0 and i_end is None and t > t_end:
|
if t_end and i != 0 and i_end is None and t > t_end:
|
||||||
i_end = i - 1
|
i_end = i
|
||||||
# Check indexes
|
# Check indexes
|
||||||
if i_begin is None:
|
if i_begin is None:
|
||||||
if t_begin and t_begin > stats['timestamp'][0]:
|
if t_begin and t_begin > stats['timestamp'][0]:
|
||||||
|
@ -516,8 +524,8 @@ def _filter_stats(stats, t_begin=None, t_end=None):
|
||||||
if i_end is None:
|
if i_end is None:
|
||||||
if t_end and t_end < stats['timestamp'][0]:
|
if t_end and t_end < stats['timestamp'][0]:
|
||||||
return None
|
return None
|
||||||
i_end = len(stats['timestamp']) - 1
|
i_end = len(stats['timestamp'])
|
||||||
if i_begin == 0 and i_end == (len(stats['timestamp']) - 1):
|
if i_begin == 0 and i_end == len(stats['timestamp']):
|
||||||
return stats
|
return stats
|
||||||
|
|
||||||
# Filter function
|
# Filter function
|
||||||
|
@ -526,7 +534,7 @@ def _filter_stats(stats, t_begin=None, t_end=None):
|
||||||
if isinstance(v, dict):
|
if isinstance(v, dict):
|
||||||
s[k] = _filter(v, i, j)
|
s[k] = _filter(v, i, j)
|
||||||
elif isinstance(v, list):
|
elif isinstance(v, list):
|
||||||
s[k] = v[i:j] if i != j else [v[i]]
|
s[k] = v[i:j]
|
||||||
return s
|
return s
|
||||||
|
|
||||||
stats = _filter(stats, i_begin, i_end)
|
stats = _filter(stats, i_begin, i_end)
|
||||||
|
|
Loading…
Reference in a new issue