Compare commits
2 commits
10eaaa7e12
...
6e9610d797
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6e9610d797 | ||
![]() |
ac5482335d |
4 changed files with 9 additions and 19 deletions
|
@ -1,5 +1,4 @@
|
|||
from ipaddress import ip_interface
|
||||
hdict, hlist = repo.libs.hashable.hdict, repo.libs.hashable.hlist
|
||||
|
||||
|
||||
defaults = {
|
||||
|
@ -76,9 +75,9 @@ def collect_records(metadata):
|
|||
for type, values in records.items():
|
||||
for value in values:
|
||||
zones\
|
||||
.setdefault(zone, set())\
|
||||
.add(
|
||||
hdict({'name': name, 'type': type, 'value': value})
|
||||
.setdefault(zone, [])\
|
||||
.append(
|
||||
{'name': name, 'type': type, 'value': value}
|
||||
)
|
||||
|
||||
return {
|
||||
|
@ -105,10 +104,10 @@ def ns_records(metadata):
|
|||
return {
|
||||
'bind': {
|
||||
'zones': {
|
||||
zone: {
|
||||
hdict({'name': '@', 'type': 'NS', 'value': f"{nameserver}."})
|
||||
zone: [
|
||||
{'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()
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
@ -90,10 +90,10 @@ def systemd_networkd_netdevs(metadata):
|
|||
'Endpoint': config['endpoint'],
|
||||
'PublicKey': config['pubkey'],
|
||||
'PresharedKey': config['psk'],
|
||||
'AllowedIPs': ', '.join([
|
||||
'AllowedIPs': ', '.join(sorted([
|
||||
str(ip_interface(repo.get_node(peer).metadata.get(f'wireguard/my_ip')).ip),
|
||||
*config.get('route', []),
|
||||
]), # FIXME
|
||||
])), # FIXME
|
||||
'PersistentKeepalive': 30,
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
import json
|
||||
|
||||
class hdict(dict):
|
||||
def __hash__(self):
|
||||
return hash(json.dumps(self, sorted=True))
|
||||
|
||||
class hlist(list):
|
||||
def __hash__(self):
|
||||
return hash(json.dumps(self, sorted=True))
|
|
@ -9,7 +9,7 @@ template = '''
|
|||
[${segment.split('#')[0]}]
|
||||
% for option, value in sorted(options.items()):
|
||||
% if isinstance(value, dict):
|
||||
% for k, v in value.items():
|
||||
% for k, v in sorted(value.items()):
|
||||
${option}=${k}=${v}
|
||||
% endfor
|
||||
% elif isinstance(value, (list, set, tuple)):
|
||||
|
|
Loading…
Reference in a new issue