1#!/usr/bin/python
2#
3# (c) 2018, Yanis Guenane <yanis+ansible@guenane.org>
4# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
5
6from __future__ import (absolute_import, division, print_function)
7__metaclass__ = type
8
9ANSIBLE_METADATA = {'metadata_version': '1.1',
10                    'status': ['deprecated'],
11                    'supported_by': 'community'}
12
13DOCUMENTATION = r'''
14---
15module: vultr_user_facts
16short_description: Gather facts about the Vultr user available.
17description:
18  - Gather facts about users available in Vultr.
19version_added: "2.7"
20author: "Yanis Guenane (@Spredzy)"
21deprecated:
22  removed_in: "2.12"
23  why: Transformed into an info module.
24  alternative: Use M(vultr_user_info) instead.
25extends_documentation_fragment: vultr
26'''
27
28EXAMPLES = r'''
29- name: Gather Vultr user facts
30  local_action:
31    module: vultr_user_facts
32
33- name: Print the gathered facts
34  debug:
35    var: ansible_facts.vultr_user_facts
36'''
37
38RETURN = r'''
39---
40vultr_api:
41  description: Response from Vultr API with a few additions/modification
42  returned: success
43  type: complex
44  contains:
45    api_account:
46      description: Account used in the ini file to select the key
47      returned: success
48      type: str
49      sample: default
50    api_timeout:
51      description: Timeout used for the API requests
52      returned: success
53      type: int
54      sample: 60
55    api_retries:
56      description: Amount of max retries for the API requests
57      returned: success
58      type: int
59      sample: 5
60    api_retry_max_delay:
61      description: Exponential backoff delay in seconds between retries up to this max delay value.
62      returned: success
63      type: int
64      sample: 12
65      version_added: '2.9'
66    api_endpoint:
67      description: Endpoint used for the API requests
68      returned: success
69      type: str
70      sample: "https://api.vultr.com"
71vultr_user_facts:
72  description: Response from Vultr API
73  returned: success
74  type: complex
75  sample:
76    "vultr_user_facts": [
77      {
78        "acls": [],
79        "api_enabled": "yes",
80        "email": "mytestuser@example.com",
81        "id": "a235b4f45e87f",
82        "name": "mytestuser"
83      }
84    ]
85'''
86
87from ansible.module_utils.basic import AnsibleModule
88from ansible.module_utils.vultr import (
89    Vultr,
90    vultr_argument_spec,
91)
92
93
94class AnsibleVultrUserFacts(Vultr):
95
96    def __init__(self, module):
97        super(AnsibleVultrUserFacts, self).__init__(module, "vultr_user_facts")
98
99        self.returns = {
100            "USERID": dict(key='id'),
101            "acls": dict(),
102            "api_enabled": dict(),
103            "email": dict(),
104            "name": dict()
105        }
106
107    def get_regions(self):
108        return self.api_query(path="/v1/user/list")
109
110
111def main():
112    argument_spec = vultr_argument_spec()
113
114    module = AnsibleModule(
115        argument_spec=argument_spec,
116        supports_check_mode=True,
117    )
118
119    user_facts = AnsibleVultrUserFacts(module)
120    result = user_facts.get_result(user_facts.get_regions())
121    ansible_facts = {
122        'vultr_user_facts': result['vultr_user_facts']
123    }
124    module.exit_json(ansible_facts=ansible_facts, **result)
125
126
127if __name__ == '__main__':
128    main()
129