author | Tero Marttila <tero.marttila@aalto.fi> |
Tue, 03 Mar 2015 13:07:31 +0200 | |
changeset 728 | d3cea9988848 |
parent 717 | e37b0a857a5d |
permissions | -rw-r--r-- |
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") |
716
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
25 |
|
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
26 |
parser.add_option('--include-trace', metavar='FILE', |
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
27 |
help="Write out included files to given file") |
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
|
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 |
# 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
|
30 |
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
|
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 |
# process |
717
e37b0a857a5d
pvl.dns-process: include zone itself in --include-trace
Tero Marttila <tero.marttila@aalto.fi>
parents:
716
diff
changeset
|
33 |
if options.include_trace: |
e37b0a857a5d
pvl.dns-process: include zone itself in --include-trace
Tero Marttila <tero.marttila@aalto.fi>
parents:
716
diff
changeset
|
34 |
include_trace = [ ] |
e37b0a857a5d
pvl.dns-process: include zone itself in --include-trace
Tero Marttila <tero.marttila@aalto.fi>
parents:
716
diff
changeset
|
35 |
else: |
e37b0a857a5d
pvl.dns-process: include zone itself in --include-trace
Tero Marttila <tero.marttila@aalto.fi>
parents:
716
diff
changeset
|
36 |
include_trace = None |
e37b0a857a5d
pvl.dns-process: include zone itself in --include-trace
Tero Marttila <tero.marttila@aalto.fi>
parents:
716
diff
changeset
|
37 |
|
e37b0a857a5d
pvl.dns-process: include zone itself in --include-trace
Tero Marttila <tero.marttila@aalto.fi>
parents:
716
diff
changeset
|
38 |
zone = list(pvl.dns.process.apply_zone(options, args, |
e37b0a857a5d
pvl.dns-process: include zone itself in --include-trace
Tero Marttila <tero.marttila@aalto.fi>
parents:
716
diff
changeset
|
39 |
include_trace = include_trace, |
e37b0a857a5d
pvl.dns-process: include zone itself in --include-trace
Tero Marttila <tero.marttila@aalto.fi>
parents:
716
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:
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 |
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
|
43 |
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
|
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:
diff
changeset
|
45 |
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
|
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:
diff
changeset
|
47 |
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
|
48 |
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
|
49 |
|
716
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
50 |
zone = list(pvl.dns.process.zone_includes(zone, options.include_path, |
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
51 |
include_trace = include_trace, |
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
52 |
)) |
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
53 |
|
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
54 |
if options.include_trace: |
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
55 |
with pvl.args.apply_file(options.include_trace, 'w') as file: |
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
56 |
for include in include_trace: |
4fecd0d1cf23
pvl.dns.process: merge --include-trace into pvl.dns-process, replacing pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
648
diff
changeset
|
57 |
print >>file, include |
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
|
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:
diff
changeset
|
59 |
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
|
60 |
|
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
|
61 |
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
|
62 |
|
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
|
63 |
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
|
64 |
pvl.args.main(main) |