-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathrender_templates.py
More file actions
executable file
·34 lines (30 loc) · 1.32 KB
/
Copy pathrender_templates.py
File metadata and controls
executable file
·34 lines (30 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from jinja2 import Environment, FileSystemLoader
import os
from configTemplates.objects import L2Interface
def render_template(
Hostname, Template, Model=None, NOS="IOS", vendor="Cisco", **kwargs
):
ENV = Environment(loader=FileSystemLoader(f"./configTemplates/{NOS}"))
params = {"hostname": Hostname, "vendor": vendor, "model": Model}
try:
template = ENV.get_template(f"{Template}.j2")
except FileNotFoundError:
print(f"The template {Template} is not valid!")
if Template != "initial":
if not Model:
raise Exception("Need to specify model!")
if Template == "interface":
intf_object = L2Interface(kwargs["int_prefix"], kwargs["vlan"])
params["interface"] = intf_object
elif Template == "compliance":
pass
DirectoryToAdd = f"./renderedTemplates/{NOS}/{Model}"
if not os.path.exists(DirectoryToAdd):
os.mkdir(DirectoryToAdd)
with open(f"{DirectoryToAdd}/{Hostname}.txt", "w") as renderedTemplate:
renderedTemplate.write(template.render(**params))
else:
Directory = f"./renderedTemplates/deployment"
params["mgmt_ip"] = kwargs["mgmt_ip"]
with open(f"{Directory}/{Hostname}.txt", "w") as renderedTemplate:
renderedTemplate.write(template.render(**params))