From 6892508b9e62e7d76c995c603cb1253f47728fce Mon Sep 17 00:00:00 2001 From: Justin Riley Date: Fri, 12 Aug 2016 11:13:50 -0400 Subject: [PATCH] resolver: add zone kwarg to add_host This will allow OneDNS.sync to build a new zone and instantly swap it with the currently active zone to minimize downtime. --- onedns/resolver.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/onedns/resolver.py b/onedns/resolver.py index 10b5792..08195fd 100644 --- a/onedns/resolver.py +++ b/onedns/resolver.py @@ -52,27 +52,30 @@ class DynamicResolver(server.BaseResolver): def clear(self): self.zone = [] - def add_host(self, name, ip): - self._add_forward(name, ip) - self._add_reverse(ip, name) + def add_host(self, name, ip, zone=None): + zone = zone or self.zone + self._add_forward(name, ip, zone=zone) + self._add_reverse(ip, name, zone=zone) def _get_fqdn(self, name): return utils.get_fqdn(name, self.domain) - def _add_forward(self, name, ip): + def _add_forward(self, name, ip, zone=None): + zone = zone or self.zone f = dnslib.RR(rname=dnslib.DNSLabel(self._get_fqdn(name)), rtype=dnslib.QTYPE.reverse['A'], rclass=dnslib.CLASS.reverse['IN'], rdata=dns.A(ip)) - self.zone.append((f.rname, 'A', f)) + zone.append((f.rname, 'A', f)) - def _add_reverse(self, ip, name): + def _add_reverse(self, ip, name, zone=None): + zone = zone or self.zone ip = IP(ip) r = dnslib.RR(rname=dnslib.DNSLabel(ip.reverseName()), rtype=dnslib.QTYPE.reverse['PTR'], rclass=dnslib.CLASS.reverse['IN'], rdata=dns.PTR(self._get_fqdn(name))) - self.zone.append((r.rname, 'PTR', r)) + zone.append((r.rname, 'PTR', r)) def start(self, dns_address='0.0.0.0', dns_port=53, api_address='127.0.0.1', api_port=8000, tcp=False, udplen=0,