Source code for cobbler.modules.managers.ndjbdns

# coding=utf-8
"""
This is some of the code behind 'cobbler sync'.
"""


from builtins import object
import os
import subprocess

import cobbler.clogger as clogger
import cobbler.templar as templar


[docs]def register(): return "manage"
[docs]def get_manager(config, logger): return NDjbDnsManager(config, logger)
[docs]class NDjbDnsManager(object): def __init__(self, config, logger): self.logger = logger if self.logger is None: self.logger = clogger.Logger() self.config = config self.systems = config.systems() self.templar = templar.Templar(config)
[docs] def what(self): return "ndjbdns"
[docs] def regen_hosts(self): pass
[docs] def write_dns_files(self): template_file = '/etc/cobbler/ndjbdns.template' data_file = '/etc/ndjbdns/data' data_dir = os.path.dirname(data_file) a_records = {} with open(template_file, 'r') as f: template_content = f.read() for system in self.systems: for (name, interface) in list(system.interfaces.items()): host = interface['dns_name'] ip = interface['ip_address'] if host: if host in a_records: raise Exception('Duplicate DNS name: %s' % host) a_records[host] = ip template_vars = {'forward': []} for host, ip in list(a_records.items()): template_vars['forward'].append((host, ip)) self.templar.render(template_content, template_vars, data_file) p = subprocess.Popen(['/usr/bin/tinydns-data'], cwd=data_dir) p.communicate() if p.returncode != 0: raise Exception('Could not regenerate tinydns data file.')