From b2613943c7e904771f420c7ffe4a549035a3e107 Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Fri, 15 Sep 2017 16:21:32 +0200 Subject: utils/generate_config.py: Add ipaddr_index filter v5 -> v6: - IP address can be IPv4 or IPv6; - add fallback to 'str' type for py3-incompatible 'unicode'; - fix pylint complaints (silence unnecessary ones); Change-Id: Iea1049a7f5379e9bcb4b785fdd810b67f51c94ab Signed-off-by: Guillermo Herrero Signed-off-by: Alexandru Avadanii --- utils/generate_config.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'utils') diff --git a/utils/generate_config.py b/utils/generate_config.py index b65bf7f..353cd47 100755 --- a/utils/generate_config.py +++ b/utils/generate_config.py @@ -1,6 +1,7 @@ #!/usr/bin/python """This module does blah blah.""" import argparse +import ipaddress import yaml from jinja2 import Environment, FileSystemLoader @@ -9,8 +10,19 @@ PARSER.add_argument("--yaml", "-y", type=str, required=True) PARSER.add_argument("--jinja2", "-j", type=str, required=True) ARGS = PARSER.parse_args() +# Custom filter to allow simple IP address operations returning +# a new address from an upper or lower (negative) index +def ipaddr_index(base_address, index): + """Return IP address in given network at given index""" + try: + base_address_str = unicode(base_address) + #pylint: disable=unused-variable + except NameError as ex: + base_address_str = str(base_address) + return ipaddress.ip_address(base_address_str) + int(index) ENV = Environment(loader=FileSystemLoader('./')) +ENV.filters['ipaddr_index'] = ipaddr_index with open(ARGS.yaml) as _: DICT = yaml.safe_load(_) @@ -20,4 +32,5 @@ with open(ARGS.yaml) as _: # Render template and print generated conf to console TEMPLATE = ENV.get_template(ARGS.jinja2) +#pylint: disable=superfluous-parens print(TEMPLATE.render(conf=DICT)) -- cgit 1.2.3-korg