--- a/bin/pvl.hosts-import Thu Dec 19 02:07:03 2013 +0200
+++ b/bin/pvl.hosts-import Thu Dec 19 02:16:46 2013 +0200
@@ -550,19 +550,29 @@
# scan for alias4
for (host, domain), fields in by_name.items() :
- alias4 = pvl.hosts.Host.ALIAS4_FMT.format(host=host)
- alias_fields = by_name.get((alias4, domain))
+ for fmt, ip_field, alias_field in (
+ (pvl.hosts.Host.ALIAS4_FMT, 'ip', 'alias4'),
+ (pvl.hosts.Host.ALIAS6_FMT, 'ip6', 'alias6'),
+ ) :
+ alias = fmt.format(host=host)
+ alias_fields = by_name.get((alias, domain))
- if not alias_fields :
- continue
+ if not alias_fields :
+ continue
- elif set(alias_fields) == set([('ip', ), ('alias', )]) :
- log.warn("%s: mapped to alias4 on %s", host, alias4)
- alias_fields[('alias4', )] = fields[('alias', )]
- del by_name[(host, domain)]
+ elif alias_fields[(ip_field, )] != fields[(ip_field, )] :
+ log.warn("%s: %s %s collision with %s", host, alias_field, ip_field, alias)
+ elif ('alias', ) in alias_fields :
+ log.warn("%s: mapped to %s on %s", alias, alias_field, host)
+ fields[(alias_field, )] = alias_fields.get(('alias', ), ())
+ del by_name[(alias, domain)]
+ else :
+ log.warn("%s: %s mapped to %s, but no aliases", alias, alias_field, host)
for (host, domain), fields in hosts :
- if (host, domain) not in by_name :
+ fields = by_name.get((host, domain))
+
+ if not fields :
# skip
continue
@@ -661,6 +671,8 @@
'ethernet',
'owner',
'alias',
+ 'alias4',
+ 'alias6',
'boot',
) :
for field, value in fields.iteritems() :