Update app.py
This commit is contained in:
parent
a766b10061
commit
5abb863d3e
1 changed files with 29 additions and 3 deletions
32
app.py
32
app.py
|
|
@ -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]))),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue