diff --git a/changelogs/fragments/6383-deps-failed.yml b/changelogs/fragments/6383-deps-failed.yml new file mode 100644 index 0000000000..bcd35a7207 --- /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 bfb94cbc09..f6f4082a36 100644 --- a/plugins/module_utils/deps.py +++ b/plugins/module_utils/deps.py @@ -50,7 +50,7 @@ class _Dependency(object): 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))