aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-09-17 01:15:28 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-09-17 01:20:26 +0200
commita0b540b6d131ada37dade13f6832390cf9abd014 (patch)
treeb35ae22fee90d1ecc6e0e8b9322ff7002b5f4900
parentb2613943c7e904771f420c7ffe4a549035a3e107 (diff)
utils/generate_config.py: Add dpkg_arch filter
PDF populates the canonical arch name, as reported by $(uname -m). In some cases, we need to pass the architecture read from PDF to software components that expect it to be represend in DPKG format (e.g. MaaS, APT on Debian systems use "amd64" instead of "x86_64"). Change-Id: I5fcef0a2c2a5cdc5332b5fab1fd284386bb865d0 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-rwxr-xr-xutils/generate_config.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/utils/generate_config.py b/utils/generate_config.py
index 353cd47..d7109b5 100755
--- a/utils/generate_config.py
+++ b/utils/generate_config.py
@@ -10,6 +10,13 @@ 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):
@@ -21,8 +28,18 @@ def ipaddr_index(base_address, index):
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(_)