On Thu, 2019-02-21 at 16:33 +0000, Daniel P. Berrangé wrote:
[...]
+ keys = ["default", package_format, os_name,
os_full]
# We need to add the base project manually here: the standard
# machinery hides it because it's an implementation detail
for project in projects + ["base"]:
for package in self._projects.get_packages(project):
- if "default" in mappings[package]:
- temp[package] = mappings[package]["default"]
- if package_format in mappings[package]:
- temp[package] = mappings[package][package_format]
- if os_name in mappings[package]:
- temp[package] = mappings[package][os_name]
- if os_full in mappings[package]:
- temp[package] = mappings[package][os_full]
+ for key in keys:
+ if key in mappings[package]:
+ temp[package] = mappings[package][key]
Little historical note: the reason why the code looked like this in
the first place[1] is that its structure was supposed to mirror that
of playbooks/update/tasks/packages.yml as closely as possible - the
idea being that, if the Ansible implementation was correct, then the
Python one would most likely be as well.
Of course that's no longer the case as of dcded110e102, so it makes
perfect sense to go further down this road and make the code more
compact.
Reviewed-by: Andrea Bolognani <abologna(a)redhat.com>
[1] In addition to Python being admittedly not my forte :)
--
Andrea Bolognani / Red Hat / Virtualization