]> Frank Brehm's Git Trees - pixelpark/admin-tools.git/commitdiff
Get current zone serial by DNS and a new for a zone
authorFrank Brehm <frank.brehm@pixelpark.com>
Mon, 15 Jan 2018 17:28:16 +0000 (18:28 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Mon, 15 Jan 2018 17:28:16 +0000 (18:28 +0100)
pp_lib/pdns_migrate_ns.py

index ce55fab3a76448e06d4b177ac5162f62b084a06e..e6c1c0614ad65c2bffb872dab2631c3d87c605cd 100644 (file)
@@ -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))