Compare commits
1 Commits
551d0639cc
...
5e51eaf9f3
Author | SHA1 | Date | |
---|---|---|---|
5e51eaf9f3
|
@ -81,7 +81,7 @@ options:
|
|||||||
If the access control list should be present, absent or exact. When state is exact,
|
If the access control list should be present, absent or exact. When state is exact,
|
||||||
the value of `propagate` is also considered, and if an existing access control rule is found
|
the value of `propagate` is also considered, and if an existing access control rule is found
|
||||||
which only differs in the value of `propagate`, the old rule is removed by the module,
|
which only differs in the value of `propagate`, the old rule is removed by the module,
|
||||||
essentially replacing it.
|
essentially replacing it.
|
||||||
type: str
|
type: str
|
||||||
choices: [present, exact, absent]
|
choices: [present, exact, absent]
|
||||||
default: present
|
default: present
|
||||||
@ -100,7 +100,7 @@ EXAMPLES = r'''
|
|||||||
propagate: true
|
propagate: true
|
||||||
state: present
|
state: present
|
||||||
- name: Configure an LDAP user to use their own VM
|
- name: Configure an LDAP user to use their own VM
|
||||||
finallycoffee.proxmox.acl:
|
finallycoffee.proxmox.realm:
|
||||||
proxmox_instance: https://my.proxmox-node.local:8006
|
proxmox_instance: https://my.proxmox-node.local:8006
|
||||||
promox_api_token_id: root@pam!token
|
promox_api_token_id: root@pam!token
|
||||||
proxmox_api_secret: supersecuretokencontent
|
proxmox_api_secret: supersecuretokencontent
|
||||||
|
@ -1,127 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
# coding: utf-8
|
|
||||||
|
|
||||||
# (c) 2022, Johanna Dorothea Reichmann <transcaffeine@finally.coffee>
|
|
||||||
|
|
||||||
__metaclass__ = type
|
|
||||||
|
|
||||||
import dataclasses
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
|
||||||
|
|
||||||
from ansible_collections.finallycoffee.proxmox.plugins.module_utils.common import *
|
|
||||||
from ansible_collections.finallycoffee.proxmox.plugins.module_utils.proxmox_datacenter_group import *
|
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION = r'''
|
|
||||||
---
|
|
||||||
module: group_info
|
|
||||||
author:
|
|
||||||
- Johanna Dorothea Reichmann (transcaffeine@finally.coffee)
|
|
||||||
requirements:
|
|
||||||
- python >= 3.9
|
|
||||||
short_description: Get all groups of a proxmox
|
|
||||||
description:
|
|
||||||
- "Lists all groups in proxmos"
|
|
||||||
options:
|
|
||||||
proxmox_instance:
|
|
||||||
description: Location of the proxmox API with scheme, domain name/ip and port, e.g. https://localhost:8006
|
|
||||||
type: str
|
|
||||||
required: true
|
|
||||||
proxmox_api_token_id:
|
|
||||||
description: The token ID containing username, realm and token name (format: user@realm!name)
|
|
||||||
type: str
|
|
||||||
required: true
|
|
||||||
proxmox_api_secret:
|
|
||||||
description: The secret
|
|
||||||
type: str
|
|
||||||
required: true
|
|
||||||
proxmox_api_verify_cert:
|
|
||||||
description: If the certificate presented for `proxmox_instance_url` should be verified
|
|
||||||
type: bool
|
|
||||||
required: false
|
|
||||||
default: true
|
|
||||||
group:
|
|
||||||
description: Group to retrieve information about. If left omitted, return all groups
|
|
||||||
type: str
|
|
||||||
required: false
|
|
||||||
'''
|
|
||||||
|
|
||||||
EXAMPLES = r'''
|
|
||||||
- name: Retrieve all groups
|
|
||||||
finallycoffee.proxmox.group_info:
|
|
||||||
proxmox_instance: https://my.proxmox-node.local:8006
|
|
||||||
promox_api_token_id: root@pam!token
|
|
||||||
proxmox_api_secret: supersecuretokencontent
|
|
||||||
- name: Retrieve group information for group developers-realm
|
|
||||||
finallycoffee.proxmox.group_info:
|
|
||||||
proxmox_instance: https://my.proxmox-node.local:8006
|
|
||||||
promox_api_token_id: root@pam!token
|
|
||||||
proxmox_api_secret: supersecuretokencontent
|
|
||||||
group: developers-realm
|
|
||||||
'''
|
|
||||||
|
|
||||||
RETURN = r'''
|
|
||||||
groups:
|
|
||||||
description: The retrieved groups
|
|
||||||
returned: When groups were found (matching the filter)
|
|
||||||
type: list
|
|
||||||
elements: dict[str, list[str]]
|
|
||||||
group:
|
|
||||||
description: The groups's name (`.name`) and members (`.members`)
|
|
||||||
returned: When a single group was queried
|
|
||||||
type: dict[str, list[str]]
|
|
||||||
|
|
||||||
'''
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
_ = dict
|
|
||||||
module = AnsibleModule(
|
|
||||||
argument_spec=_(
|
|
||||||
proxmox_instance=_(required=True, type='str'),
|
|
||||||
proxmox_api_token_id=_(required=True, type='str'),
|
|
||||||
proxmox_api_secret=_(type='str', required=True, no_log=True),
|
|
||||||
proxmox_api_verify_cert=_(type='bool', required=False, default=True),
|
|
||||||
group=_(required=False, type='str'),
|
|
||||||
),
|
|
||||||
supports_check_mode=True
|
|
||||||
)
|
|
||||||
|
|
||||||
result = _(
|
|
||||||
changed=False,
|
|
||||||
diff={},
|
|
||||||
message=''
|
|
||||||
)
|
|
||||||
|
|
||||||
groups = []
|
|
||||||
try:
|
|
||||||
groups = get_groups(ProxmoxAuthInfo(
|
|
||||||
module.params['proxmox_instance'],
|
|
||||||
module.params['proxmox_api_token_id'],
|
|
||||||
module.params['proxmox_api_secret'],
|
|
||||||
module.params['proxmox_api_verify_cert'],
|
|
||||||
))
|
|
||||||
except IOError as owie:
|
|
||||||
result['msg'] = owie
|
|
||||||
module.exit_json(**result)
|
|
||||||
|
|
||||||
result['groups'] = list(
|
|
||||||
map(lambda r: dataclasses.asdict(r),
|
|
||||||
filter(lambda r: r.name == module.params['group']
|
|
||||||
if module.params['group'] is not None
|
|
||||||
else True,
|
|
||||||
groups)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
if module.params['group'] is not None:
|
|
||||||
result['group'] = dataclasses.asdict(
|
|
||||||
list(filter(lambda r: r.name == module.params['group'], groups))[0]
|
|
||||||
)
|
|
||||||
|
|
||||||
module.exit_json(**result)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
Reference in New Issue
Block a user