diff -r f56f60c2dd9b -r bfda3703fa0c bin/pvl.hosts-import --- a/bin/pvl.hosts-import Thu Dec 19 17:40:37 2013 +0200 +++ b/bin/pvl.hosts-import Thu Dec 19 17:54:30 2013 +0200 @@ -593,6 +593,16 @@ log.warn("%s: %s mapped to %s, but no aliases", alias, alias_field, host) del by_name[(alias, domain)] + # scan by alias + by_alias = { } + + for (host, domain), fields in hosts : + for alias in fields.get(('alias', ), ()) : + if (alias, domain) in by_alias : + log.warn("%s: duplicate alias %s: %s", host, alias, by_alias[(alias, domain)]) + else : + by_alias[(alias, domain)] = (host, fields) + for (host, domain), fields in hosts : fields = by_name.get((host, domain)) @@ -601,7 +611,14 @@ continue if set(fields) == set([('alias', )]) : - log.warn("%s: nonexistant alias target: %s", host, ' '.join(fields[('alias', )])) + aliases = fields[('alias', )] + if (host, domain) in by_alias : + alias_host, alias_fields = by_alias[(host, domain)] + log.info("%s: chain as alias to %s: %s", host, alias_host, ' '.join(aliases)) + alias_fields[('alias', )].extend(aliases) + continue + else : + log.warn("%s@%s: nonexistant alias target for: %s", host, domain, ' '.join(aliases)) ip = fields.get(('ip', ))