1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3# 4# Copyright (c) 2018, Yanis Guenane <yanis+ansible@guenane.org> 5# Copyright (c) 2019, René Moser <mail@renemoser.net> 6# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 7 8from __future__ import (absolute_import, division, print_function) 9__metaclass__ = type 10 11ANSIBLE_METADATA = {'metadata_version': '1.1', 12 'status': ['preview'], 13 'supported_by': 'community'} 14 15DOCUMENTATION = r''' 16--- 17module: vultr_user_info 18short_description: Get information about the Vultr user available. 19description: 20 - Get infos about users available in Vultr. 21version_added: "2.9" 22author: 23 - "Yanis Guenane (@Spredzy)" 24 - "René Moser (@resmo)" 25extends_documentation_fragment: vultr 26''' 27 28EXAMPLES = r''' 29- name: Get Vultr user infos 30 vultr_user_info: 31 register: result 32 33- name: Print the infos 34 debug: 35 var: result.vultr_user_info 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_info: 72 description: Response from Vultr API as list 73 returned: available 74 type: complex 75 contains: 76 id: 77 description: ID of the user. 78 returned: success 79 type: str 80 sample: 5904bc6ed9234 81 api_key: 82 description: API key of the user. 83 returned: only after resource was created 84 type: str 85 sample: 567E6K567E6K567E6K567E6K567E6K 86 name: 87 description: Name of the user. 88 returned: success 89 type: str 90 sample: john 91 email: 92 description: Email of the user. 93 returned: success 94 type: str 95 sample: "john@exmaple.com" 96 api_enabled: 97 description: Whether the API is enabled or not. 98 returned: success 99 type: bool 100 sample: true 101 acls: 102 description: List of ACLs of the user. 103 returned: success 104 type: list 105 sample: [ manage_users, support, upgrade ] 106''' 107 108from ansible.module_utils.basic import AnsibleModule 109from ansible.module_utils.vultr import ( 110 Vultr, 111 vultr_argument_spec, 112) 113 114 115class AnsibleVultrUserInfo(Vultr): 116 117 def __init__(self, module): 118 super(AnsibleVultrUserInfo, self).__init__(module, "vultr_user_info") 119 120 self.returns = { 121 "USERID": dict(key='id'), 122 "acls": dict(), 123 "api_enabled": dict(), 124 "email": dict(), 125 "name": dict() 126 } 127 128 def get_regions(self): 129 return self.api_query(path="/v1/user/list") 130 131 132def main(): 133 argument_spec = vultr_argument_spec() 134 135 module = AnsibleModule( 136 argument_spec=argument_spec, 137 supports_check_mode=True, 138 ) 139 140 user_info = AnsibleVultrUserInfo(module) 141 result = user_info.get_result(user_info.get_regions()) 142 module.exit_json(**result) 143 144 145if __name__ == '__main__': 146 main() 147