From: Frank Brehm Date: Fri, 12 Jan 2018 14:03:03 +0000 (+0100) Subject: Adding pp_lib/pdns_migrate_ns.py and dependencies X-Git-Tag: 0.1.2~46 X-Git-Url: https://git.uhu-banane.net/?a=commitdiff_plain;h=c285cd40961404ebae560dae48ad6bd0a3dee623;p=pixelpark%2Fadmin-tools.git Adding pp_lib/pdns_migrate_ns.py and dependencies --- diff --git a/bin/pdns-migrate-nameservers b/bin/pdns-migrate-nameservers new file mode 100755 index 0000000..70c9f46 --- /dev/null +++ b/bin/pdns-migrate-nameservers @@ -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 ' +__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 index 0000000..8c16939 --- /dev/null +++ b/pp_lib/pdns_migrate_ns.py @@ -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