diff -r cd152d6bad32 -r fa2fd79fe205 bin/pvl.hosts-reverse --- a/bin/pvl.hosts-reverse Thu Feb 26 19:07:30 2015 +0200 +++ b/bin/pvl.hosts-reverse Thu Feb 26 19:15:00 2015 +0200 @@ -2,6 +2,7 @@ import logging; log = logging.getLogger('pvl.hosts-reverse') import optparse +import os.path import pvl.args import pvl.hosts import pvl.hosts.zone @@ -15,19 +16,40 @@ parser.add_option_group(pvl.args.parser(parser)) parser.add_option_group(pvl.hosts.config.optparser(parser)) - parser.add_option('--reverse-zone', metavar='PREFIX', - help="Generate reverse zone for prefix") + parser.add_option('--zone-prefix', metavar='PREFIX', + help="Generated records for given prefix's reverse zone origin") parser.add_option('--unknown-host', metavar='NAME', help="Generate records for unused IPs") # input options, args = pvl.args.parse(parser, argv) + + if options.zone_prefix: + try: + prefix = pvl.dns.parse_prefix(options.zone_prefix) + except ValueError as error: + log.error("invalid reverse --zone-prefix=%s: %s", options.zone_prefix, error) + return 1 + else: + log.info("using given reverse --zone-prefix: %s", prefix) + + elif len(args) == 1: + path, = args + zone_prefix = os.path.basename(path.rstrip('/')) - if not options.reverse_zone: - log.fatal("required --reverse-zone") + try: + prefix = pvl.dns.parse_prefix(zone_prefix) + except ValueError as error: + log.error("invalid hosts path %s for reverse --zone-prefix: %s", zone_prefix, error) + return 1 + else: + log.info("using given hosts path %s for reverse --zone-prefix: %s", zone_prefix, prefix) + + else: + log.fatal("--zone-prefix is required if passing multiple hosts files") return 1 - + if options.unknown_host and not options.hosts_domain: log.fatal("--unknown-host requires --hosts-domain=") return 1 @@ -35,8 +57,6 @@ hosts = pvl.hosts.apply(options, args) # process - prefix = pvl.dns.parse_prefix(options.reverse_zone) - try: for rr in pvl.hosts.zone.apply_hosts_reverse(hosts, prefix, unknown_host = options.unknown_host,