--- a/bin/pvl.hosts-lldp Mon Mar 17 20:01:31 2014 +0200
+++ b/bin/pvl.hosts-lldp Mon Mar 17 20:30:28 2014 +0200
@@ -81,13 +81,14 @@
import pydot
dot = pydot.Dot(graph_name='lldp_hosts', graph_type='digraph',
- splines = 'true',
+ # XXX: breaks multi-edges?
+ #splines = 'true',
sep = '+25,25',
overlap = 'scalexy',
# only applies to loops
- nodesep = 0.5,
+ #nodesep = 0.5,
)
dot.set_edge_defaults(
labeldistance = 3.0,
@@ -131,12 +132,12 @@
headlabel = '"{remote[port]}"'.format(remote=remote)
taillabel = '"{local[port]}"'.format(local=local)
- if (src_name, dst_name) in edges :
- log.warning("%s <- %s: duplicate", src_name, dst_name)
+ if (src_name, local['port'], dst_name, remote['port']) in edges :
+ log.warning("%s:%s <- %s:%s: duplicate", src_name, local['port'], dst_name, remote['port'])
- elif (dst_name, src_name) in edges :
+ elif (dst_name, remote['port'], src_name, local['port']) in edges :
log.info("%s <-> %s", src_name, dst_name)
- edge = edges[(dst_name, src_name)]
+ edge = edges[(dst_name, remote['port'], src_name, local['port'])]
if edge.get('headlabel') != taillabel :
log.warn("%s -> %s: local port mismatch: %s vs %s", src_name, dst_name, local['port'], edge.get('headlabel'))
@@ -145,12 +146,12 @@
log.warn("%s -> %s: remote port mismatch: %s vs %s", src_name, dst_name, remote['port'], edge.get('taillabel'))
# mark as bidirectional
- edges[(src_name, dst_name)] = edge
+ edges[(src_name, local['port'], dst_name, remote['port'])] = edge
edge.set('dir', 'both')
else :
- edge = edges[(src_name, dst_name)] = pydot.Edge(src, dst,
+ edge = edges[(src_name, local['port'], dst_name, remote['port'])] = pydot.Edge(src, dst,
dir = 'back',
headlabel = headlabel,
taillabel = taillabel,