bin/pvl.dns-zone
author Tero Marttila <terom@paivola.fi>
Mon, 09 Mar 2015 23:31:13 +0200
changeset 738 3104fdf7ea26
parent 641 9d36e312e6a7
permissions -rw-r--r--
pvl.hosts.hosts: drop support for instanced ip.* in favor of improved interface:ip.* =
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#!/usr/bin/env python
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
"""
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
     4
    Generate bind zonefiles from a given input zonefile.
258
1ad9cec4f556 pvl.dns-zone: use pvl.args.apply_files
Tero Marttila <terom@paivola.fi>
parents: 252
diff changeset
     5
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
     6
    Takes a zonefile as input, and gives a new zonefile as output.
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
"""
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
     9
import ipaddr
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    10
import logging; log = logging.getLogger('pvl.dns-generate')
316
41bd6688b142 pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents: 294
diff changeset
    11
import optparse
630
18939b861476 quickfix pvl.dns-zone
Tero Marttila <tero.marttila@aalto.fi>
parents: 332
diff changeset
    12
import pvl.args
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    13
import pvl.dns.reverse
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    14
import pvl.dns.process
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    16
def check_zone (rrs, whitelist_names=set(), whitelist_types=set()):
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
        Parse host/IP pairs from the zone, and verify that they are unique.
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
        As an exception, names listed in the given whitelist may have multiple IPs.
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
    by_name = {}
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
    by_ip = {}
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    26
    check = True
293
6351acf3eb3b pvl.dns-zone: use ZoneLine.load to passthrough zonefiles
Tero Marttila <terom@paivola.fi>
parents: 258
diff changeset
    27
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    28
    for rr in rrs:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    29
        name = (rr.origin, rr.name)
293
6351acf3eb3b pvl.dns-zone: use ZoneLine.load to passthrough zonefiles
Tero Marttila <terom@paivola.fi>
parents: 258
diff changeset
    30
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    31
        # name
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    32
        if name not in by_name:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    33
            pass
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    35
        elif rr.type in whitelist_types:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    36
            log.debug("%s: Whitelist type duplicate: %s", rr, by_name[name])
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    38
        elif rr.name in whitelist_names:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    39
            log.debug("%s: Whitelist name duplicate: %s", rr, by_name[name])
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    41
        else:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    42
            log.warn("%s: Duplicate name: %s <-> %s", rr.line, rr, by_name[name])
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    43
            check = False
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    44
            
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    45
        by_name[name] = rr
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    46
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    47
        # ip
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    48
        if rr.type in ('A', 'AAAA'):
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    49
            ip, = rr.data
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    50
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    51
            if ip in by_ip:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    52
                log.warn("%s: Duplicate IP: %s <-> %s", rr.line, rr, by_ip[ip])
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    53
                check = False
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    54
                
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    55
            by_ip[ip] = rr
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    56
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    57
    return check
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    58
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    59
def process_zone_reverse (rrs, prefix):
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
        Process zone data -> reverse zone data.
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    64
    for r in rrs:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    65
        if r.type == 'A':
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
            ip, = r.data
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    68
            ip = ipaddr.IPv4Address(ip)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    69
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    70
        elif r.type == 'AAAA':
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
            ip, = r.data
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
            
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    73
            ip = ipaddr.IPv6Address(ip)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    74
            
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    75
        else:
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
            continue
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    78
        if ip not in prefix:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    79
            log.debug("%s: skip: %s not in %s", rr, ip, prefix)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    80
            continue
316
41bd6688b142 pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents: 294
diff changeset
    81
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    82
        ptr = pvl.dns.reverse_label(prefix, ip)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    83
        fqdn = pvl.dns.fqdn(r.name, r.origin)
316
41bd6688b142 pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents: 294
diff changeset
    84
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    85
        yield pvl.dns.ZoneRecord.PTR(ptr, fqdn)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    86
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    87
def main (argv):
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    88
    parser = optparse.OptionParser(main.__doc__)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    89
    parser.add_option_group(pvl.args.parser(parser))
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    90
    parser.add_option_group(pvl.dns.process.optparser(parser))
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    91
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    92
    parser.add_option('--zone-origin',          metavar='DOMAIN',
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    93
            help="Domain to use for hosts in zone")
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    94
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    95
    # check stage
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    96
    parser.add_option('--check-hosts',          action='store_true',
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    97
            help="Check that host/IPs are unique. Use --quiet to silence warnings, and test exit status")
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    98
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
    99
    parser.add_option('--check-exempt',         metavar='HOST', action='append',
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   100
            help="Allow given names to have multiple records")
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   101
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   102
    # reverse stage
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   103
    parser.add_option('--reverse-prefix',         metavar='NET',
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   104
            help="Generate forward zone for given subnet (192.0.2, 2001:db8)")
316
41bd6688b142 pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents: 294
diff changeset
   105
41bd6688b142 pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents: 294
diff changeset
   106
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   107
    parser.set_defaults(
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   108
        check_exempt        = [
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   109
            '@'
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   110
        ],
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   111
    )
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   112
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   113
    # input
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   114
    options, args = pvl.args.parse(parser, argv)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   115
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   116
    if options.reverse_prefix and not options.zone_origin:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   117
        log.error("--reverse-prefix requires --zone-origin")
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   118
    
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   119
    zone = list(pvl.dns.process.apply_zone_records(options, options.zone_origin, args))
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   120
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   121
    # check
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   122
    if options.check_hosts:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   123
        whitelist_names = set(options.check_exempt)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   124
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   125
        log.info("Checking hosts: whitelist_names=%r", whitelist_names)
316
41bd6688b142 pvl.dns.zone: implement --include-path
Tero Marttila <terom@paivola.fi>
parents: 294
diff changeset
   126
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   127
        if not check_zone(zone, whitelist_names=whitelist_names):
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   128
            log.error("Check zone failed, see warnings")
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   129
            return 2
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   130
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   131
    # transform
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   132
    if options.reverse_prefix:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   133
        prefix = pvl.dns.reverse.parse_prefix(options.reverse_prefix)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   134
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   135
        zone = list(process_zone_reverse(zone, prefix))
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   136
    else:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   137
        # pass through
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   138
        pass
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   139
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   140
    pvl.dns.process.apply_zone_output(options, zone)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   141
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   142
    return 0
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   143
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   144
if __name__ == '__main__':
641
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   145
    pvl.args.main(main)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents: 637
diff changeset
   146