Refactor bridge files into templates

This allows better extensibility, as well as provides more uniform way
of config file generation.
master
LEdoian 2 years ago
parent 3262f37229
commit c0f270e9e8

@ -51,11 +51,20 @@ bridges = {}
for i, n in [(x, 'net_'+str(x)) for x in range(1, 8)]:
bridges[i] = Bridge(n, i)
def dump_bridges(fn):
with open(fn, 'w+') as f:
for br in bridges:
# Generate bridge.conf for the host
f.write('allow ' + bridges[br].name + '\n')
def gen_bridge_files():
files = [
'bridge.conf',
'gen_bridges.sh',
]
context = {'bridges': bridges}
loader = jinja2.FileSystemLoader('templates/')
environment = jinja2.Environment(loader=loader, trim_blocks=True, keep_trailing_newline=True)
for f in files:
template = environment.get_template(f)
template.stream(context).dump('output/' + f)
mode = os.stat('output/gen_bridges.sh').st_mode
os.chmod('output/gen_bridges.sh', mode | 0o0100)
# Connections
# dict[ net_num -> [comp_names]
@ -78,7 +87,7 @@ for net, cs in conns.items():
comps[c].add_to_bridge(bridges[net])
os.mkdir('output')
dump_bridges('output/bridge.conf')
gen_bridge_files()
for c in comps.values():
c.gen_files()

@ -0,0 +1,3 @@
{% for b in bridges %}
allow {{ b.name }}
{% endfor %}

@ -0,0 +1,8 @@
#!/bin/sh
# Run as root.
{% for b in bridges %}
ip link add name {{ b.name }} type bridge
ip link set {{ b.name }} up
{% endfor %}
Loading…
Cancel
Save