bin/pvl.hosts-forward
author Tero Marttila <tero.marttila@aalto.fi>
Thu, 26 Feb 2015 15:29:03 +0200
changeset 489 7f1bd12e0d54
parent 487 920394061b6f
child 516 9615ffc647a0
permissions -rwxr-xr-x
pvl.hosts-reverse: move options out of pvl.hosts.zone
458
600ad9eb6f25 pvl.hosts.zone: cleanup and split pvl.hosts-forward and pvl.hosts-reverse from pvl.hosts-dns
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     1
#!/usr/bin/env python
600ad9eb6f25 pvl.hosts.zone: cleanup and split pvl.hosts-forward and pvl.hosts-reverse from pvl.hosts-dns
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     2
475
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     3
import logging; log = logging.getLogger('pvl.hosts-forward')
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     4
import optparse 
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     5
import pvl.args
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     6
import pvl.hosts
458
600ad9eb6f25 pvl.hosts.zone: cleanup and split pvl.hosts-forward and pvl.hosts-reverse from pvl.hosts-dns
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     7
import pvl.hosts.zone
600ad9eb6f25 pvl.hosts.zone: cleanup and split pvl.hosts-forward and pvl.hosts-reverse from pvl.hosts-dns
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     8
475
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     9
def main (argv):
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    10
    """
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    11
        Generate bind zonefiles from host definitions.
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    12
    """
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    13
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    14
    parser = optparse.OptionParser(main.__doc__)
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    15
    parser.add_option_group(pvl.args.parser(parser))
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    16
    parser.add_option_group(pvl.hosts.config.optparser(parser))
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    17
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    18
    parser.add_option('--forward-zone',         metavar='DOMAIN',
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    19
            help="Generate forward zone for domain")
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    20
    
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    21
    parser.add_option('--add-origin',           action='store_true',
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    22
            help="Include $ORIGIN directive in zone")
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    23
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    24
    # input
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    25
    options, args = pvl.args.parse(parser, argv)
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    26
    
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    27
    if not options.forward_zone:
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    28
        log.fatal("required --forward-zone")
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    29
        return 1
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    30
    
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    31
    hosts = pvl.hosts.apply(options, args)
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    32
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    33
    # process
487
920394061b6f pvl.hosts.zone: HostZoneError(HostError), move resolve() to pvl.dns.relative(), and expect HostError's in pvl.hosts-forward/pvl.hosts-reverse
Tero Marttila <tero.marttila@aalto.fi>
parents: 475
diff changeset
    34
    try:
489
7f1bd12e0d54 pvl.hosts-reverse: move options out of pvl.hosts.zone
Tero Marttila <tero.marttila@aalto.fi>
parents: 487
diff changeset
    35
        for rr in pvl.hosts.zone.apply_hosts_forward(hosts, options.forward_zone,
7f1bd12e0d54 pvl.hosts-reverse: move options out of pvl.hosts.zone
Tero Marttila <tero.marttila@aalto.fi>
parents: 487
diff changeset
    36
                add_origin  = options.add_origin,
7f1bd12e0d54 pvl.hosts-reverse: move options out of pvl.hosts.zone
Tero Marttila <tero.marttila@aalto.fi>
parents: 487
diff changeset
    37
        ):
487
920394061b6f pvl.hosts.zone: HostZoneError(HostError), move resolve() to pvl.dns.relative(), and expect HostError's in pvl.hosts-forward/pvl.hosts-reverse
Tero Marttila <tero.marttila@aalto.fi>
parents: 475
diff changeset
    38
            print unicode(rr)
920394061b6f pvl.hosts.zone: HostZoneError(HostError), move resolve() to pvl.dns.relative(), and expect HostError's in pvl.hosts-forward/pvl.hosts-reverse
Tero Marttila <tero.marttila@aalto.fi>
parents: 475
diff changeset
    39
    except pvl.hosts.HostError as error:
920394061b6f pvl.hosts.zone: HostZoneError(HostError), move resolve() to pvl.dns.relative(), and expect HostError's in pvl.hosts-forward/pvl.hosts-reverse
Tero Marttila <tero.marttila@aalto.fi>
parents: 475
diff changeset
    40
        log.error("%s", error)
920394061b6f pvl.hosts.zone: HostZoneError(HostError), move resolve() to pvl.dns.relative(), and expect HostError's in pvl.hosts-forward/pvl.hosts-reverse
Tero Marttila <tero.marttila@aalto.fi>
parents: 475
diff changeset
    41
        return 3
920394061b6f pvl.hosts.zone: HostZoneError(HostError), move resolve() to pvl.dns.relative(), and expect HostError's in pvl.hosts-forward/pvl.hosts-reverse
Tero Marttila <tero.marttila@aalto.fi>
parents: 475
diff changeset
    42
475
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    43
    return 0
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    44
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    45
if __name__ == '__main__':
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    46
    pvl.args.main(main)