bundles/powerdns: auto-generate zonefile header based on dns server nodes
This commit is contained in:
parent
51e6d0534e
commit
793220c0ec
8 changed files with 66 additions and 31 deletions
|
@ -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,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue