summaryrefslogtreecommitdiffstats
path: root/config/utils
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-09-18 20:11:12 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-09-18 20:24:44 +0200
commit74cdf3ea93fb3a91ed03924fdb17076d36fc4cb9 (patch)
tree9e19feef0a04e918c97cdb8fe9572b6786f5fe6a /config/utils
parent3d98d06d697d38fd6bcbf66b29eecd1b61d0ae0b (diff)
config/utils: Add generate_config.py
Previously, generate_config.py resided in securedlab git repo, but since we want to be able to use it in both securedlab (for validation of new PDF files during verify jobs) and installer projects (for actually parsing the PDF file into usable installer inputs), we decided to move it to a common location, also available for regular users. This change merely replicates the file from securedlab git repo. Change-Id: I9ff7889e408338d3911853fe01b752b013de1db7 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Diffstat (limited to 'config/utils')
-rwxr-xr-xconfig/utils/generate_config.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/config/utils/generate_config.py b/config/utils/generate_config.py
new file mode 100755
index 00000000..a32367af
--- /dev/null
+++ b/config/utils/generate_config.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+"""This module does blah blah."""
+import argparse
+import ipaddress
+import yaml
+from jinja2 import Environment, FileSystemLoader
+
+PARSER = argparse.ArgumentParser()
+PARSER.add_argument("--yaml", "-y", type=str, required=True)
+PARSER.add_argument("--jinja2", "-j", type=str, required=True)
+ARGS = PARSER.parse_args()
+
+# Processor architecture vs DPKG architecture mapping
+DPKG_ARCH_TABLE = {
+ 'aarch64': 'arm64',
+ 'x86_64': 'amd64',
+}
+ARCH_DPKG_TABLE = dict(zip(DPKG_ARCH_TABLE.values(), DPKG_ARCH_TABLE.keys()))
+
+# 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)
+
+# Custom filter to convert between processor architecture
+# (as reported by $(uname -m)) and DPKG-style architecture
+def dpkg_arch(arch, to_dpkg=True):
+ """Return DPKG-compatible from processor arch and vice-versa"""
+ if to_dpkg:
+ return DPKG_ARCH_TABLE[arch]
+ else:
+ return ARCH_DPKG_TABLE[arch]
+
+ENV = Environment(loader=FileSystemLoader('./'))
+ENV.filters['ipaddr_index'] = ipaddr_index
+ENV.filters['dpkg_arch'] = dpkg_arch
+
+with open(ARGS.yaml) as _:
+ DICT = yaml.safe_load(_)
+
+# Print dictionary generated from yaml (uncomment for debug)
+# print(DICT)
+
+# Render template and print generated conf to console
+TEMPLATE = ENV.get_template(ARGS.jinja2)
+#pylint: disable=superfluous-parens
+print(TEMPLATE.render(conf=DICT))