
    Vhm                         d dl mZmZmZ eZdZdZdZd dl	m
Z
 ddlmZmZ g dZ G d	 d
e      Zd Zedk(  r e        yy)    )absolute_importdivisionprint_functionuG  
---
module: user
short_description: Manages users on Vultr
description:
  - Create, update and remove users.
version_added: "1.0.0"
author: "René Moser (@resmo)"
options:
  name:
    description:
      - Name of the user
    required: true
    type: str
  email:
    description:
      - Email of the user.
      - Required if C(state=present).
    type: str
  password:
    description:
      - Password of the user.
      - Only considered while creating a user or when C(force=true).
    type: str
  force:
    description:
      - Password will only be changed with enforcement.
    default: false
    type: bool
  api_enabled:
    description:
      - Whether the API is enabled or not.
    default: true
    type: bool
  acls:
    description:
      - List of ACLs this users should have.
      - Required if C(state=present).
      - One or more of the choices list, some depend on each other.
    choices:
      - manage_users
      - subscriptions_view
      - subscriptions
      - provisioning
      - billing
      - support
      - abuse
      - dns
      - upgrade
      - objstore
      - loadbalancer
    aliases: [ acl ]
    type: list
    elements: str
  state:
    description:
      - State of the user.
    default: present
    choices: [ present, absent ]
    type: str
extends_documentation_fragment:
  - vultr.cloud.vultr_v2
z
- name: Ensure a user exists
  vultr.cloud.user:
    name: john
    email: john.doe@example.com
    password: s3cr3t
    acls:
    - manage_users
    - subscriptions

- name: Remove a user
  vultr.cloud.user:
    name: john
    state: absent
a^  
---
vultr_api:
  description: Response from Vultr API with a few additions/modification.
  returned: success
  type: dict
  contains:
    api_timeout:
      description: Timeout used for the API requests.
      returned: success
      type: int
      sample: 60
    api_retries:
      description: Amount of max retries for the API requests.
      returned: success
      type: int
      sample: 5
    api_retry_max_delay:
      description: Exponential backoff delay in seconds between retries up to this max delay value.
      returned: success
      type: int
      sample: 12
    api_endpoint:
      description: Endpoint used for the API requests.
      returned: success
      type: str
      sample: "https://api.vultr.com/v2"
vultr_user:
  description: Response from Vultr API.
  returned: success
  type: dict
  contains:
    id:
      description: ID of the user.
      returned: success
      type: str
      sample: 7d726ffe-9be2-4f88-8cda-fa7eba1da2b5
    api_key:
      description: API key of the user.
      returned: only after resource was created
      type: str
      sample: 567E6K567E6K567E6K567E6K567E6K
    name:
      description: Name of the user.
      returned: success
      type: str
      sample: john
    email:
      description: Email of the user.
      returned: success
      type: str
      sample: "john@example.com"
    api_enabled:
      description: Whether the API is enabled or not.
      returned: success
      type: bool
      sample: true
    acls:
      description: List of ACLs of the user.
      returned: success
      type: list
      sample: [manage_users, support, upgrade]
)AnsibleModule   )AnsibleVultrvultr_argument_spec)manage_userssubscriptions_viewsubscriptionsprovisioningbillingsupportabusednsupgradeobjstoreloadbalancerc                   (     e Zd Z fdZ fdZ xZS )AnsibleVultrUserc                 b    | j                   j                  dg       t        t        |          S )Npassword)required_params)modulefail_on_missing_paramssuperr   create)self	__class__s    d/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/vultr/cloud/plugins/modules/user.pyr   zAnsibleVultrUser.create   s+    **J<*H%t355    c                     | j                   j                  j                  d      }|r| j                  j	                  d       t
        t        |   |      S )Nforcer   )resource)r   paramsgetresource_update_param_keysappendr   r   update)r   r$   r#   r   s      r    r)   zAnsibleVultrUser.update   sL     ""&&w/++22:>%t3X3FFr!   )__name__
__module____qualname__r   r)   __classcell__)r   s   @r    r   r      s    6
G Gr!   r   c                     t               } | j                  t        t        dd      t        d      t        dd      t        dd      t        dd      t        d	dt        d
g      t        dddgd                   t	        | ddddgfgd      }t        |dddg dg dd      }|j                  j                  d      dk(  r|j                          y |j                          y )NstrT)typerequired)r0   )r0   no_logboolF)r0   defaultlistacl)r0   elementschoicesaliasespresentabsent)r0   r8   r4   )nameemailr   r#   api_enabledaclsstater@   r=   r?   )argument_specrequired_ifsupports_check_mode
vultr_userz/usersuser)r<   r=   r   r>   r?   )r<   r=   r>   r?   r<   )r   	namespaceresource_pathressource_result_key_singularresource_create_param_keysr'   resource_key_name)
r	   r)   dictACLSr   r   r%   r&   r;   r:   )rA   r   vultrs      r    mainrN      s    ')M540E"uT2FE2&$76E4%QEIx+@)T	

 #i'6!23
 !F &,#W#K E }}!X-r!   __main__N)
__future__r   r   r   r0   __metaclass__DOCUMENTATIONEXAMPLESRETURNansible.module_utils.basicr   module_utils.vultr_v2r   r	   rL   r   rN   r*    r!   r    <module>rX      sa    A @>@ >
@ 5 EG| G#L zF r!   