From 34e9366c61f36c8e84a787398702f77c26c3a14e Mon Sep 17 00:00:00 2001 From: mwiegand Date: Sat, 6 Nov 2021 06:39:50 +0100 Subject: [PATCH] bw 13 hashable --- bundles/bind/items.py | 3 +-- bundles/bind/metadata.py | 13 ++++++------- requirements.txt | 2 +- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/bundles/bind/items.py b/bundles/bind/items.py index d28a49e..a166f2b 100644 --- a/bundles/bind/items.py +++ b/bundles/bind/items.py @@ -136,8 +136,7 @@ for view in views: ], } - for zone, record_dicts in zones.items(): - records = record_dicts.values() + for zone, records in zones.items(): unique_records = [ dict(record_tuple) for record_tuple in set( diff --git a/bundles/bind/metadata.py b/bundles/bind/metadata.py index 99840b8..bc949b4 100644 --- a/bundles/bind/metadata.py +++ b/bundles/bind/metadata.py @@ -1,6 +1,6 @@ from ipaddress import ip_interface from json import dumps - +h = repo.libs.hashable.hashable defaults = { 'apt': { @@ -75,12 +75,11 @@ def collect_records(metadata): for type, values in records.items(): for value in values: - entry = {'name': name, 'type': type, 'value': value} zones\ - .setdefault(zone, {})\ - .update({ - str(hash(dumps(entry))): entry, - }) + .setdefault(zone, set())\ + .add( + h({'name': name, 'type': type, 'value': value}) + ) return { 'bind': { @@ -108,7 +107,7 @@ def ns_records(metadata): 'zones': { zone: { # FIXME: bw currently cant handle lists of dicts :( - str(hash(dumps({'name': '@', 'type': 'NS', 'value': f"{nameserver}."}))): {'name': '@', 'type': 'NS', 'value': f"{nameserver}."} + h({'name': '@', 'type': 'NS', 'value': f"{nameserver}."}) for nameserver in nameservers } for zone in metadata.get('bind/zones').keys() }, diff --git a/requirements.txt b/requirements.txt index 4340de5..9b7ab1a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -bundlewrap>=4.12.0 +bundlewrap>=4.13.0 pycryptodome PyNaCl PyYAML