diff options
author | Casey Deccio <casey@deccio.net> | 2019-02-07 09:02:38 +0300 |
---|---|---|
committer | Casey Deccio <casey@deccio.net> | 2019-02-07 09:02:38 +0300 |
commit | a127ce26042d234300b2c7fa5b772a61912b0614 (patch) | |
tree | 5b1ee540cdb6fa97d9d4ec50270530d216cc4f22 | |
parent | 78ada48b390fd3379afad882225a74d8f5059d0e (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.py | 17 |
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: |