Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dnsviz/dnsviz.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCasey Deccio <casey@deccio.net>2019-02-07 09:02:38 +0300
committerCasey Deccio <casey@deccio.net>2019-02-07 09:02:38 +0300
commita127ce26042d234300b2c7fa5b772a61912b0614 (patch)
tree5b1ee540cdb6fa97d9d4ec50270530d216cc4f22
parent78ada48b390fd3379afad882225a74d8f5059d0e (diff)
Fix issue related to graphviz bug
Use homegrown keys to determining existence of like edges, rather than graphviz keys. See: https://gitlab.com/graphviz/graphviz/issues/1252
-rw-r--r--dnsviz/viz/dnssec.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/dnsviz/viz/dnssec.py b/dnsviz/viz/dnssec.py
index b1f23d4..e628c5d 100644
--- a/dnsviz/viz/dnssec.py
+++ b/dnsviz/viz/dnssec.py
@@ -170,6 +170,8 @@ class DNSAuthGraph:
self.next_nsec_id = 0
self.next_rrset_id = 10
+ self._edge_keys = set()
+
def _raphael_unit_mapping_expression(self, val, unit):
#XXX doesn't work properly
#if unit:
@@ -661,10 +663,9 @@ class DNSAuthGraph:
if not signed_node_zone.endswith(dnskey_node_zone):
attrs['constraint'] = 'false'
- try:
- edge = self.G.get_edge(signed_node, dnskey_node, edge_key)
- except KeyError:
- self.G.add_edge(signed_node, dnskey_node, label=edge_label, key=edge_key, id=edge_id, color=line_color, style=line_style, dir='back', **attrs)
+ if (signed_node, dnskey_node, edge_key) not in self._edge_keys:
+ self._edge_keys.add((signed_node, dnskey_node, edge_key))
+ self.G.add_edge(signed_node, dnskey_node, label=edge_label, id=edge_id, color=line_color, style=line_style, dir='back', **attrs)
consolidate_clients = name_obj.single_client()
rrsig_serialized = rrsig_status.serialize(consolidate_clients=consolidate_clients, html_format=True)
@@ -889,16 +890,16 @@ class DNSAuthGraph:
edge_id = 'dname-%s|%s|%s|%s' % (cname_node, dname_node, line_color.lstrip('#'), line_style)
edge_key = '%s-%s' % (line_color, line_style)
- try:
- edge = self.G.get_edge(cname_node, dname_node, edge_key)
- except KeyError:
+ if (cname_node, dname_node, edge_key) not in self._edge_keys:
+ self._edge_keys.add((cname_node, dname_node, edge_key))
+
edge_label = ''
if dname_status.errors:
edge_label = '<<TABLE BORDER="0"><TR><TD><IMG SCALE="TRUE" SRC="%s"/></TD></TR></TABLE>>' % ERROR_ICON
elif dname_status.warnings:
edge_label = '<<TABLE BORDER="0"><TR><TD><IMG SCALE="TRUE" SRC="%s"/></TD></TR></TABLE>>' % WARNING_ICON
- self.G.add_edge(cname_node, dname_node, label=edge_label, key=edge_key, id=edge_id, color=line_color, style=line_style, dir='back')
+ self.G.add_edge(cname_node, dname_node, label=edge_label, id=edge_id, color=line_color, style=line_style, dir='back')
self.node_info[edge_id] = [dname_status.serialize(html_format=True)]
if edge_id not in self.node_mapping: