B
    `*                 @   sp   d dl mZmZmZ eZddgddZdZdZdZ	d d	l
mZ d
dlmZmZmZmZ dd Zedkrle  dS )    )absolute_importdivisionprint_functionz1.1ZstableinterfaceZ	certified)metadata_versionstatusZsupported_bya	  
module: role
author:
 - Paul Arthur (@flowerysong)
 - Manca Bizjak (@mancabizjak)
 - Aljaz Kosir (@aljazkosir)
 - Tadej Borovsak (@tadeboro)
short_description: Manage Sensu roles
description:
  - Create, update or delete Sensu role.
  - For more information, refer to the Sensu documentation at
    U(https://docs.sensu.io/sensu-go/latest/reference/rbac/#roles-and-cluster-roles).
version_added: 1.0.0
extends_documentation_fragment:
  - sensu.sensu_go.requirements
  - sensu.sensu_go.auth
  - sensu.sensu_go.name
  - sensu.sensu_go.namespace
  - sensu.sensu_go.state
seealso:
  - module: sensu.sensu_go.role_info
  - module: sensu.sensu_go.cluster_role
  - module: sensu.sensu_go.role_binding
options:
  rules:
    description:
      - Rules that the role applies.
      - Must be non-empty if I(state) is C(present).
    type: list
    elements: dict
    suboptions:
      verbs:
        description:
          - Permissions to be applied by the rule.
        type: list
        elements: str
        required: yes
        choices: [get, list, create, update, delete]
      resources:
        description:
          - Types of resources the rule has permission to access.
        type: list
        elements: str
        required: yes
      resource_names:
        description:
          - Names of specific resources the rule has permission to access.
          - Note that for the C(create) verb, this argument will not be
            taken into account when enforcing RBAC, even if it is provided.
        type: list
        elements: str
z
- name: Create a role
  sensu.sensu_go.role:
    name: readonly
    rules:
      - verbs:
      - get
      - list
    resources:
      - checks
      - entities

- name: Delete a role
  sensu.sensu_go.role:
    name: readonly
    state: absent
a_  
object:
  description: Object representing Sensu role.
  returned: success
  type: dict
  sample:
    metadata:
      name: namespaced-resources-all-verbs
      namespace: default
    rules:
      - resource_names: []
        resources:
          - assets
          - checks
        verbs:
           - create
           - update
           - delete
)AnsibleModule   )	argumentserrorsutils
role_utilsc              C   s   t dttddddtddttdddd	dd
ddgdtddddtddddddd} t| j}|rx| j|d t| jd }t	
| jd d| jd }t| jd}y4t	| jd |||| jtj\}}| j||d W n6 tjk
r } z| jt|d W d d }~X Y nX d S )NTauthnamestate	namespacelistdictstrgetcreateupdatedelete)requiredtypeelementschoices)r   r   r   )r   r   )Zverbs	resourcesZresource_names)r   r   options)rules)Zsupports_check_modeZargument_spec)msgZrolesr   )changedobject)r   r   r	   Zget_specr   Zvalidate_module_paramsparamsZ	fail_jsonZget_sensu_clientr   Zbuild_core_v2_pathZget_mutation_payloadsyncZ
check_modeZdo_roles_differZ	exit_jsonr
   Errorr   )moduler   clientpathpayloadr    rolee r+   f/home/dcms/DCMS/lib/python3.7/site-packages/ansible_collections/sensu/sensu_go/plugins/modules/role.pymainq   sF    
r-   __main__N)
__future__r   r   r   r   __metaclass__ZANSIBLE_METADATAZDOCUMENTATIONZEXAMPLESZRETURNZansible.module_utils.basicr   Zmodule_utilsr	   r
   r   r   r-   __name__r+   r+   r+   r,   <module>   s   63