Skip to content
Snippets Groups Projects
Commit fd92116c authored by Attila Farkas's avatar Attila Farkas
Browse files

refactoring, add netmask support

parent 15b80dc1
No related branches found
No related tags found
1 merge request!1Devel
...@@ -4,6 +4,8 @@ import sys ...@@ -4,6 +4,8 @@ import sys
import yaml import yaml
import jinja2 import jinja2
from modules.network_parser import add_networks
if (len(sys.argv) != 2): if (len(sys.argv) != 2):
print ("Error: Expecting 1 argument (yml file).") print ("Error: Expecting 1 argument (yml file).")
sys.exit(); sys.exit();
...@@ -26,17 +28,20 @@ def do_mapping(name, command_type): ...@@ -26,17 +28,20 @@ def do_mapping(name, command_type):
def add_formated_command(key, value): def add_formated_command(key, value):
if (key in vagrant_mappings['string']): if (key in vagrant_mappings['string']):
devices[host['name']].append('device.' + str(do_mapping(key, 'string')) + ' = \"' + str(value) + '\"') devices[host['name']].append(
'device.' + str(do_mapping(key, 'string'))
+ ' = \"' + str(value) + '\"')
elif (key in vagrant_mappings['integer']): elif (key in vagrant_mappings['integer']):
devices[host['name']].append('device.' + str(do_mapping(key, 'integer')) + ' = ' + str(value)) devices[host['name']].append(
'device.' + str(do_mapping(key, 'integer'))
+ ' = ' + str(value))
elif (key in vagrant_mappings['boolean']): elif (key in vagrant_mappings['boolean']):
devices[host['name']].append('device.' + str(do_mapping(key, 'boolean')) + ' = ' + str(value).lower()) devices[host['name']].append(
'device.' + str(do_mapping(key, 'boolean'))
+ ' = ' + str(value).lower())
def find_ip(name):
for net_mapping in yml['net_mappings']:
if (net_mapping['host'] == name):
return net_mapping['ip']
# Building "devices" structure that will be passed to Jinja2
devices = {} devices = {}
for host in yml['hosts']: for host in yml['hosts']:
...@@ -44,18 +49,13 @@ for host in yml['hosts']: ...@@ -44,18 +49,13 @@ for host in yml['hosts']:
for key, value in host.items(): for key, value in host.items():
if (key != 'name'): if (key != 'name'):
add_formated_command(key, value) add_formated_command(key, value)
if (yml['net_mappings']): add_networks(host['name'], yml, devices)
devices[host['name']].append('device.vm.network :private_network, ip: \"' + str(find_ip(host['name'])) + '\"')
# Generating output via Jinja2
templateLoader = jinja2.FileSystemLoader(searchpath="templates") templateLoader = jinja2.FileSystemLoader(searchpath="templates")
templateEnv = jinja2.Environment(loader=templateLoader, trim_blocks=True) templateEnv = jinja2.Environment(loader=templateLoader, trim_blocks=True)
baseTemplate = templateEnv.get_template("base") baseTemplate = templateEnv.get_template("base")
output = baseTemplate.render(devices = devices) output = baseTemplate.render(devices = devices)
print (output.encode('utf-8')) print (output)
#vagrantfile = open('Vagrantfile','w')
#vagrantfile.write(output)
def _find_ip(hostname, net_mappings):
for net_mapping in net_mappings:
if (net_mapping['host'] == hostname):
return net_mapping['ip']
def _add_ip(hostname, net_mappings, devices):
devices[hostname].append(
'device.vm.network :private_network, ip: \"'
+ str(_find_ip(hostname, net_mappings)) + '\"')
def _add_netmask(hostname, my_network, networks, devices):
for network in networks:
if (network['name'] == my_network):
address, mask = network['cidr'].split('/')
devices[hostname][-1] += (', netmask: ' + mask)
def add_networks(hostname, yml, devices):
if (not yml['net_mappings']):
return
for mapping in yml['net_mappings']:
if (mapping['host'] == hostname):
_add_ip(hostname, yml['net_mappings'], devices)
if (yml['networks']):
_add_netmask(hostname, mapping['network'], yml['networks'], devices)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment