equal
deleted
inserted
replaced
174 Return a Host initialized from data attributes. |
174 Return a Host initialized from data attributes. |
175 |
175 |
176 This handles all string parsing to our data types. |
176 This handles all string parsing to our data types. |
177 """ |
177 """ |
178 |
178 |
|
179 ip4 = parse_dict(ip, ipaddr.IPv4Address) |
|
180 ip6 = parse_dict(ip6, ipaddr.IPv6Address) |
|
181 |
|
182 ip = {label: (ip4.get(label), ip6.get(label)) for label in set(ip4) | set(ip6)} |
|
183 |
179 return cls(name, |
184 return cls(name, |
180 domain = domain, |
185 domain = domain, |
181 ip = parse_ip(ip, ipaddr.IPv4Address), |
186 ip4 = ip4.get(None), |
182 ip6 = parse_ip(ip6, ipaddr.IPv6Address), |
187 ip6 = ip6.get(None), |
|
188 ip = ip, |
183 ethernet = parse_dict(ethernet, parse_ethernet), |
189 ethernet = parse_dict(ethernet, parse_ethernet), |
184 owner = owner, |
190 owner = owner, |
185 location = parse_location(location, domain), |
191 location = parse_location(location, domain), |
186 alias = parse_list(alias), |
192 alias = parse_list(alias), |
187 alias4 = parse_list(alias4), |
193 alias4 = parse_list(alias4), |
192 boot = parse_dhcp_boot(boot), |
198 boot = parse_dhcp_boot(boot), |
193 extensions = extensions, |
199 extensions = extensions, |
194 ) |
200 ) |
195 |
201 |
196 def __init__ (self, name, domain, |
202 def __init__ (self, name, domain, |
197 ip=None, ip6=None, |
203 ip4=None, ip6=None, |
|
204 ip={}, |
198 ethernet={ }, |
205 ethernet={ }, |
199 owner=None, |
206 owner=None, |
200 location=None, |
207 location=None, |
201 alias=(), alias4=(), alias6=(), |
208 alias=(), alias4=(), alias6=(), |
202 forward=None, reverse=None, |
209 forward=None, reverse=None, |
205 extensions={}, |
212 extensions={}, |
206 ): |
213 ): |
207 """ |
214 """ |
208 name - str |
215 name - str |
209 domain - str |
216 domain - str |
210 ip - ipaddr.IPv4Address |
217 ip4 - primary ipaddr.IPv4Address |
211 ip6 - ipaddr.IPv6Address |
218 ip6 - primary ipaddr.IPv6Address |
|
219 ip - secondary { index: (ip4, ip6) } interface addresses |
212 ethernet - { index: ethernet } |
220 ethernet - { index: ethernet } |
213 alias - [ str ]: generate CNAMEs for given relative names |
221 alias - [ str ]: generate CNAMEs for given relative names |
214 owner - str: LDAP uid |
222 owner - str: LDAP uid |
215 location - None or (name, domain) |
223 location - None or (name, domain) |
216 alias4 - [ str ]: generate additional A records for given relative names |
224 alias4 - [ str ]: generate additional A records for given relative names |
224 down - mark as offline for polling |
232 down - mark as offline for polling |
225 """ |
233 """ |
226 |
234 |
227 self.name = name |
235 self.name = name |
228 self.domain = domain |
236 self.domain = domain |
|
237 self.ip4 = ip4 |
|
238 self.ip6 = ip6 |
229 self.ip = ip |
239 self.ip = ip |
230 self.ip6 = ip6 |
|
231 self.ethernet = ethernet |
240 self.ethernet = ethernet |
232 self.alias = alias |
241 self.alias = alias |
233 self.alias4 = alias4 |
242 self.alias4 = alias4 |
234 self.alias6 = alias6 |
243 self.alias6 = alias6 |
235 self.owner = owner |
244 self.owner = owner |