o
    i                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	 e
dZdd Zdd Zd	d
 Zdd Zdd ZG dd deZdS )    N)api)report_errorsreport_warningsz)(?P<delta>[0-9]*\.?[0-9]+)(?P<unit>[mhd])c                 C   s   | d pd}|  ddpd}|  ddpd}| d }tj|}| d }t|d | d d | d	   t|dd
 |  d S )Ntitle texthandledate_happenedurl z ()z | )getdatetimefromtimestampprintstrip	isoformat)eventr   r   r   datedtlink r   J/home/ubuntu/.local/lib/python3.10/site-packages/datadog/dogshell/event.pyprettyprint_event   s   $r   c                 C      t |  d S Nr   r   r   r   r   print_event       r   c                 C   r   r   r   r   r   r   r   prettyprint_event_details$   r   r    c                 C   r   r   r   r   r   r   r   print_event_details(   r   r!   c                 C   s   t tj  }| d u r|}t|S z	t| }W t|S  tyd   t| }|d u r/tt	|
d}|
d}|dkrC|d }|dkrM|d d }|dkrY|d d d }|t| }Y t|S w )Ndeltaunitm<   hd   )timemktimer   now	timetupleint	Exceptiontime_patmatchfloatgroup)
timestringr+   tr0   r"   r#   r   r   r   
parse_time,   s,   


r5   c                   @   s<   e Zd Zedd Zedd Zedd Zedd Zd	S )
EventClientc                 C   s  |j ddd}|jddd}d|_|j dd	d}|jd
dd |jdtdd |jddd |jdddd |jddd |jddd |jdddd |jdddd |jd d!d |jd"d#d |jd$d%d |jd&d'd |jd(d)d*d+ |j| jd, |j d-d.d}|jd/d0d |j| jd, |j d1d2d3d4}|jd5d6d |jd7d8d*d+ |jdd9d |jd:d;d |jdd<d |j| jd, d S )=Nr   z:Post events, get event details, and view the event stream.)helpVerbsverb)r   destTpostzPost events.r   zevent titlez--date_happenedzOPOSIX timestamp when the event occurred. if unset defaults to the current time.)typer7   z--handlez;user to post as. if unset, submits as the generic API user.z
--priorityz'"normal" or "low". defaults to "normal"normal)r7   defaultz--related_event_idz>event to post as a child of. if unset, posts a top-level eventz--tagszcomma separated list of tagsz--hostz-related host (default to the local host name)r   z	--no_hostz8no host is associated with the event (overrides --host))
store_true)r7   actionz--devicez%related device (e.g. eth0, /dev/sda1)z--aggregation_keyzkey to aggregate the event withz--typez)type of event, e.g. nagios, jenkins, etc.z--alert_typez;"error", "warning", "info" or "success". defaults to "info"messagez/event message body. if unset, reads from stdin.?)r7   nargs)funcshowzShow event details.event_idzevent to showstreamz%Retrieve events from the Event StreamzStream start and end times can be specified as either a POSIX timestamp (e.g. the output of `date +%s`) or as a period of time in the past (e.g. '5m', '6h', '3d').)r7   descriptionstartz!start date for the stream requestendz3end date for the stream request (defaults to 'now')z;filter by priority. 'normal' or 'low'. defaults to 'normal'z	--sourcesz,comma separated list of sources to filter byz)comma separated list of tags to filter by)	
add_parseradd_subparsersrequiredadd_argumentr-   set_defaults_post_show_stream)cls
subparsersparserverb_parserspost_parsershow_parserstream_parserr   r   r   setup_parserD   sP   zEventClient.setup_parserc                 C   s   |j t_|j}|j}|du rtj }|jdur$dd |j	dD }nd}|j
r+dn|j}tjj|j||j|j|j|j|||j|j|j|jd}t| t| |dkr]t|d  dS |dkrjtt| dS t|d  dS )	z 
        Post an event.
        Nc                 S      g | ]}|  qS r   r   .0r4   r   r   r   
<listcomp>       z%EventClient._post.<locals>.<listcomp>,)r   r   r	   r   priorityrelated_event_idtagshostdeviceaggregation_keysource_type_name
alert_typeprettyr   raw)timeoutr   _timeoutformatrA   sysstdinreadrd   splitno_hostre   Eventcreater   r	   r   rb   rc   rf   rg   r<   ri   r   r   r   r   jsondumpsr   )rS   argsrn   rA   rd   re   resr   r   r   rP   t   s<   

zEventClient._postc                 C   sn   |j t_|j}tj|j}t| t| |dkr"t	|d  d S |dkr/t
t| d S t|d  d S )Nrj   r   rk   )rl   r   rm   rn   rt   r   rF   r   r   r    r   rv   rw   r!   )rS   rx   rn   ry   r   r   r   rQ      s   zEventClient._showc           	      C   s   |j t_|j}|jd urdd |jdD }nd }|jd ur+dd |jdD }nd }t|j}t|j	}tj
j|||j||d}t| t| |dkr_|d D ]	}t| t  qSd S |dkrltt| d S |d D ]	}t| t  qpd S )	Nc                 S   r[   r   r\   )r^   sr   r   r   r_      r`   z'EventClient._stream.<locals>.<listcomp>ra   c                 S   r[   r   r\   r]   r   r   r   r_      r`   )rI   rJ   rb   sourcesrd   rj   eventsrk   )rl   r   rm   rn   r{   rr   rd   r5   rI   rJ   rt   queryrb   r   r   r   r   rv   rw   r   )	rS   rx   rn   r{   rd   rI   rJ   ry   r   r   r   r   rR      s0   



zEventClient._streamN)__name__
__module____qualname__classmethodrZ   rP   rQ   rR   r   r   r   r   r6   C   s    
/
*
r6   )r   r)   rero   rv   datadogr   datadog.dogshell.commonr   r   compiler/   r   r   r    r!   r5   objectr6   r   r   r   r   <module>   s   
