# HG changeset patch # User Tero Marttila # Date 1387216907 -7200 # Node ID 4dc5cc30a278657c1cccf09f43607913a1888a8c # Parent 81af20dd142d2661f9b6089d966f51fdd8b352fa pvl.hosts-import: support AAAA, make default comment handling an option diff -r 81af20dd142d -r 4dc5cc30a278 bin/pvl.hosts-import --- a/bin/pvl.hosts-import Mon Dec 16 20:01:21 2013 +0200 +++ b/bin/pvl.hosts-import Mon Dec 16 20:01:47 2013 +0200 @@ -48,6 +48,14 @@ parser.add_option('--import-dhcp-hosts', metavar='FILE', help="Load hosts from DHCP config") + parser.add_option('--zone-comments-default-owner', action='store_const', + dest='zone_comments_default', const='owner', + help="Import DNS zone comment as owner comment") + + parser.add_option('--zone-comments-default-host', action='store_const', + dest='zone_comments_default', const='host', + help="Import DNS zone comment as host comment") + parser.add_option('--dump-host-comments', action='store_true', help="Dump out info on imported host comments") @@ -88,7 +96,7 @@ log.debug("%s: skip %s", rr.name, rr) continue - elif rr.type == 'A' : + elif rr.type in ('A', 'AAAA') : ip, = rr.data yield rr.name, 'ip', ipaddr.IPAddress(ip) @@ -96,6 +104,9 @@ if rr.comment : yield rr.name, 'comment', rr.comment + if rr.origin : + yield rr.name, 'domain', rr.origin + elif rr.type == 'CNAME' : host, = rr.data @@ -194,7 +205,6 @@ re.compile(r'(?P.+?)\s*/\s*(?P.+)\s+[/-]\s+(?P.+)'), re.compile(r'(?P.+?)\s*/\s*(?P.+)\s+[(]\s*(?P.+)[)]'), re.compile(r'(?P.+?)\s*/\s*(?P.+)'), - re.compile(r'(?P.+)'), ) ZONE_OWNER_MAIL = re.compile(r'(?P.*?)\s*<(?P.+?)>') @@ -210,12 +220,16 @@ match = regex.match(comment) if match : + matches = match.groupdict() break else : - log.warn("%s: unparsed comment: %s", hostname, comment) - return + if options.zone_comments_default : + log.warn("%s: default comment: %s", hostname, comment) + matches = { options.zone_comments_default: comment } + else : + log.warn("%s: unknown comment: %s", hostname, comment) + return - matches = match.groupdict() owner = matches.pop('owner', None) if owner : @@ -226,8 +240,8 @@ owner = mail_matches['owner'] yield 'mail', mail_matches['mail'].strip() - - yield 'owner', owner.strip() + + yield 'owner', owner.strip() for field, value in matches.iteritems() : if value : @@ -272,7 +286,9 @@ Return (owner, comment) for host based on info, or None. """ - if info.get('owner').lower() in NONE_OWNERS : + owner = info.get('owner') + + if owner and owner.lower() in NONE_OWNERS : return False # from ldap?