bundles/powerdns: auto-generate zonefile header based on dns server nodes

This commit is contained in:
Franzi 2020-10-17 12:56:17 +02:00
parent 51e6d0534e
commit 793220c0ec
Signed by: kunsi
GPG key ID: 12E3D2136B818350
8 changed files with 66 additions and 31 deletions

View file

@ -28,29 +28,25 @@ defaults = {
@metadata_reactor
def get_ips_of_secondary_nameservers(metadata):
# Secondary Nameservers can't be a primary nameserver at the same
# time. Return early if this is a secondary server.
if metadata.get('powerdns/is_secondary', False):
return {}
try:
nameservers = repo.nodes_in_group(metadata.get('powerdns/secondary_nameservers', ''))
except NoSuchGroup:
# This probably is no primary nameserver, either. Should be fine.
def get_ips_of_primary_nameservers(metadata):
if not metadata.get('powerdns/is_secondary', False):
return {}
ips = set()
nodes = set()
for rnode in nameservers:
if rnode.name == node.name:
# We can't be primary and secondary at the same time
continue
nodes.add(rnode.name)
for rnode in repo.nodes_in_group('dns'):
if not rnode.metadata.get('powerdns/is_secondary', False):
ips.update({
str(ip) for ip in repo.libs.tools.resolve_identifier(repo, rnode.name)
})
nodes.add(rnode.name)
return {
'powerdns': {
'my_secondary_servers': nodes,
'my_primary_servers': {
'ips': ips,
'nodes': nodes,
},
},
}