B
    `?                 @   st   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d Zdd Zedkrpe  dS )    )absolute_importdivisionprint_functionz1.1ZstableinterfaceZ	certified)metadata_versionstatusZ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             C   sb   | d}|r$t|  d|r$dS | d}|d k	rRt|t|  dg krRdS t| |ddS )NsystemTsubscriptions)getr   	do_differset)currentZdesiredr   subs r   h/home/dcms/DCMS/lib/python3.7/site-packages/ansible_collections/sensu/sensu_go/plugins/modules/entity.pyr      s    

 r   c              C   s  dddgfg} t | dttdddddd	t td
ddtddtddtddt td
ddt d	d}t|jd }t|jd	 d|jd }t|jddddddd}|jd rt|jd d|d< |	d}|r|dkrd}t
||d |d kr0d!|jd  }|	dg }||kr0||g |d< y2t|jd ||||jt\}	}
|j|	|
d" W n6 tjk
r } z|jt|d# W d d }~X Y nX d S )$NstateZ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_ifZsupports_check_modeZargument_specentitiesr   r   r#   r$   r&   r'   r%   )handlerZ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.0r+   zentity:)changedobject)msg)r   r    r	   Zget_specZget_sensu_clientparamsr   Zbuild_core_v2_pathZget_mutation_payloadr   Z	deprecatesyncZ
check_moder   Z	exit_jsonr
   ErrorZ	fail_jsonr   )r(   moduleclientpathpayloadZeclassZdeprecation_msgZ
entity_subr   r-   entityer   r   r   main   sX    




r9   __main__N)
__future__r   r   r   r   __metaclass__ZANSIBLE_METADATAZDOCUMENTATIONZEXAMPLESZRETURNZansible.module_utils.basicr   Zmodule_utilsr	   r
   r   r   r9   __name__r   r   r   r   <module>   s   B'.L