mirror of
https://github.com/ansible/awx.git
synced 2026-03-29 06:45:09 -02:30
AWX Collections for DAB RBAC
Adds new modules for CRUD operations on the following endpoints: - api/v2/role_definitions - api/v2/role_user_assignments - api/v2/role_team_assignments Note: assignment is Create or Delete only Additional changes: - Currently DAB endpoints do not have "type" field on the resource list items. So this modifies the create_or_update_if_needed to allow manually specifying item type. Signed-off-by: Seth Foster <fosterbseth@gmail.com>
This commit is contained in:
committed by
Alan Rominger
parent
389a729b75
commit
3bb559dd09
114
awx_collection/plugins/modules/role_definition.py
Normal file
114
awx_collection/plugins/modules/role_definition.py
Normal file
@@ -0,0 +1,114 @@
|
||||
#!/usr/bin/python
|
||||
# coding: utf-8 -*-
|
||||
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
__metaclass__ = type
|
||||
|
||||
|
||||
ANSIBLE_METADATA = {'metadata_version': '1.1', 'status': ['preview'], 'supported_by': 'community'}
|
||||
|
||||
|
||||
DOCUMENTATION = '''
|
||||
---
|
||||
module: role_definition
|
||||
author: "Seth Foster (@fosterseth)"
|
||||
short_description: Add role definition to Automation Platform Controller
|
||||
description:
|
||||
- Contains a list of permissions and a resource type that can then be assigned to users or teams.
|
||||
options:
|
||||
name:
|
||||
description:
|
||||
- Name of this role definition.
|
||||
required: True
|
||||
type: str
|
||||
permissions:
|
||||
description:
|
||||
- List of permissions to include in the role definition.
|
||||
required: True
|
||||
type: list
|
||||
elements: str
|
||||
content_type:
|
||||
description:
|
||||
- The type of resource this applies to.
|
||||
required: True
|
||||
type: str
|
||||
description:
|
||||
description:
|
||||
- Optional description of this role definition.
|
||||
type: str
|
||||
state:
|
||||
description:
|
||||
- The desired state of the role definition.
|
||||
default: present
|
||||
choices:
|
||||
- present
|
||||
- absent
|
||||
type: str
|
||||
extends_documentation_fragment: awx.awx.auth
|
||||
'''
|
||||
|
||||
|
||||
EXAMPLES = '''
|
||||
- name: Create Role Definition
|
||||
role_definition:
|
||||
name: test_view_jt
|
||||
permissions:
|
||||
- awx.view_jobtemplate
|
||||
- awx.execute_jobtemplate
|
||||
content_type: awx.jobtemplate
|
||||
description: role definition to view and execute jt
|
||||
state: present
|
||||
'''
|
||||
|
||||
from ..module_utils.controller_api import ControllerAPIModule
|
||||
|
||||
|
||||
def main():
|
||||
# Any additional arguments that are not fields of the item can be added here
|
||||
argument_spec = dict(
|
||||
name=dict(required=True, type='str'),
|
||||
permissions=dict(required=True, type='list', elements='str'),
|
||||
content_type=dict(required=True, type='str'),
|
||||
description=dict(required=False, type='str'),
|
||||
state=dict(default='present', choices=['present', 'absent']),
|
||||
)
|
||||
|
||||
module = ControllerAPIModule(argument_spec=argument_spec)
|
||||
|
||||
name = module.params.get('name')
|
||||
permissions = module.params.get('permissions')
|
||||
content_type = module.params.get('content_type')
|
||||
description = module.params.get('description')
|
||||
state = module.params.get('state')
|
||||
if description is None:
|
||||
description = ''
|
||||
|
||||
role_definition = module.get_one('role_definitions', name_or_id=name)
|
||||
|
||||
if state == 'absent':
|
||||
module.delete_if_needed(
|
||||
role_definition,
|
||||
item_type='role_definition',
|
||||
)
|
||||
|
||||
post_kwargs = {
|
||||
'name': name,
|
||||
'permissions': permissions,
|
||||
'content_type': content_type,
|
||||
'description': description
|
||||
}
|
||||
|
||||
if state == 'present':
|
||||
module.create_or_update_if_needed(
|
||||
role_definition,
|
||||
post_kwargs,
|
||||
endpoint='role_definitions',
|
||||
item_type='role_definition',
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user