diff options
author | Alexandru Avadanii <Alexandru.Avadanii@enea.com> | 2017-09-17 01:15:28 +0200 |
---|---|---|
committer | Alexandru Avadanii <Alexandru.Avadanii@enea.com> | 2017-09-17 01:20:26 +0200 |
commit | a0b540b6d131ada37dade13f6832390cf9abd014 (patch) | |
tree | b35ae22fee90d1ecc6e0e8b9322ff7002b5f4900 | |
parent | b2613943c7e904771f420c7ffe4a549035a3e107 (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-x | utils/generate_config.py | 17 |
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(_) |