diff --git a/README-user.md b/README-user.md index ec0f6cfda9344c93e846a5e548451e12f80f8996..291147f1b8820b2f29e95b5c31a6a0b86116747a 100644 --- a/README-user.md +++ b/README-user.md @@ -434,8 +434,8 @@ There are only return values if one or more random passwords have been generated Variable | Description | Returned When -------- | ----------- | ------------- `user` | User dict with random password. (dict) <br>Options: | If random is yes and user did not exist or update_password is yes - | `randompassword` - The generated random password | If only one user is handled by the module - | `name` - The user name of the user that got a new random password. (dict) <br> Options: <br> `randompassword` - The generated random password | If several users are handled by the module + | `randompassword` - The generated random password | If only one user is handled by the module without using the `users` parameter. + | `name` - The user name of the user that got a new random password. (dict) <br> Options: <br> `randompassword` - The generated random password | If several users are handled by the module with the `users` parameter. Authors diff --git a/plugins/modules/ipauser.py b/plugins/modules/ipauser.py index 2d928f8eb692bcd1c535dc5fe1fc4164aecb9b14..acf81a326821b6eb0294db32d809043831711cc2 100644 --- a/plugins/modules/ipauser.py +++ b/plugins/modules/ipauser.py @@ -589,10 +589,12 @@ user: randompassword: description: The generated random password type: str - returned: If only one user is handled by the module + returned: | + If only one user is handled by the module without using users parameter name: description: The user name of the user that got a new random password - returned: If several users are handled by the module + returned: | + If several users are handled by the module with the users parameter type: dict contains: randompassword: @@ -834,11 +836,11 @@ def gen_certmapdata_args(certmapdata): # pylint: disable=unused-argument def result_handler(module, result, command, name, args, errors, exit_args, - one_name): + single_user): if "random" in args and command in ["user_add", "user_mod"] \ and "randompassword" in result["result"]: - if one_name: + if single_user: exit_args["randompassword"] = \ result["result"]["randompassword"] else: @@ -861,7 +863,7 @@ def result_handler(module, result, command, name, args, errors, exit_args, # pylint: disable=unused-argument -def exception_handler(module, ex, errors, exit_args, one_name): +def exception_handler(module, ex, errors, exit_args, single_user): msg = str(ex) if "already contains" in msg \ or "does not contain" in msg: @@ -1511,7 +1513,7 @@ def main(): changed = ansible_module.execute_ipa_commands( commands, result_handler, exception_handler, - exit_args=exit_args, one_name=len(names) == 1) + exit_args=exit_args, single_user=users is None) # Done ansible_module.exit_json(changed=changed, user=exit_args) diff --git a/tests/user/test_user_random.yml b/tests/user/test_user_random.yml index 205f057d146d5d76bf0637ff4b79f38bb8e71b2b..b2b0d91a017a06df8fd9ca39b7dd7356cb40f1d4 100644 --- a/tests/user/test_user_random.yml +++ b/tests/user/test_user_random.yml @@ -36,6 +36,27 @@ - user1 state: absent + - name: User user1 is present with random password using users parameter + ipauser: + ipaadmin_password: SomeADMINpassword + users: + - name: user1 + first: first1 + last: last1 + random: yes + update_password: on_create + register: ipauser + failed_when: not ipauser.changed or + ipauser.user.user1.randompassword is not defined or + ipauser.failed + + - name: User user1 absent + ipauser: + ipaadmin_password: SomeADMINpassword + name: + - user1 + state: absent + - name: Users user1 and user2 present with random password ipauser: ipaadmin_password: SomeADMINpassword