process-zone: fix parts handling; default to logging.WARN, cleanup
authorTero Marttila <terom@paivola.fi>
Thu, 15 Mar 2012 18:33:36 +0200
changeset 527 3a2221124592
parent 526 cd10c4fe44bb
child 528 1eb454630f47
process-zone: fix parts handling; default to logging.WARN, cleanup
bin/process-zone
--- a/bin/process-zone	Thu Mar 15 18:32:17 2012 +0200
+++ b/bin/process-zone	Thu Mar 15 18:33:36 2012 +0200
@@ -32,7 +32,7 @@
     # logging
     general = optparse.OptionGroup(parser, "General Options")
 
-    general.add_option('-q', '--quiet',     dest='loglevel', action='store_const', const=logging.WARNING, help="Less output")
+    general.add_option('-q', '--quiet',     dest='loglevel', action='store_const', const=logging.ERROR, help="Less output")
     general.add_option('-v', '--verbose',   dest='loglevel', action='store_const', const=logging.INFO,  help="More output")
     general.add_option('-D', '--debug',     dest='loglevel', action='store_const', const=logging.DEBUG, help="Even more output")
 
@@ -47,9 +47,6 @@
     parser.add_option('--output-charset',       metavar='CHARSET',  default='utf-8', 
             help="Encoding used for output files")
 
-    parser.add_option('--serial',               metavar='FILE',
-            help="Read/update serial from given .serial file")
-
     parser.add_option('--forward-zone',         action='store_true', 
             help="Generate forward zone")
 
@@ -65,16 +62,9 @@
     parser.add_option('--reverse-zone',         metavar='NET',
             help="Generate forward zone for given subnet (x.z.y)")
 
-
-#    parser.add_option('--output-forward',       metavar='FILE', default=False, help="Hosts output file")
-#    parser.add_option('--output-reverse',       metavar='FILE', default=False, help="Reverse-hosts output file")
-#    parser.add_option('--forward-info',         action='store_true', help="Include additional TXT records in forward zone output")
-
-#    parser.add_option('--reverse-zone',         metavar='DOMAIN', help="Zone origin used for reverse zone")
-
     # defaults
     parser.set_defaults(
-        loglevel            = logging.INFO,
+        loglevel            = logging.WARN,
     )
     
     # parse
@@ -145,18 +135,22 @@
     # parse ttl/cls/type
     ttl = cls = None
 
-    type = parts.pop(-1)
-
     if parts and parts[0][0].isdigit() :
         ttl = parts.pop(0)
 
-    if parts :
+    if parts and parts[0].upper() in ('IN', 'CH') :
         cls = parts.pop(0)
 
+    type = parts.pop(0)
+
     #log.debug("ttl=%r, cls=%r, parts=%r", ttl, cls, parts)
 
     if parts :
-        raise Exception("Extra data: %r" % (line))
+        log.debug("extra data: %r + %r", parts, data)
+
+        # extra data
+        data = ' '.join(parts + [data])
+
 
     return name, ttl, type, data, comment
 
@@ -228,7 +222,7 @@
             reverse = reverse[:-(len(origin) + 1)]
 
         else :
-            log.warning("Reverse does not match zone origin: (%s) -> %s <-> %s", ip, reverse, origin)
+            log.warning("Reverse does not match zone origin, skipping: (%s) -> %s <-> %s", ip, reverse, origin)
             continue
 
         # domain to use
@@ -271,7 +265,7 @@
 
 def write_zone (file, zone) :
     for line in build_zone(zone) :
-        file.write(unicode(line + '\n'))
+        file.write(line + u'\n')
 
 def open_file (path, mode, charset) :
     """