]> Frank Brehm's Git Trees - pixelpark/admin-tools.git/commitdiff
Adding pp_lib/pdns_migrate_ns.py and dependencies
authorFrank Brehm <frank.brehm@pixelpark.com>
Fri, 12 Jan 2018 14:03:03 +0000 (15:03 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Fri, 12 Jan 2018 14:03:03 +0000 (15:03 +0100)
bin/pdns-migrate-nameservers [new file with mode: 0755]
pp_lib/pdns_migrate_ns.py [new file with mode: 0644]

diff --git a/bin/pdns-migrate-nameservers b/bin/pdns-migrate-nameservers
new file mode 100755 (executable)
index 0000000..70c9f46
--- /dev/null
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+
+# Standard modules
+import sys
+import os
+import logging
+import locale
+
+# own modules:
+cur_dir = os.getcwd()
+base_dir = cur_dir
+
+if sys.argv[0] != '' and sys.argv[0] != '-c':
+    bin_dir = os.path.dirname(sys.argv[0])
+base_dir = os.path.abspath(os.path.join(bin_dir, '..'))
+module_dir = os.path.join(base_dir, 'pp_lib')
+if os.path.exists(module_dir):
+    sys.path.insert(0, base_dir)
+
+from pp_lib.pdns_migrate_ns import PDNSMigrateNsApp
+
+log = logging.getLogger(__name__)
+
+__author__ = 'Frank Brehm <frank.brehm@pixelpark.com>'
+__copyright__ = '(C) 2018 by Frank Brehm, Pixelpark GmbH, Berlin'
+
+appname = os.path.basename(sys.argv[0])
+
+locale.setlocale(locale.LC_ALL, '')
+
+app = PDNSMigrateNsApp(appname=appname)
+app.initialized = True
+
+if app.verbose > 2:
+    print("{c}-Object:\n{a}".format(c=app.__class__.__name__, a=app))
+
+app()
+
+sys.exit(0)
+
+# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 list
+
diff --git a/pp_lib/pdns_migrate_ns.py b/pp_lib/pdns_migrate_ns.py
new file mode 100644 (file)
index 0000000..8c16939
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+@author: Frank Brehm
+@contact: frank.brehm@pixelpark.com
+@copyright: © 2017 by Frank Brehm, Berlin
+@summary: The module for migration of of nameservers.
+"""
+from __future__ import absolute_import
+
+# Standard modules
+import os
+import logging
+import logging.config
+import textwrap
+
+from functools import cmp_to_key
+
+# Own modules
+from .common import pp, compare_fqdn, to_str
+
+from .pdns_app import PpPDNSAppError, PpPDNSApplication, PDNSApiNotFoundError, PDNSApiValidationError
+from .pdns_zone import PdnsApiZone
+from .pdns_record import compare_rrsets
+
+__version__ = '0.1.0'
+LOG = logging.getLogger(__name__)
+
+
+# =============================================================================
+class PDNSMigrateNsError(PpPDNSAppError):
+    pass
+
+
+# =============================================================================
+class PDNSMigrateNsApp(PpPDNSApplication):
+    """Class for the 'pdns-migrate-nameservers' application to migrate the nameservers
+       of all zones of PowerDNS from the old nameservers to the new one.
+    """
+
+    # -------------------------------------------------------------------------
+    def __init__(self, appname=None, version=__version__):
+
+        self.zones = []
+
+        description = textwrap.dedent('''\
+            Substituting NS records in all zones by the new ones.
+            ''')
+
+        self._show_simulate_opt = True
+
+        super(PDNSMigrateNsApp, self).__init__(
+            appname=appname, version=version, description=description,
+        )
+
+        self.initialized = True
+
+    # -------------------------------------------------------------------------
+    def _run(self):
+
+        LOG.info("Substituting NS records in all zones by the new ones.")
+
+        zone_list = self.get_api_zones()
+
+# =============================================================================
+
+if __name__ == "__main__":
+
+    pass
+
+# =============================================================================
+
+# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 list