
    Vh*                     z    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 Zedk(  r e        yy)    )absolute_importdivisionprint_functionz1.1stableinterface	certified)metadata_versionstatus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                  J   t        dt        t        j                  dddd      t        ddt        t        dddg d	
      t        ddd      t        dd                              } t	        j
                  | j                        }|r| j                  |       t        j                  | j                  d         }t        j                  | j                  d   d| j                  d         }t        j                  | j                  d      }	 t        j                  | j                  d   |||| j                  t        j                        \  }}| j                  ||       y # t         j"                  $ r%}| j                  t%        |             Y d }~y d }~ww xY w)NTauthnamestate	namespacelistdictstr)getr   createupdatedelete)requiredtypeelementschoices)r   r   r   )r   r   )verbs	resourcesresource_names)r   r   options)rules)supports_check_modeargument_spec)msgrolesr%   )changedobject)r   r   r   get_specr   validate_module_paramsparams	fail_jsonget_sensu_clientr   build_core_v2_pathget_mutation_payloadsync
check_modedo_roles_differ	exit_jsonr   Errorr   )moduler(   clientpathpayloadr*   rolees           g/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/sensu/sensu_go/plugins/modules/role.pymainr?   q   sz    vvwD!%#!& M	 #!%#!&
 $(#!&$
F8 
+
+FMM
:C
S!''f(=>F##k"GV]]6-BD ,,wG%

MM'"FDV&&
(B(B
 	6<< %SV$$%s   AE* *F"=FF"__main__N)
__future__r   r   r   r   __metaclass__ANSIBLE_METADATADOCUMENTATIONEXAMPLESRETURNansible.module_utils.basicr   module_utilsr   r   r   r   r?   __name__     r>   <module>rL      sd    A @  ! 3j$
( 5 ? ?0%f zF rK   