Skip to content
Snippets Groups Projects
Unverified Commit c1827807 authored by Rafael Guterres Jeffman's avatar Rafael Guterres Jeffman Committed by GitHub
Browse files

Merge pull request #957 from t-woerner/fix_user_docs_for_ansible_test

ipauser: Fix documentation sections and agument spec
parents 5c1c4d83 58c936a1
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# Authors: # Authors:
# Thomas Woerner <twoerner@redhat.com> # Thomas Woerner <twoerner@redhat.com>
# #
# Copyright (C) 2019 Red Hat # Copyright (C) 2019-2022 Red Hat
# see file 'COPYING' for use and warranty information # see file 'COPYING' for use and warranty information
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
...@@ -39,43 +39,61 @@ extends_documentation_fragment: ...@@ -39,43 +39,61 @@ extends_documentation_fragment:
options: options:
name: name:
description: The list of users (internally uid). description: The list of users (internally uid).
type: list
elements: str
required: false required: false
aliases: ["login"]
users: users:
description: The list of user dicts (internally uid). description: The list of user dicts (internally uid).
options: type: list
elements: dict
suboptions:
name: name:
description: The user (internally uid). description: The user (internally uid).
type: str
required: true required: true
aliases: ["login"]
first: first:
description: The first name. Required if user does not exist. description: The first name. Required if user does not exist.
type: str
required: false required: false
aliases: ["givenname"] aliases: ["givenname"]
last: last:
description: The last name. Required if user doesnot exst. description: The last name. Required if user doesnot exst.
type: str
required: false required: false
aliases: ["sn"] aliases: ["sn"]
fullname: fullname:
description: The full name description: The full name
type: str
required: false required: false
aliases: ["cn"] aliases: ["cn"]
displayname: displayname:
description: The display name description: The display name
type: str
required: false required: false
initials: initials:
description: Initials description: Initials
type: str
required: false required: false
homedir: homedir:
description: The home directory description: The home directory
type: str
required: false required: false
shell: shell:
description: The login shell description: The login shell
type: str
required: false required: false
aliases: ["loginshell"] aliases: ["loginshell"]
email: email:
description: List of email addresses description: List of email addresses
type: list
elements: str
required: false required: false
principal: principal:
description: The kerberos principal description: The kerberos principal
type: list
elements: str
required: false required: false
aliases: ["principalname", "krbprincipalname"] aliases: ["principalname", "krbprincipalname"]
principalexpiration: principalexpiration:
...@@ -84,6 +102,7 @@ options: ...@@ -84,6 +102,7 @@ options:
(possible formats: YYYYMMddHHmmssZ, YYYY-MM-ddTHH:mm:ssZ, (possible formats: YYYYMMddHHmmssZ, YYYY-MM-ddTHH:mm:ssZ,
YYYY-MM-ddTHH:mmZ, YYYY-MM-ddZ, YYYY-MM-dd HH:mm:ssZ, YYYY-MM-ddTHH:mmZ, YYYY-MM-ddZ, YYYY-MM-dd HH:mm:ssZ,
YYYY-MM-dd HH:mmZ) The trailing 'Z' can be skipped. YYYY-MM-dd HH:mmZ) The trailing 'Z' can be skipped.
type: str
required: false required: false
aliases: ["krbprincipalexpiration"] aliases: ["krbprincipalexpiration"]
passwordexpiration: passwordexpiration:
...@@ -93,10 +112,12 @@ options: ...@@ -93,10 +112,12 @@ options:
YYYY-MM-ddTHH:mmZ, YYYY-MM-ddZ, YYYY-MM-dd HH:mm:ssZ, YYYY-MM-ddTHH:mmZ, YYYY-MM-ddZ, YYYY-MM-dd HH:mm:ssZ,
YYYY-MM-dd HH:mmZ) The trailing 'Z' can be skipped. YYYY-MM-dd HH:mmZ) The trailing 'Z' can be skipped.
Only usable with IPA versions 4.7 and up. Only usable with IPA versions 4.7 and up.
type: str
required: false required: false
aliases: ["krbpasswordexpiration"] aliases: ["krbpasswordexpiration"]
password: password:
description: The user password description: The user password
type: str
required: false required: false
random: random:
description: Generate a random user password description: Generate a random user password
...@@ -104,57 +125,81 @@ options: ...@@ -104,57 +125,81 @@ options:
type: bool type: bool
uid: uid:
description: The UID description: The UID
type: int
required: false required: false
aliases: ["uidnumber"] aliases: ["uidnumber"]
gid: gid:
description: The GID description: The GID
type: int
required: false required: false
aliases: ["gidnumber"] aliases: ["gidnumber"]
city: city:
description: City description: City
type: str
required: false required: false
userstate: userstate:
description: State/Province description: State/Province
type: str
required: false required: false
aliases: ["st"] aliases: ["st"]
postalcode: postalcode:
description: Postalcode/ZIP description: Postalcode/ZIP
type: str
required: false required: false
aliases: ["zip"] aliases: ["zip"]
phone: phone:
description: List of telephone numbers description: List of telephone numbers
type: list
elements: str
required: false required: false
aliases: ["telephonenumber"] aliases: ["telephonenumber"]
mobile: mobile:
description: List of mobile telephone numbers description: List of mobile telephone numbers
type: list
elements: str
required: false required: false
pager: pager:
description: List of pager numbers description: List of pager numbers
type: list
elements: str
required: false required: false
fax: fax:
description: List of fax numbers description: List of fax numbers
type: list
elements: str
required: false required: false
aliases: ["facsimiletelephonenumber"] aliases: ["facsimiletelephonenumber"]
orgunit: orgunit:
description: Org. Unit description: Org. Unit
type: str
required: false required: false
aliases: ["ou"]
title: title:
description: The job title description: The job title
type: str
required: false required: false
manager: manager:
description: List of managers description: List of managers
type: list
elements: str
required: false required: false
carlicense: carlicense:
description: List of car licenses description: List of car licenses
type: list
elements: str
required: false required: false
sshpubkey: sshpubkey:
description: List of SSH public keys description: List of SSH public keys
required: false required: false
type: list
elements: str
aliases: ["ipasshpubkey"] aliases: ["ipasshpubkey"]
userauthtype: userauthtype:
description: description:
List of supported user authentication types List of supported user authentication types
Use empty string to reset userauthtype to the initial value. Use empty string to reset userauthtype to the initial value.
type: list
elements: str
choices: ['password', 'radius', 'otp', ''] choices: ['password', 'radius', 'otp', '']
required: false required: false
aliases: ["ipauserauthtype"] aliases: ["ipauserauthtype"]
...@@ -162,44 +207,65 @@ options: ...@@ -162,44 +207,65 @@ options:
description: description:
- User category - User category
- (semantics placed on this attribute are for local interpretation) - (semantics placed on this attribute are for local interpretation)
type: list
elements: str
required: false required: false
aliases: ["class"]
radius: radius:
description: RADIUS proxy configuration description: RADIUS proxy configuration
type: str
required: false required: false
aliases: ["ipatokenradiusconfiglink"]
radiususer: radiususer:
description: RADIUS proxy username description: RADIUS proxy username
type: str
required: false required: false
aliases: ["radiususername", "ipatokenradiususername"]
departmentnumber: departmentnumber:
description: Department Number description: Department Number
type: list
elements: str
required: false required: false
employeenumber: employeenumber:
description: Employee Number description: Employee Number
type: str
required: false required: false
employeetype: employeetype:
description: Employee Type description: Employee Type
type: str
required: false required: false
preferredlanguage: preferredlanguage:
description: Preferred Language description: Preferred Language
type: str
required: false required: false
certificate: certificate:
description: List of base-64 encoded user certificates description: List of base-64 encoded user certificates
type: list
elements: str
required: false required: false
aliases: ["usercertificate"]
certmapdata: certmapdata:
description: description:
- List of certificate mappings - List of certificate mappings
- Only usable with IPA versions 4.5 and up. - Only usable with IPA versions 4.5 and up.
options: type: list
elements: dict
suboptions:
certificate: certificate:
description: Base-64 encoded user certificate description: Base-64 encoded user certificate
type: str
required: false required: false
issuer: issuer:
description: Issuer of the certificate description: Issuer of the certificate
type: str
required: false required: false
subject: subject:
description: Subject of the certificate description: Subject of the certificate
type: str
required: false required: false
data: data:
description: Certmap data description: Certmap data
type: str
required: false required: false
required: false required: false
noprivate: noprivate:
...@@ -213,34 +279,45 @@ options: ...@@ -213,34 +279,45 @@ options:
required: false required: false
first: first:
description: The first name. Required if user does not exist. description: The first name. Required if user does not exist.
type: str
required: false required: false
aliases: ["givenname"] aliases: ["givenname"]
last: last:
description: The last name. Required if user does not exist. description: The last name. Required if user doesnot exst.
type: str
required: false required: false
aliases: ["sn"] aliases: ["sn"]
fullname: fullname:
description: The full name description: The full name
type: str
required: false required: false
aliases: ["cn"] aliases: ["cn"]
displayname: displayname:
description: The display name description: The display name
type: str
required: false required: false
initials: initials:
description: Initials description: Initials
type: str
required: false required: false
homedir: homedir:
description: The home directory description: The home directory
type: str
required: false required: false
shell: shell:
description: The login shell description: The login shell
type: str
required: false required: false
aliases: ["loginshell"] aliases: ["loginshell"]
email: email:
description: List of email addresses description: List of email addresses
type: list
elements: str
required: false required: false
principal: principal:
description: The kerberos principal description: The kerberos principal
type: list
elements: str
required: false required: false
aliases: ["principalname", "krbprincipalname"] aliases: ["principalname", "krbprincipalname"]
principalexpiration: principalexpiration:
...@@ -249,6 +326,7 @@ options: ...@@ -249,6 +326,7 @@ options:
(possible formats: YYYYMMddHHmmssZ, YYYY-MM-ddTHH:mm:ssZ, (possible formats: YYYYMMddHHmmssZ, YYYY-MM-ddTHH:mm:ssZ,
YYYY-MM-ddTHH:mmZ, YYYY-MM-ddZ, YYYY-MM-dd HH:mm:ssZ, YYYY-MM-ddTHH:mmZ, YYYY-MM-ddZ, YYYY-MM-dd HH:mm:ssZ,
YYYY-MM-dd HH:mmZ) The trailing 'Z' can be skipped. YYYY-MM-dd HH:mmZ) The trailing 'Z' can be skipped.
type: str
required: false required: false
aliases: ["krbprincipalexpiration"] aliases: ["krbprincipalexpiration"]
passwordexpiration: passwordexpiration:
...@@ -258,10 +336,12 @@ options: ...@@ -258,10 +336,12 @@ options:
YYYY-MM-ddTHH:mmZ, YYYY-MM-ddZ, YYYY-MM-dd HH:mm:ssZ, YYYY-MM-ddTHH:mmZ, YYYY-MM-ddZ, YYYY-MM-dd HH:mm:ssZ,
YYYY-MM-dd HH:mmZ) The trailing 'Z' can be skipped. YYYY-MM-dd HH:mmZ) The trailing 'Z' can be skipped.
Only usable with IPA versions 4.7 and up. Only usable with IPA versions 4.7 and up.
type: str
required: false required: false
aliases: ["krbpasswordexpiration"] aliases: ["krbpasswordexpiration"]
password: password:
description: The user password description: The user password
type: str
required: false required: false
random: random:
description: Generate a random user password description: Generate a random user password
...@@ -269,57 +349,81 @@ options: ...@@ -269,57 +349,81 @@ options:
type: bool type: bool
uid: uid:
description: The UID description: The UID
type: int
required: false required: false
aliases: ["uidnumber"] aliases: ["uidnumber"]
gid: gid:
description: The GID description: The GID
type: int
required: false required: false
aliases: ["gidnumber"] aliases: ["gidnumber"]
city: city:
description: City description: City
type: str
required: false required: false
userstate: userstate:
description: State/Province description: State/Province
type: str
required: false required: false
aliases: ["st"] aliases: ["st"]
postalcode: postalcode:
description: ZIP description: Postalcode/ZIP
type: str
required: false required: false
aliases: ["zip"] aliases: ["zip"]
phone: phone:
description: List of telephone numbers description: List of telephone numbers
type: list
elements: str
required: false required: false
aliases: ["telephonenumber"] aliases: ["telephonenumber"]
mobile: mobile:
description: List of mobile telephone numbers description: List of mobile telephone numbers
type: list
elements: str
required: false required: false
pager: pager:
description: List of pager numbers description: List of pager numbers
type: list
elements: str
required: false required: false
fax: fax:
description: List of fax numbers description: List of fax numbers
type: list
elements: str
required: false required: false
aliases: ["facsimiletelephonenumber"] aliases: ["facsimiletelephonenumber"]
orgunit: orgunit:
description: Org. Unit description: Org. Unit
type: str
required: false required: false
aliases: ["ou"]
title: title:
description: The job title description: The job title
type: str
required: false required: false
manager: manager:
description: List of managers description: List of managers
type: list
elements: str
required: false required: false
carlicense: carlicense:
description: List of car licenses description: List of car licenses
type: list
elements: str
required: false required: false
sshpubkey: sshpubkey:
description: List of SSH public keys description: List of SSH public keys
required: false required: false
type: list
elements: str
aliases: ["ipasshpubkey"] aliases: ["ipasshpubkey"]
userauthtype: userauthtype:
description: description:
List of supported user authentication types List of supported user authentication types
Use empty string to reset userauthtype to the initial value. Use empty string to reset userauthtype to the initial value.
type: list
elements: str
choices: ['password', 'radius', 'otp', ''] choices: ['password', 'radius', 'otp', '']
required: false required: false
aliases: ["ipauserauthtype"] aliases: ["ipauserauthtype"]
...@@ -327,44 +431,65 @@ options: ...@@ -327,44 +431,65 @@ options:
description: description:
- User category - User category
- (semantics placed on this attribute are for local interpretation) - (semantics placed on this attribute are for local interpretation)
type: list
elements: str
required: false required: false
aliases: ["class"]
radius: radius:
description: RADIUS proxy configuration description: RADIUS proxy configuration
type: str
required: false required: false
aliases: ["ipatokenradiusconfiglink"]
radiususer: radiususer:
description: RADIUS proxy username description: RADIUS proxy username
type: str
required: false required: false
aliases: ["radiususername", "ipatokenradiususername"]
departmentnumber: departmentnumber:
description: Department Number description: Department Number
type: list
elements: str
required: false required: false
employeenumber: employeenumber:
description: Employee Number description: Employee Number
type: str
required: false required: false
employeetype: employeetype:
description: Employee Type description: Employee Type
type: str
required: false required: false
preferredlanguage: preferredlanguage:
description: Preferred Language description: Preferred Language
type: str
required: false required: false
certificate: certificate:
description: List of base-64 encoded user certificates description: List of base-64 encoded user certificates
type: list
elements: str
required: false required: false
aliases: ["usercertificate"]
certmapdata: certmapdata:
description: description:
- List of certificate mappings - List of certificate mappings
- Only usable with IPA versions 4.5 and up. - Only usable with IPA versions 4.5 and up.
options: type: list
elements: dict
suboptions:
certificate: certificate:
description: Base-64 encoded user certificate description: Base-64 encoded user certificate
type: str
required: false required: false
issuer: issuer:
description: Issuer of the certificate description: Issuer of the certificate
type: str
required: false required: false
subject: subject:
description: Subject of the certificate description: Subject of the certificate
type: str
required: false required: false
data: data:
description: Certmap data description: Certmap data
type: str
required: false required: false
required: false required: false
noprivate: noprivate:
...@@ -378,24 +503,27 @@ options: ...@@ -378,24 +503,27 @@ options:
preserve: preserve:
description: Delete a user, keeping the entry available for future use description: Delete a user, keeping the entry available for future use
required: false required: false
type: bool
update_password: update_password:
description: description:
Set password for a user in present state only on creation or always Set password for a user in present state only on creation or always
default: "always" type: str
choices: ["always", "on_create"] choices: ["always", "on_create"]
required: false required: false
action: action:
description: Work on user or member level description: Work on user or member level
type: str
default: "user" default: "user"
choices: ["member", "user"] choices: ["member", "user"]
state: state:
description: State to ensure description: State to ensure
type: str
default: present default: present
choices: ["present", "absent", choices: ["present", "absent",
"enabled", "disabled", "enabled", "disabled",
"unlocked", "undeleted"] "unlocked", "undeleted"]
author: author:
- Thomas Woerner - Thomas Woerner (@t-woerner)
""" """
EXAMPLES = """ EXAMPLES = """
...@@ -457,17 +585,19 @@ user: ...@@ -457,17 +585,19 @@ user:
description: User dict with random password description: User dict with random password
returned: If random is yes and user did not exist or update_password is yes returned: If random is yes and user did not exist or update_password is yes
type: dict type: dict
options: contains:
randompassword: randompassword:
description: The generated random password 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
name: name:
description: The user name of the user that got a new random password 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
type: dict type: dict
options: contains:
randompassword: randompassword:
description: The generated random password description: The generated random password
type: str
returned: always returned: always
""" """
...@@ -752,16 +882,16 @@ def main(): ...@@ -752,16 +882,16 @@ def main():
initials=dict(type="str", default=None), initials=dict(type="str", default=None),
homedir=dict(type="str", default=None), homedir=dict(type="str", default=None),
shell=dict(type="str", aliases=["loginshell"], default=None), shell=dict(type="str", aliases=["loginshell"], default=None),
email=dict(type="list", default=None), email=dict(type="list", elements="str", default=None),
principal=dict(type="list", aliases=["principalname", principal=dict(type="list", elements="str",
"krbprincipalname"], aliases=["principalname", "krbprincipalname"],
default=None), default=None),
principalexpiration=dict(type="str", principalexpiration=dict(type="str",
aliases=["krbprincipalexpiration"], aliases=["krbprincipalexpiration"],
default=None), default=None),
passwordexpiration=dict(type="str", passwordexpiration=dict(type="str",
aliases=["krbpasswordexpiration"], aliases=["krbpasswordexpiration"],
default=None), default=None, no_log=False),
password=dict(type="str", default=None, no_log=True), password=dict(type="str", default=None, no_log=True),
random=dict(type='bool', default=None), random=dict(type='bool', default=None),
uid=dict(type="int", aliases=["uidnumber"], default=None), uid=dict(type="int", aliases=["uidnumber"], default=None),
...@@ -769,33 +899,34 @@ def main(): ...@@ -769,33 +899,34 @@ def main():
city=dict(type="str", default=None), city=dict(type="str", default=None),
userstate=dict(type="str", aliases=["st"], default=None), userstate=dict(type="str", aliases=["st"], default=None),
postalcode=dict(type="str", aliases=["zip"], default=None), postalcode=dict(type="str", aliases=["zip"], default=None),
phone=dict(type="list", aliases=["telephonenumber"], default=None), phone=dict(type="list", elements="str", aliases=["telephonenumber"],
mobile=dict(type="list", default=None),
pager=dict(type="list", default=None),
fax=dict(type="list", aliases=["facsimiletelephonenumber"],
default=None), default=None),
mobile=dict(type="list", elements="str", default=None),
pager=dict(type="list", elements="str", default=None),
fax=dict(type="list", elements="str",
aliases=["facsimiletelephonenumber"], default=None),
orgunit=dict(type="str", aliases=["ou"], default=None), orgunit=dict(type="str", aliases=["ou"], default=None),
title=dict(type="str", default=None), title=dict(type="str", default=None),
manager=dict(type="list", default=None), manager=dict(type="list", elements="str", default=None),
carlicense=dict(type="list", default=None), carlicense=dict(type="list", elements="str", default=None),
sshpubkey=dict(type="list", aliases=["ipasshpubkey"], sshpubkey=dict(type="list", elements="str", aliases=["ipasshpubkey"],
default=None), default=None),
userauthtype=dict(type='list', aliases=["ipauserauthtype"], userauthtype=dict(type='list', elements="str",
default=None, aliases=["ipauserauthtype"], default=None,
choices=['password', 'radius', 'otp', '']), choices=['password', 'radius', 'otp', '']),
userclass=dict(type="list", aliases=["class"], userclass=dict(type="list", elements="str", aliases=["class"],
default=None), default=None),
radius=dict(type="str", aliases=["ipatokenradiusconfiglink"], radius=dict(type="str", aliases=["ipatokenradiusconfiglink"],
default=None), default=None),
radiususer=dict(type="str", aliases=["radiususername", radiususer=dict(type="str", aliases=["radiususername",
"ipatokenradiususername"], "ipatokenradiususername"],
default=None), default=None),
departmentnumber=dict(type="list", default=None), departmentnumber=dict(type="list", elements="str", default=None),
employeenumber=dict(type="str", default=None), employeenumber=dict(type="str", default=None),
employeetype=dict(type="str", default=None), employeetype=dict(type="str", default=None),
preferredlanguage=dict(type="str", default=None), preferredlanguage=dict(type="str", default=None),
certificate=dict(type="list", aliases=["usercertificate"], certificate=dict(type="list", elements="str",
default=None), aliases=["usercertificate"], default=None),
certmapdata=dict(type="list", default=None, certmapdata=dict(type="list", default=None,
options=dict( options=dict(
# Here certificate is a simple string # Here certificate is a simple string
...@@ -812,14 +943,14 @@ def main(): ...@@ -812,14 +943,14 @@ def main():
ansible_module = IPAAnsibleModule( ansible_module = IPAAnsibleModule(
argument_spec=dict( argument_spec=dict(
# general # general
name=dict(type="list", aliases=["login"], default=None, name=dict(type="list", elements="str", aliases=["login"],
required=False), default=None, required=False),
users=dict(type="list", users=dict(type="list",
aliases=["login"],
default=None, default=None,
options=dict( options=dict(
# Here name is a simple string # Here name is a simple string
name=dict(type="str", required=True), name=dict(type="str", required=True,
aliases=["login"]),
# Add user specific parameters # Add user specific parameters
**user_spec **user_spec
), ),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment