
    Vh?                     |    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 d 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: entity
author:
  - Paul Arthur (@flowerysong)
  - Aljaz Kosir (@aljazkosir)
  - Miha Plesko (@miha-plesko)
  - Tadej Borovsak (@tadeboro)
short_description: Manage Sensu entities
description:
  - Create, update or delete Sensu entity.
  - For more information, refer to the Sensu documentation at
    U(https://docs.sensu.io/sensu-go/latest/reference/entities/).
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
  - sensu.sensu_go.labels
  - sensu.sensu_go.annotations
seealso:
  - module: sensu.sensu_go.entity_info
options:
  entity_class:
    description:
      - Entity class. Standard classes are C(proxy) and C(agent), but you can
        use whatever you want.
      - Required if I(state) is C(present).
    type: str
  subscriptions:
    description:
      - List of subscriptions for the entity.
    type: list
    elements: str
  system:
    description:
      - System information about the entity, such as operating system and platform. See
        U(https://docs.sensu.io/sensu-go/5.13/reference/entities/#system-attributes) for more information.
    type: dict
  last_seen:
    description:
      - Timestamp the entity was last seen, in seconds since the Unix epoch.
    type: int
  deregister:
    description:
      - If the entity should be removed when it stops sending keepalive messages.
    type: bool
  deregistration_handler:
    description:
      - The name of the handler to be called when an entity is deregistered.
    type: str
  redact:
    description:
      - List of items to redact from log messages. If a value is provided,
        it overwrites the default list of items to be redacted.
    type: list
    elements: str
  user:
    description:
      - Sensu RBAC username used by the entity. Agent entities require get,
        list, create, update, and delete permissions for events across all namespaces.
    type: str
a  
- name: Create an entity
  sensu.sensu_go.entity:
    auth:
      url: http://localhost:8080
    name: entity
    entity_class: proxy
    subscriptions:
      - web
      - prod
    system:
      hostname: playbook-entity
      os: linux
      platform: ubutntu
      network:
        interfaces:
          - name: lo
            addresses:
              - 127.0.0.1/8
              - ::1/128
          - name: eth0
            mac: 52:54:00:20:1b:3c
            addresses:
              - 93.184.216.34/24
    last_seen: 1522798317
    deregister: yes
    deregistration_handler: email-handler
    redact:
      - password
      - pass
      - api_key
    user: agent

- name: Delete an entity
  sensu.sensu_go.entity:
    name: entity
    state: absent
a  
object:
  description: Object representing Sensu entity.
  returned: success
  type: dict
  sample:
    metadata:
      annotations: null
      labels: null
      name: webserver01
      namespace: default
    deregister: false
    deregistration: {}
    entity_class: agent
    last_seen: 1542667231
    redact:
      - password
      - private_key
      - secret
    subscriptions:
      - entity:webserver01
    system:
      arch: amd64
      libc_type: glibc
      vm_system: kvm
      vm_role: host
      cloud_provider: null
      network:
        interfaces:
          - addresses:
              - 127.0.0.1/8
              - ::1/128
            name: lo
          - addresses:
              - 172.28.128.3/24
              - fe80::a00:27ff:febc:be60/64
            mac: 08:00:27:bc:be:60
            name: enp0s8
      os: linux
      platform: centos
      platform_family: rhel
      platform_version: 7.4.1708
    sensu_agent_version: 1.0.0
    user: agent
)AnsibleModule   )	argumentserrorsutilsc                    |j                  d      }|r&t        j                  | j                  d      |      ry|j                  d      }|(t        |      t        | j                  dg             k7  ryt        j                  | |dd      S )NsystemTsubscriptions)getr   	do_differset)currentdesiredr   subss       i/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/sensu/sensu_go/plugins/modules/entity.pyr   r      ss    [["F%//'++h"7@;;'DCIW[["-M)NN??7GXGG    c                  <   dddgfg} t        | dt        t        j                  dddddd	      t               t        d
d      t        d      t        d      t        d      t               t        d
d      t               	            }t        j                  |j
                  d         }t        j                  |j
                  d	   d|j
                  d         }t        j                  |j
                  ddddddd      }|j
                  d   rt        |j
                  d         |d<   |j                  d      }|r|dvrd}t        j                  ||d       |d k(  r1d!|j
                  d   z   }|j                  dg       }||vr	||gz   |d<   	 t        j                  |j
                  d   ||||j                  t              \  }	}
|j                  |	|
"       y # t        j                   $ r%}|j#                  t%        |      #       Y d }~y d }~ww xY w)$Nstatepresententity_classTauthnamelabelsannotations	namespaceliststr)typeelementsdict)r&   intbool)r   r   r   	last_seen
deregisterderegistration_handlerredactuser)required_ifsupports_check_modeargument_specentitiesr   r   r+   r,   r.   r/   r-   )handlerderegistration)agentproxyzThe `entity_class` parameter should be set to either `agent` or `proxy`. All other values can result in undefined behavior of the Sensu Go backend.z2.0.0r6   zentity:)changedobject)msg)r   r(   r   get_specget_sensu_clientparamsr   build_core_v2_pathget_mutation_payloadr   	deprecatesync
check_moder   	exit_jsonr   Error	fail_jsonr%   )r0   moduleclientpathpayloadeclassdeprecation_msg
entity_subr   r8   entityes               r   mainrO      s(   	)n-.K  =+ e    $(6e +
F8 ''f(=>F##k"Jf0ED ,,~+|&G }}-.$(?W1X$Y !
 [[(F& 22$ 	
 	9 v!66
{{?B/T!'+zl':GO$%**MM'"FD'6;L;L
 	8<< %SV$$%s   AG# #H6HH__main__N)
__future__r   r   r   r&   __metaclass__ANSIBLE_METADATADOCUMENTATIONEXAMPLESRETURNansible.module_utils.basicr   module_utilsr   r   r   r   rO   __name__ r   r   <module>r[      sm    A @  ! ?B%N,
\ 5 3 3	HI%X zF r   