From 6dd917f6b2ca5a832163c83aedc4f37224964fb0 Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Mon, 15 Jan 2018 18:28:16 +0100 Subject: [PATCH] Get current zone serial by DNS and a new for a zone --- pp_lib/pdns_migrate_ns.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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)) -- 2.39.5