From: Frank Brehm Date: Mon, 15 Jan 2018 17:28:16 +0000 (+0100) Subject: Get current zone serial by DNS and a new for a zone X-Git-Tag: 0.1.2~26 X-Git-Url: https://git.uhu-banane.de/?a=commitdiff_plain;h=6dd917f6b2ca5a832163c83aedc4f37224964fb0;p=pixelpark%2Fadmin-tools.git Get current zone serial by DNS and a new for a zone --- diff --git a/pp_lib/pdns_migrate_ns.py b/pp_lib/pdns_migrate_ns.py index ce55fab..e6c1c06 100644 --- a/pp_lib/pdns_migrate_ns.py +++ b/pp_lib/pdns_migrate_ns.py @@ -14,6 +14,7 @@ import logging import logging.config import textwrap import copy +import socket from functools import cmp_to_key @@ -25,7 +26,7 @@ from .pdns_app import PpPDNSAppError, PpPDNSApplication, PDNSApiNotFoundError, P from .pdns_zone import PdnsApiZone from .pdns_record import compare_rrsets -__version__ = '0.2.4' +__version__ = '0.2.5' LOG = logging.getLogger(__name__) @@ -141,6 +142,11 @@ class PDNSMigrateNsApp(PpPDNSApplication): if not zone: return False + api_host_address = None + for addr_info in socket.getaddrinfo(self.api_host, 53, family=socket.AF_INET): + api_host_address = addr_info[4][0] + break + new_nameservers = [] hm_address = self.address_hostmaster_public @@ -174,9 +180,16 @@ class PDNSMigrateNsApp(PpPDNSApplication): else: LOG.debug("Update SOA of zone is not necessary.".format(zone_name)) + dns_soa = zone.get_soa_by_dns(api_host_address) + LOG.debug("Got SOA from DNS by {h!r}:\n{s}".format(h=self.api_host, s=dns_soa)) + if not self.ensure_nameservers(zone, new_nameservers): return False + new_serial = zone.get_new_serial(dns_soa.serial) + LOG.debug("Got new serial number for zone {z!r}: {s}.".format( + z=zone_name, s=new_serial)) + zone_parts = zone_name.split('.') top_zone_name = '.'.join(zone_parts[1:]) LOG.debug("Top zone of {z!r} is {t!r}.".format(z=zone_name, t=top_zone_name))