From 5c56ccee734fe698828cf5b4a0b870cdf7ccf044 Mon Sep 17 00:00:00 2001 From: Alexei Znamensky <103110+russoz@users.noreply.github.com> Date: Mon, 24 Apr 2023 00:04:37 +1200 Subject: [PATCH] deps module utils: add function failed() to retrieve dependencies check result (#6383) * deps module utils: add function failed() to retrieve dependencies check result * add changelog frag (cherry picked from commit e7cc9964705c8d0584f7a835d86d7c98fa02f6af) --- changelogs/fragments/6383-deps-failed.yml | 2 ++ plugins/module_utils/deps.py | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 changelogs/fragments/6383-deps-failed.yml diff --git a/changelogs/fragments/6383-deps-failed.yml b/changelogs/fragments/6383-deps-failed.yml new file mode 100644 index 00000000000..bcd35a7207f --- /dev/null +++ b/changelogs/fragments/6383-deps-failed.yml @@ -0,0 +1,2 @@ +minor_changes: + - deps module utils - add function ``failed()`` providing the ability to check the dependency check result without triggering an exception (https://github.com/ansible-collections/community.general/pull/6383). diff --git a/plugins/module_utils/deps.py b/plugins/module_utils/deps.py index bfb94cbc095..f6f4082a36e 100644 --- a/plugins/module_utils/deps.py +++ b/plugins/module_utils/deps.py @@ -50,7 +50,7 @@ def message(self): def failed(self): return self.state == 1 - def verify(self, module): + def validate(self, module): if self.failed: module.fail_json(msg=self.message, exception=self.trace) @@ -71,10 +71,10 @@ def declare(name, *args, **kwargs): _deps[name] = dep -def validate(module, spec=None): +def _select_names(spec): dep_names = sorted(_deps) - if spec is not None: + if spec: if spec.startswith("-"): spec_split = spec[1:].split(":") for d in spec_split: @@ -86,5 +86,13 @@ def validate(module, spec=None): _deps[d] # ensure it exists dep_names.append(d) - for dep in dep_names: - _deps[dep].verify(module) + return dep_names + + +def validate(module, spec=None): + for dep in _select_names(spec): + _deps[dep].validate(module) + + +def failed(spec=None): + return any(_deps[d].failed for d in _select_names(spec))