bin/pvl.dns-process
author Tero Marttila <tero.marttila@aalto.fi>
Mon, 02 Mar 2015 12:59:17 +0200
changeset 685 668f934bb958
parent 648 8e3e6be9ac70
child 716 4fecd0d1cf23
permissions -rw-r--r--
pvl.dhcp.config: fix build_block() to handle top-level config Blocks
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:
diff changeset
     1
#!/usr/bin/env python
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     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:
diff changeset
     3
"""
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     4
    Process bind zonefiles, without altering their structure.
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     5
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     6
    Takes a zonefile as input, and gives a semantically identical zonefile as output, with the given changes.
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     7
"""
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     8
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     9
import logging; log = logging.getLogger('pvl.dns-process')
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    10
import optparse
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    11
import pvl.args
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    12
import pvl.dns.process
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    13
import pvl.dns.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:
diff changeset
    14
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    15
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:
diff changeset
    16
    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:
diff changeset
    17
    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:
diff changeset
    18
    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:
diff changeset
    19
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    20
    parser.add_option('--serial',               metavar='YYMMDDXX',
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    21
            help="Set serial for SOA record")
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    22
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    23
    parser.add_option('--include-path',         metavar='PATH',
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    24
            help="Rewrite includes to given absolute path")
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    25
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    26
    # 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:
diff changeset
    27
    options, args = pvl.args.parse(parser, 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:
diff changeset
    28
    
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    29
    # process
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    30
    zone = list(pvl.dns.process.apply_zone(options, args))
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    31
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    32
    if options.serial:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    33
        log.info("Set zone serial: %s", options.serial)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    34
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    35
        zone = list(pvl.dns.process.zone_serial(zone, options.serial))
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    36
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    37
    if options.include_path:
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    38
        log.info("Set zone include path: %s", options.include_path)
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    39
648
8e3e6be9ac70 bin/pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents: 641
diff changeset
    40
        zone = list(pvl.dns.process.zone_includes_path(zone, options.include_path))
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:
diff changeset
    41
    
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    42
    pvl.dns.process.apply_zone_output(options, 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:
diff changeset
    43
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    44
    return 0
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    45
9d36e312e6a7 pvl.dns-zone: update and split out pvl.dns-process for --serial and --include-path transforms
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    46
if __name__ == '__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:
diff changeset
    47
    pvl.args.main(main)