From 00b70bf36a538424c8da11d1ffe64551d99e5d21 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Fri, 21 Feb 2020 17:01:09 -0500 Subject: [PATCH] Show field instead of value (#59926) * Show argument name vs value on failed conversion generally more useful to user as they might set values indirectly * clog --- changelogs/fragments/show_field_instead_of_value.yml | 2 ++ lib/ansible/module_utils/common/parameters.py | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/show_field_instead_of_value.yml diff --git a/changelogs/fragments/show_field_instead_of_value.yml b/changelogs/fragments/show_field_instead_of_value.yml new file mode 100644 index 00000000000..5d0ee0326d2 --- /dev/null +++ b/changelogs/fragments/show_field_instead_of_value.yml @@ -0,0 +1,2 @@ +bugfixes: + - An invalid value is hard to track down if you don't know where it came from, return field name instead. diff --git a/lib/ansible/module_utils/common/parameters.py b/lib/ansible/module_utils/common/parameters.py index f9991391aa6..fdd16466d9f 100644 --- a/lib/ansible/module_utils/common/parameters.py +++ b/lib/ansible/module_utils/common/parameters.py @@ -65,7 +65,7 @@ def _return_datastructure_name(obj): elif isinstance(obj, tuple(list(integer_types) + [float])): yield to_native(obj, nonstring='simplerepr') else: - raise TypeError('Unknown parameter type: %s, %s' % (type(obj), obj)) + raise TypeError('Unknown parameter type: %s' % (type(obj))) def list_no_log_values(argument_spec, params): @@ -86,7 +86,10 @@ def list_no_log_values(argument_spec, params): no_log_object = params.get(arg_name, None) if no_log_object: - no_log_values.update(_return_datastructure_name(no_log_object)) + try: + no_log_values.update(_return_datastructure_name(no_log_object)) + except TypeError as e: + raise TypeError('Failed to convert "%s": %s' % (arg_name, to_native(e))) # Get no_log values from suboptions sub_argument_spec = arg_opts.get('options')