bin/pvl.hosts-reverse
changeset 519 fa2fd79fe205
parent 489 7f1bd12e0d54
child 670 b95ad8c8bb4e
--- 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,