mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-07-25 00:44:42 +00:00
Merge pull request #1428 from t-woerner/ipauser_query_fix
ipauser: Fix query state error handling and per-field conversion errors
This commit is contained in:
@@ -814,8 +814,8 @@ def user_show(module, name):
|
|||||||
|
|
||||||
def query_convert_result(module, res):
|
def query_convert_result(module, res):
|
||||||
_res = {}
|
_res = {}
|
||||||
try:
|
for key in res:
|
||||||
for key in res:
|
try:
|
||||||
if key in ["manager", "krbprincipalname", "ipacertmapdata"]:
|
if key in ["manager", "krbprincipalname", "ipacertmapdata"]:
|
||||||
_res[key] = [to_text(x) for x in (res.get(key) or [])]
|
_res[key] = [to_text(x) for x in (res.get(key) or [])]
|
||||||
elif key == "usercertificate":
|
elif key == "usercertificate":
|
||||||
@@ -834,10 +834,10 @@ def query_convert_result(module, res):
|
|||||||
_res[key] = int(res[key])
|
_res[key] = int(res[key])
|
||||||
else:
|
else:
|
||||||
_res[key] = to_text(res[key])
|
_res[key] = to_text(res[key])
|
||||||
except (TypeError, ValueError) as e:
|
except (TypeError, ValueError) as e:
|
||||||
module.fail_json(
|
module.fail_json(
|
||||||
msg="Failed to convert query result for '%s': %s"
|
msg="Failed to convert query result for '%s': %s"
|
||||||
% (key, str(e)))
|
% (key, str(e)))
|
||||||
return _res
|
return _res
|
||||||
|
|
||||||
|
|
||||||
@@ -884,6 +884,9 @@ def check_parameters(module, state, action, preserve, user_params):
|
|||||||
invalid.extend(
|
invalid.extend(
|
||||||
["principal", "manager", "certificate", "certmapdata"])
|
["principal", "manager", "certificate", "certmapdata"])
|
||||||
|
|
||||||
|
if state == "query":
|
||||||
|
module.fail_json(
|
||||||
|
msg="check_parameters can not be used with action query.")
|
||||||
if state == "query":
|
if state == "query":
|
||||||
invalid.append("users")
|
invalid.append("users")
|
||||||
|
|
||||||
@@ -1106,7 +1109,7 @@ PARAM_MAPPING = {
|
|||||||
"password": {"api_name": "userpassword"},
|
"password": {"api_name": "userpassword"},
|
||||||
"random": {"query": False},
|
"random": {"query": False},
|
||||||
"street": {},
|
"street": {},
|
||||||
"rename": {"gen_args": False},
|
"rename": {"gen_args": False, "query": False},
|
||||||
"noprivate": {"query": False},
|
"noprivate": {"query": False},
|
||||||
"nomembers": {"api_name": "no_members", "query": False},
|
"nomembers": {"api_name": "no_members", "query": False},
|
||||||
"idp": {"api_name": "ipaidpconfiglink"},
|
"idp": {"api_name": "ipaidpconfiglink"},
|
||||||
@@ -1308,9 +1311,14 @@ def main():
|
|||||||
if (names is None or len(names) < 1) and \
|
if (names is None or len(names) < 1) and \
|
||||||
(users is None or len(users) < 1):
|
(users is None or len(users) < 1):
|
||||||
ansible_module.fail_json(msg="One of name and users is required")
|
ansible_module.fail_json(msg="One of name and users is required")
|
||||||
elif users is not None:
|
else:
|
||||||
ansible_module.fail_json(
|
if action == "member":
|
||||||
msg="users can not be used with state=query, use name instead")
|
ansible_module.fail_json(
|
||||||
|
msg="Query is not possible with action=member")
|
||||||
|
if users is not None:
|
||||||
|
ansible_module.fail_json(
|
||||||
|
msg="users can not be used with state=query, "
|
||||||
|
"use name instead")
|
||||||
|
|
||||||
if state in ["present", "renamed"]:
|
if state in ["present", "renamed"]:
|
||||||
if names is not None and len(names) != 1:
|
if names is not None and len(names) != 1:
|
||||||
|
|||||||
Reference in New Issue
Block a user