pvl.hosts-reverse: use given sole host file path for --zone-prefix
authorTero Marttila <tero.marttila@aalto.fi>
Thu, 26 Feb 2015 19:15:00 +0200
changeset 519 fa2fd79fe205
parent 518 cd152d6bad32
child 520 0310e199435a
pvl.hosts-reverse: use given sole host file path for --zone-prefix
bin/pvl.hosts-reverse
etc/zones/reverse/192.0.2/asdf.test
etc/zones/reverse/192.0.2/test
--- 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,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/zones/reverse/192.0.2/asdf.test	Thu Feb 26 19:15:00 2015 +0200
@@ -0,0 +1,1 @@
+../../../hosts/test/asdf.test
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/zones/reverse/192.0.2/test	Thu Feb 26 19:15:00 2015 +0200
@@ -0,0 +1,1 @@
+../../../hosts/test/test
\ No newline at end of file