diff --git a/bundles/bind/metadata.py b/bundles/bind/metadata.py index 10cc137..1fc8fc8 100644 --- a/bundles/bind/metadata.py +++ b/bundles/bind/metadata.py @@ -1,3 +1,12 @@ +class hdict(dict): + def __hash__(self): + return hash(tuple(sorted(self.items()))) + +class hlist(list): + def __hash__(self): + return hash(tuple(sorted(self))) + + from ipaddress import ip_interface @@ -75,9 +84,9 @@ def collect_records(metadata): for type, values in records.items(): for value in values: zones\ - .setdefault(zone, [])\ - .append( - {'name': name, 'type': type, 'value': value} + .setdefault(zone, set())\ + .add( + hdict({'name': name, 'type': type, 'value': value}) ) return { @@ -104,10 +113,10 @@ def ns_records(metadata): return { 'bind': { 'zones': { - zone: [ - {'name': '@', 'type': 'NS', 'value': f"{nameserver}."} + zone: { + hdict({'name': '@', 'type': 'NS', 'value': f"{nameserver}."}) for nameserver in nameservers - ] for zone in metadata.get('bind/zones').keys() + } for zone in metadata.get('bind/zones').keys() }, }, }