pvl.hosts: support foo:bar = ... extension fields
--- a/pvl/hosts.py Mon Mar 17 11:59:15 2014 +0200
+++ b/pvl/hosts.py Mon Mar 17 15:51:08 2014 +0200
@@ -5,6 +5,7 @@
import pvl.args
import pvl.dns.zone
+import collections
import configobj
import ipaddr
import optparse
@@ -121,13 +122,21 @@
alias6 = ()
ethernet = { }
+ extensions = collections.defaultdict(dict)
for field, value in extra.iteritems() :
+ if ':' in field :
+ extension, field = field.split(':', 1)
+
+ extensions[extension][field] = value
+
+ continue
+
if '.' in field :
field, instance = field.split('.')
else :
instance = None
-
+
if field == 'ethernet' :
if instance :
ethernet[instance] = value
@@ -170,6 +179,8 @@
boot = boot,
forward = forward,
reverse = reverse,
+
+ **extensions
)
def __init__ (self, host,
@@ -181,6 +192,7 @@
boot=None,
alias4=None, alias6=None,
forward=None, reverse=None,
+ **extensions
) :
"""
host - str
@@ -209,6 +221,8 @@
self.forward = forward
self.reverse = reverse
+ self.extensions = extensions
+
def fqdn (self) :
if '.' in self.host :
return self.host + '.'
@@ -216,7 +230,7 @@
return pvl.dns.zone.fqdn(self.host, self.domain)
else :
raise ValueError("%s: have no fqdn/domain" % (self, ))
-
+
def __str__ (self) :
return str(self.host)