From b16280455c88fc07db49a32d35e77217118a90d2 Mon Sep 17 00:00:00 2001
From: Thomas Woerner <twoerner@redhat.com>
Date: Wed, 9 Oct 2019 11:58:30 +0200
Subject: [PATCH] ansible_freeipa_module: New functions module_params_get and
 _afm_convert

The module_params_get function can and should be used as a replacement of
ansible_module.params.get. For Python2 it is needed to convert parameters
to unicode. Otherwise there will be an error in the FreeIPA API command.

The private function _afm_convert has been added to do the conversion
recursively.
---
 plugins/module_utils/ansible_freeipa_module.py | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/plugins/module_utils/ansible_freeipa_module.py b/plugins/module_utils/ansible_freeipa_module.py
index e477f50c..e336a061 100644
--- a/plugins/module_utils/ansible_freeipa_module.py
+++ b/plugins/module_utils/ansible_freeipa_module.py
@@ -190,3 +190,21 @@ def compare_args_ipa(module, args, ipa):
                 return False
 
     return True
+
+
+def _afm_convert(value):
+    if value is not None:
+        if isinstance(value, list):
+            return [_afm_convert(x) for x in value]
+        elif isinstance(value, dict):
+            return {_afm_convert(k): _afm_convert(v) for k, v in value.items()}
+        elif isinstance(value, str):
+            return to_text(value)
+        else:
+            return value
+    else:
+        return value
+
+
+def module_params_get(module, name):
+    return _afm_convert(module.params.get(name))
-- 
GitLab