591 del by_name[(alias, domain)] |
591 del by_name[(alias, domain)] |
592 else : |
592 else : |
593 log.warn("%s: %s mapped to %s, but no aliases", alias, alias_field, host) |
593 log.warn("%s: %s mapped to %s, but no aliases", alias, alias_field, host) |
594 del by_name[(alias, domain)] |
594 del by_name[(alias, domain)] |
595 |
595 |
|
596 # scan by alias |
|
597 by_alias = { } |
|
598 |
|
599 for (host, domain), fields in hosts : |
|
600 for alias in fields.get(('alias', ), ()) : |
|
601 if (alias, domain) in by_alias : |
|
602 log.warn("%s: duplicate alias %s: %s", host, alias, by_alias[(alias, domain)]) |
|
603 else : |
|
604 by_alias[(alias, domain)] = (host, fields) |
|
605 |
596 for (host, domain), fields in hosts : |
606 for (host, domain), fields in hosts : |
597 fields = by_name.get((host, domain)) |
607 fields = by_name.get((host, domain)) |
598 |
608 |
599 if not fields : |
609 if not fields : |
600 # skip |
610 # skip |
601 continue |
611 continue |
602 |
612 |
603 if set(fields) == set([('alias', )]) : |
613 if set(fields) == set([('alias', )]) : |
604 log.warn("%s: nonexistant alias target: %s", host, ' '.join(fields[('alias', )])) |
614 aliases = fields[('alias', )] |
|
615 if (host, domain) in by_alias : |
|
616 alias_host, alias_fields = by_alias[(host, domain)] |
|
617 log.info("%s: chain as alias to %s: %s", host, alias_host, ' '.join(aliases)) |
|
618 alias_fields[('alias', )].extend(aliases) |
|
619 continue |
|
620 else : |
|
621 log.warn("%s@%s: nonexistant alias target for: %s", host, domain, ' '.join(aliases)) |
605 |
622 |
606 ip = fields.get(('ip', )) |
623 ip = fields.get(('ip', )) |
607 |
624 |
608 if ip in by_ip : |
625 if ip in by_ip : |
609 log.warn("%s: duplicate ip %s: %s", host, ip, by_ip[ip]) |
626 log.warn("%s: duplicate ip %s: %s", host, ip, by_ip[ip]) |