mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-08-05 06:14:42 +00:00
Fix compare_args_ipa when passing None as parameter.
There were no test for the arguments of compare_args_ipa() to check if they were `None`, and they were used in contexts where `None` would raise exceptions. A test was added to return `False` if only one of the parameters is `None`, and `True` if both are None.
This commit is contained in:
@@ -285,6 +285,23 @@ def compare_args_ipa(module, args, ipa): # noqa
|
|||||||
"""
|
"""
|
||||||
base_debug_msg = "Ansible arguments and IPA commands differed. "
|
base_debug_msg = "Ansible arguments and IPA commands differed. "
|
||||||
|
|
||||||
|
# If both args and ipa are None, return there's no difference.
|
||||||
|
# If only one is None, return there is a difference.
|
||||||
|
# This tests avoid unecessary invalid access to attributes.
|
||||||
|
if args is None and ipa is None:
|
||||||
|
return True
|
||||||
|
if args is None or ipa is None:
|
||||||
|
module.debug(
|
||||||
|
base_debug_msg + "args is%s None an ipa is%s None" % (
|
||||||
|
"" if args is None else " not", "" if ipa is None else " not",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Fail if args or ipa are not dicts.
|
||||||
|
if not (isinstance(args, dict) and isinstance(ipa, dict)):
|
||||||
|
raise TypeError("Expected 'dicts' to compare.")
|
||||||
|
|
||||||
for key in args.keys():
|
for key in args.keys():
|
||||||
if key not in ipa:
|
if key not in ipa:
|
||||||
module.debug(
|
module.debug(
|
||||||
|
|||||||
Reference in New Issue
Block a user