Update app.py

This commit is contained in:
Blackwhitebear8 2025-10-31 20:26:41 +01:00
parent a766b10061
commit 5abb863d3e

32
app.py
View file

@ -345,22 +345,35 @@ def bgp_peer_history_data(neighbor_ip):
start_date_str = request.args.get('start_date') start_date_str = request.args.get('start_date')
end_date_str = request.args.get('end_date') end_date_str = request.args.get('end_date')
aggregation_interval_minutes = 10
if start_date_str and end_date_str: if start_date_str and end_date_str:
start_date = datetime.fromisoformat(start_date_str) start_date = datetime.fromisoformat(start_date_str)
end_date = datetime.fromisoformat(end_date_str) end_date = datetime.fromisoformat(end_date_str)
duration_days = (end_date - start_date).total_seconds() / 86400
if duration_days > 30:
aggregation_interval_minutes = 120
elif duration_days > 7:
aggregation_interval_minutes = 60
elif duration_days > 2:
aggregation_interval_minutes = 30
else: else:
time_range = request.args.get('range', '24h') time_range = request.args.get('range', '24h')
end_date = datetime.utcnow() end_date = datetime.utcnow()
if time_range == '7d': if time_range == '7d':
start_date = end_date - timedelta(days=7) start_date = end_date - timedelta(days=7)
aggregation_interval_minutes = 30
elif time_range == '30d': elif time_range == '30d':
start_date = end_date - timedelta(days=30) start_date = end_date - timedelta(days=30)
aggregation_interval_minutes = 60
elif time_range == '90d': elif time_range == '90d':
start_date = end_date - timedelta(days=90) start_date = end_date - timedelta(days=90)
aggregation_interval_minutes = 120
else: else:
start_date = end_date - timedelta(hours=24) start_date = end_date - timedelta(hours=24)
history_data = get_peer_history(neighbor_ip, start_date.isoformat(), end_date.isoformat()) history_data = get_peer_history(neighbor_ip, start_date.isoformat(), end_date.isoformat(), aggregation_interval_minutes)
labels = [item['timestamp'] for item in history_data] labels = [item['timestamp'] for item in history_data]
received_data = [item['prefixes_received'] for item in history_data] received_data = [item['prefixes_received'] for item in history_data]
@ -382,22 +395,35 @@ def total_routes_history_data():
start_date_str = request.args.get('start_date') start_date_str = request.args.get('start_date')
end_date_str = request.args.get('end_date') end_date_str = request.args.get('end_date')
aggregation_interval_minutes = 10
if start_date_str and end_date_str: if start_date_str and end_date_str:
start_date = datetime.fromisoformat(start_date_str) start_date = datetime.fromisoformat(start_date_str)
end_date = datetime.fromisoformat(end_date_str) end_date = datetime.fromisoformat(end_date_str)
duration_days = (end_date - start_date).total_seconds() / 86400
if duration_days > 30:
aggregation_interval_minutes = 120
elif duration_days > 7:
aggregation_interval_minutes = 60
elif duration_days > 2:
aggregation_interval_minutes = 30
else: else:
time_range = request.args.get('range', '24h') time_range = request.args.get('range', '24h')
end_date = datetime.utcnow() end_date = datetime.utcnow()
if time_range == '7d': if time_range == '7d':
start_date = end_date - timedelta(days=7) start_date = end_date - timedelta(days=7)
aggregation_interval_minutes = 30
elif time_range == '30d': elif time_range == '30d':
start_date = end_date - timedelta(days=30) start_date = end_date - timedelta(days=30)
aggregation_interval_minutes = 60
elif time_range == '90d': elif time_range == '90d':
start_date = end_date - timedelta(days=90) start_date = end_date - timedelta(days=90)
else: # Default to 24h aggregation_interval_minutes = 120
else:
start_date = end_date - timedelta(hours=24) start_date = end_date - timedelta(hours=24)
history_data = get_total_routes_history(start_date.isoformat(), end_date.isoformat()) history_data = get_total_routes_history(start_date.isoformat(), end_date.isoformat(), aggregation_interval_minutes)
response_data = { response_data = {
"labels": sorted(list(set([item['timestamp'] for item in history_data]))), "labels": sorted(list(set([item['timestamp'] for item in history_data]))),