equal
deleted
inserted
replaced
1 import collections |
1 import collections |
2 import ipaddr |
2 import ipaddress |
3 import logging; log = logging.getLogger('pvl.hosts.host') |
3 import logging; log = logging.getLogger('pvl.hosts.host') |
4 import pvl.dns |
4 import pvl.dns |
5 |
5 |
6 class HostError (Exception): |
6 class HostError (Exception): |
7 """ |
7 """ |
154 |
154 |
155 extensions = {extension_cls.EXTENSION: extension_cls.build(**params) for extension_cls, params in extension_classes.iteritems()} |
155 extensions = {extension_cls.EXTENSION: extension_cls.build(**params) for extension_cls, params in extension_classes.iteritems()} |
156 |
156 |
157 return cls(name, |
157 return cls(name, |
158 domain = domain, |
158 domain = domain, |
159 ip4 = parse_ip(ip, ipaddr.IPv4Address), |
159 ip4 = parse_ip(ip, ipaddress.IPv4Address), |
160 ip6 = parse_ip(ip6, ipaddr.IPv6Address), |
160 ip6 = parse_ip(ip6, ipaddress.IPv6Address), |
161 ethernet = parse_dict(ethernet, parse_ethernet), |
161 ethernet = parse_dict(ethernet, parse_ethernet), |
162 owner = owner, |
162 owner = owner, |
163 location = parse_location(location, domain), |
163 location = parse_location(location, domain), |
164 alias = parse_list(alias), |
164 alias = parse_list(alias), |
165 alias4 = parse_list(alias4), |
165 alias4 = parse_list(alias4), |
181 extensions={}, |
181 extensions={}, |
182 ): |
182 ): |
183 """ |
183 """ |
184 name - str |
184 name - str |
185 domain - str |
185 domain - str |
186 ip4 - primary ipaddr.IPv4Address |
186 ip4 - ipaddress.IPv4Address |
187 ip6 - primary ipaddr.IPv6Address |
187 ip6 - ipaddress.IPv6Address |
188 ethernet - { index: ethernet } |
188 ethernet - { index: ethernet } |
189 alias - [ str ]: generate CNAMEs for given relative names |
189 alias - [ str ]: generate CNAMEs for given relative names |
190 owner - str: LDAP uid |
190 owner - str: LDAP uid |
191 location - None or (name, domain) |
191 location - None or (name, domain) |
192 alias4 - [ str ]: generate additional A records for given relative names |
192 alias4 - [ str ]: generate additional A records for given relative names |
222 |
222 |
223 if self.ip4: |
223 if self.ip4: |
224 return self.ip4 |
224 return self.ip4 |
225 else: |
225 else: |
226 # sorts first |
226 # sorts first |
227 return ipaddr.IPAddress(0) |
227 return ipaddress.IPvAddress(0) |
228 |
228 |
229 def addresses (self): |
229 def addresses (self): |
230 """ |
230 """ |
231 Yield (sublabel, ipaddr) records. |
231 Yield (sublabel, ipaddress.IP*Address) records. |
232 """ |
232 """ |
233 |
233 |
234 if self.ip4: |
234 if self.ip4: |
235 yield None, self.ip4 |
235 yield None, self.ip4 |
236 |
236 |