Poor man's visualisation: cope with no BIRD client.

master
LEdoian 2 years ago
parent 58a33c5f19
commit 6c75c7e1cd

@ -13,7 +13,42 @@ if len(sys.argv) > 1:
with open(ref_topo_file) as ref_file: with open(ref_topo_file) as ref_file:
ref_topo = providers.OspfFileTopologyProvider(ref_file).get_topology() ref_topo = providers.OspfFileTopologyProvider(ref_file).get_topology()
cur_topo = providers.RunningBirdTopologyProvider().get_topology() try:
cur_topo = providers.RunningBirdTopologyProvider().get_topology()
except OSError:
# HACK!
import traceback as tb
tb.print_exc(file=sys.stderr)
print(f'Could not get current topology from BIRD,\n'
'will load reference one with random omissions\n----', file=sys.stderr)
with open(ref_topo_file) as ref_file:
cur_topo = providers.OspfFileTopologyProvider(ref_file).get_topology()
import random
random.seed('birdvisu_demo')
# Routers:
for _ in range(random.randint(1, 3)):
key, router_to_delete = random.choice(list(cur_topo.routers.items()))
for l in router_to_delete.links:
lk = (l.router.ident, l.network.ident)
del cur_topo.links[lk]
l.network.links.remove(l)
del cur_topo.routers[key]
# Networks:
for _ in range(random.randint(1, 3)):
key, network_to_delete = random.choice(list(cur_topo.networks.items()))
for l in network_to_delete.links:
lk = (l.router.ident, l.network.ident)
del cur_topo.links[lk]
l.router.links.remove(l)
del cur_topo.networks[key]
# Links:
for _ in range(random.randint(1, 3)):
key, link_to_delete = random.choice(list(cur_topo.links.items()))
link_to_delete.router.links.remove(link_to_delete)
link_to_delete.network.links.remove(link_to_delete)
del cur_topo.links[key]
# Combine topologies # Combine topologies

Loading…
Cancel
Save