diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rwxr-xr-x | src/flufigut.py | 38 | ||||
-rw-r--r-- | templates/example/planet.xml | 2 | ||||
-rw-r--r-- | templates/example/worker.xml | 20 |
4 files changed, 59 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e0e2d8f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +src/output diff --git a/src/flufigut.py b/src/flufigut.py index 37d5ee9..aa01a02 100755 --- a/src/flufigut.py +++ b/src/flufigut.py @@ -34,6 +34,8 @@ import sys import simplejson as json from exceptions import * from jinja2 import Environment, FileSystemLoader +import shutil +import os ### helper functions ############################################ # @@ -315,10 +317,44 @@ if error != 0: ### initialize and render templates ############################# # + +import shutil +shutil.rmtree('output', ignore_errors=True) + env = Environment(loader=FileSystemLoader('../templates/%s/' % (sys.argv[1])), line_statement_prefix = '%%') + +port = 9000 +for w in worker: + if worker[w] > 0: + machine_name = "" + for machine in globals['machines']: + if w in globals['machines'][machine]: + machine_name = machine + break + print "generating config for worker '%s/%s'" % (machine_name, w) + password = rand_string(12) + template = env.get_template('worker.xml') + ports = "%i-%i" % (port, port+1) + port+=2 + workerconf = template.render(globals=globals, name=w, password=password, portrange=ports) + dir = 'output/%s/worker' % machine + if not os.path.exists(dir): + os.makedirs(dir) + f = open('%s/%s.xml' % (dir, w), 'w') + f.write(workerconf.encode("utf8")) + f.write('\n') + f.close() + +print "generating planet '%s/%s'" % (globals['manager']['machine'], globals['name']) template = env.get_template('planet.xml') planet = template.render(globals=globals, atmosphere=atmosphere, flow=flow) -sys.stdout.write(planet.encode("utf8")) +dir = 'output/%s/manager' % globals['manager']['machine'] +if not os.path.exists(dir): + os.makedirs(dir) +f = open('%s/planet.xml' % (dir), 'w') +f.write(planet.encode("utf8")) +f.write('\n') +f.close() ### end ######################################################### diff --git a/templates/example/planet.xml b/templates/example/planet.xml index a252477..6c6b4bb 100644 --- a/templates/example/planet.xml +++ b/templates/example/planet.xml @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> <planet name="{{ globals.name }}"> <manager name="{{ globals.name }}"> @@ -45,4 +46,3 @@ </flow> </planet> - diff --git a/templates/example/worker.xml b/templates/example/worker.xml new file mode 100644 index 0000000..cd9ee5c --- /dev/null +++ b/templates/example/worker.xml @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<worker name="{{ name }}"> + <manager> +%% for name, value in globals.manager.items() +%% if name != 'machine' + <{{ name }}>{{ value }}</{{ name }}> +%% endif +%% endfor + </manager> + + <authentication type="plaintext"> + <username>{{ name }}</username> + <password>{{ password }}</password> + </authentication> + + <feederports>{{ portrange }}</feederports> +%% if debug != '' + <debug>{{ debug }}</debug> +%% endif +</worker> |