diff --git a/configtemplate.py b/configtemplate.py
new file mode 100644
index 0000000..7819c82
--- /dev/null
+++ b/configtemplate.py
@@ -0,0 +1,35 @@
+from lxml import etree
+
+def read_template(path):
+ class ConfigTemplate(object):
+ def __init__(self,**kwargs):
+ for k,v in kwargs.items():
+ if hasattr(self,k):
+ setattr(self,k,v)
+ else:
+ raise AttributeError, "%s config has no attribute %s" % (self.__class__.__name__, k)
+
+ def __call__(self,**kwargs):
+ cfg = ConfigTemplate()
+ d = dir(self)
+ for k in d:
+ if not k.startswith('_'):
+ v = getattr(self,k)
+ setattr(cfg,k,v)
+ for k,v in kwargs.items():
+ if k in d:
+ setattr(cfg,k,v)
+ else:
+ raise AttributeError, "%s config has no attribute %s" % (self.__class__.__name__, k)
+ return cfg
+
+ xmldata = etree.parse(path).getroot()
+ name = xmldata.attrib['name']
+ for node in xmldata:
+ if node.text:
+ setattr(ConfigTemplate, node.attrib['name'], node.text)
+ else:
+ setattr(ConfigTemplate, node.attrib['name'], '')
+ ConfigTemplate.__name__ = name
+
+ return ConfigTemplate
diff --git a/jintest.py b/jintest.py
index 7b4e90c..2d743a9 100755
--- a/jintest.py
+++ b/jintest.py
@@ -1,12 +1,13 @@
#!/usr/bin/python
+import time
import signal
from copy import copy
-from lxml import etree
-from jinja2 import Template
import xmlserialize as xml
import discovery
+from templates import do_render
+from configtemplate import read_template
def on_sigint(signum, frame):
print "Got SIGINT"
@@ -21,13 +22,16 @@ class Service(object):
self.port = 0
self.proto = ''
self.stype = ''
- self.hostname = ''
+ self.name = ''
def uri(self):
if self.port:
return "%s:%s" % (self.ip, self.port)
else:
return self.ip
+
+ def __repr__(self):
+ return "<Service %s on %s:%s>" % (self.name,self.ip,self.port)
class Host(object):
def __init__(self):
@@ -43,52 +47,17 @@ class ZeroconfListener(object):
svc.ip = addr
svc.port = port
services[sname] = svc
+ print "services[%s] = %s" % (sname, svc)
listener = ZeroconfListener()
-browser = discovery.Browser(args=('_ssh._tcp','_pulse-server._tcp'))
+browser = discovery.Browser(args=('_ssh._tcp','_pulse-server._tcp','_nameserver._udp'))
browser.set_listener(listener)
browser.start()
-def read_template(path):
- class ConfigTemplate(object):
- def __init__(self,**kwargs):
- for k,v in kwargs.items():
- if hasattr(self,k):
- setattr(self,k,v)
- else:
- raise AttributeError, "%s config has no attribute %s" % (self.__class__.__name__, k)
-
- def __call__(self,**kwargs):
- cfg = ConfigTemplate()
- d = dir(self)
- for k in d:
- if not k.startswith('_'):
- v = getattr(self,k)
- setattr(cfg,k,v)
- for k,v in kwargs.items():
- if k in d:
- setattr(cfg,k,v)
- else:
- raise AttributeError, "%s config has no attribute %s" % (self.__class__.__name__, k)
- return cfg
-
- xmldata = etree.parse(path).getroot()
- name = xmldata.attrib['name']
- for node in xmldata:
- if node.text:
- setattr(ConfigTemplate, node.attrib['name'], node.text)
- else:
- setattr(ConfigTemplate, node.attrib['name'], '')
- ConfigTemplate.__name__ = name
-
- return ConfigTemplate
-
services = {}
services['proxy'] = Service()
services['proxy'].ip = '192.168.32.3'
services['proxy'].port = 3128
-services['dns'] = Service()
-services['dns'].ip = '192.168.32.2'
services['gateway'] = Service()
services['gateway'].ip = '192.168.32.1'
@@ -96,11 +65,10 @@ machine = Host()
machine.ip = '192.168.1.2'
machine.hostname = 'portnov'
-def do_render(conf):
- return Template(xml.serialize(conf)).render(services=services,machine=machine)
+time.sleep(5)
system = read_template('configs/templates/system.xml')
-scfg = system(proxy='{{services.proxy.ip}}:{{services.proxy.port}}')
+scfg = system(proxy='{{services.proxy.uri}}')
print "First config:"
print do_render(scfg)
diff --git a/templates.py b/templates.py
new file mode 100644
index 0000000..714d820
--- /dev/null
+++ b/templates.py
@@ -0,0 +1,6 @@
+
+from jinja2 import Template
+
+def do_render(conf):
+ return Template(xml.serialize(conf)).render(services=services,machine=machine)
+