diff -r ddb77f32b35a -r 45bedeba92e5 pvl/hosts/host.py --- a/pvl/hosts/host.py Sat Mar 07 16:31:11 2015 +0200 +++ b/pvl/hosts/host.py Mon Mar 09 18:00:18 2015 +0200 @@ -176,10 +176,16 @@ This handles all string parsing to our data types. """ + ip4 = parse_dict(ip, ipaddr.IPv4Address) + ip6 = parse_dict(ip6, ipaddr.IPv6Address) + + ip = {label: (ip4.get(label), ip6.get(label)) for label in set(ip4) | set(ip6)} + return cls(name, domain = domain, - ip = parse_ip(ip, ipaddr.IPv4Address), - ip6 = parse_ip(ip6, ipaddr.IPv6Address), + ip4 = ip4.get(None), + ip6 = ip6.get(None), + ip = ip, ethernet = parse_dict(ethernet, parse_ethernet), owner = owner, location = parse_location(location, domain), @@ -194,7 +200,8 @@ ) def __init__ (self, name, domain, - ip=None, ip6=None, + ip4=None, ip6=None, + ip={}, ethernet={ }, owner=None, location=None, @@ -207,8 +214,9 @@ """ name - str domain - str - ip - ipaddr.IPv4Address - ip6 - ipaddr.IPv6Address + ip4 - primary ipaddr.IPv4Address + ip6 - primary ipaddr.IPv6Address + ip - secondary { index: (ip4, ip6) } interface addresses ethernet - { index: ethernet } alias - [ str ]: generate CNAMEs for given relative names owner - str: LDAP uid @@ -226,8 +234,9 @@ self.name = name self.domain = domain + self.ip4 = ip4 + self.ip6 = ip6 self.ip = ip - self.ip6 = ip6 self.ethernet = ethernet self.alias = alias self.alias4 = alias4