added ip and network addresses helpers

This commit is contained in:
Krystian Dużyński 2023-04-28 20:58:15 +02:00
parent 062862f193
commit 6681a974ff
2 changed files with 9 additions and 1 deletions

View File

@ -3,6 +3,7 @@ from textwrap import indent
from typing import Dict, List from typing import Dict, List
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
from netaddr import *
from utils import read_text_file from utils import read_text_file
@ -82,6 +83,12 @@ def render_file(path: str, include_dirs: List[str], variables: Dict[str, str]):
env.globals['rollback_delete_chain'] = rollback_delete_chain env.globals['rollback_delete_chain'] = rollback_delete_chain
env.globals = {**env.globals, **variables} env.globals = {**env.globals, **variables}
env.filters["ipnet"] = lambda x: str(IPNetwork(x))
env.filters["network"] = lambda x: str(IPNetwork(x).cidr)
env.filters["host"] = lambda x: str(IPNetwork(x).ip)
env.filters["netmask"] = lambda x: str(IPNetwork(x).netmask)
env.filters["with_host"] = lambda x, host: IPNetwork(x).network + IPAddress(f"0.0.0.{host}")
content = env.get_template(os.path.basename(path)) content = env.get_template(os.path.basename(path))
content = content.render(load_file=load_file) content = content.render(load_file=load_file)

View File

@ -1,2 +1,3 @@
jinja2 jinja2
pyyaml pyyaml
netaddr