2018-11-08 19:45:21 +00:00
|
|
|
"""
|
|
|
|
|
load and maintain global stats
|
|
|
|
|
"""
|
|
|
|
|
|
2019-12-05 16:57:52 +00:00
|
|
|
from peeringdb_server.models import (
|
|
|
|
|
Facility,
|
2021-07-10 10:12:35 -05:00
|
|
|
InternetExchange,
|
|
|
|
|
Network,
|
2019-12-05 16:57:52 +00:00
|
|
|
NetworkFacility,
|
2021-07-10 10:12:35 -05:00
|
|
|
NetworkIXLan,
|
2019-12-05 16:57:52 +00:00
|
|
|
)
|
2018-11-08 19:45:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def stats():
|
|
|
|
|
return {
|
|
|
|
|
Network.handleref.tag: Network.handleref.filter(status="ok").count(),
|
2019-12-05 16:57:52 +00:00
|
|
|
InternetExchange.handleref.tag: InternetExchange.handleref.filter(
|
|
|
|
|
status="ok"
|
|
|
|
|
).count(),
|
2018-11-08 19:45:21 +00:00
|
|
|
Facility.handleref.tag: Facility.handleref.filter(status="ok").count(),
|
2019-12-05 16:57:52 +00:00
|
|
|
NetworkIXLan.handleref.tag: NetworkIXLan.handleref.filter(status="ok").count(),
|
|
|
|
|
NetworkFacility.handleref.tag: NetworkFacility.handleref.filter(
|
|
|
|
|
status="ok"
|
|
|
|
|
).count(),
|
2020-07-15 02:07:01 -05:00
|
|
|
"automated_nets": Network.handleref.filter(allow_ixp_update=True).count(),
|
2018-11-08 19:45:21 +00:00
|
|
|
}
|
2021-10-12 11:05:25 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_fac_stats(netfac, ixfac):
|
|
|
|
|
return {
|
|
|
|
|
"networks": netfac.filter(status="ok").count(),
|
|
|
|
|
"ix": ixfac.filter(status="ok").count(),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_ix_stats(netixlan, ixlan):
|
|
|
|
|
|
|
|
|
|
peer_count = netixlan.values("network").distinct().filter(status="ok").count()
|
|
|
|
|
connections_count = netixlan.filter(ixlan=ixlan, status="ok").count()
|
|
|
|
|
open_peer_count = (
|
|
|
|
|
netixlan.values("network")
|
|
|
|
|
.distinct()
|
|
|
|
|
.filter(network__policy_general="Open", status="ok")
|
|
|
|
|
.count()
|
|
|
|
|
)
|
|
|
|
|
ipv6_percentage = 0
|
|
|
|
|
total_speed = 0
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
ipv6_percentage = int(
|
|
|
|
|
(
|
|
|
|
|
netixlan.filter(status="ok", ixlan=ixlan, ipaddr6__isnull=False).count()
|
|
|
|
|
/ netixlan.filter(ixlan=ixlan, status="ok").count()
|
|
|
|
|
)
|
|
|
|
|
* 100
|
|
|
|
|
)
|
|
|
|
|
except ZeroDivisionError:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
for n in netixlan.filter(status="ok", ixlan=ixlan):
|
|
|
|
|
total_speed += n.speed
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
"peer_count": peer_count,
|
|
|
|
|
"connection_count": connections_count,
|
|
|
|
|
"open_peer_count": open_peer_count,
|
|
|
|
|
"ipv6_percentage": ipv6_percentage,
|
|
|
|
|
"total_speed": total_speed,
|
|
|
|
|
}
|