o
    i	                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ ddlmZ eeZd	d
 ZdddZG dd de	e jdZdS )    N)CONTAINER_TAGS_HASH)
get_logger) ForksafeAwakeablePeriodicService)compute_base_hash)config   )get_connectionc              
   C   sV   z|  t}|rt| W d S W d S  ty* } ztd| W Y d }~d S d }~ww )NzCould not compute base hash: %s)	getheaderr   r   	Exceptionlogdebug)respcontainer_tags_hashe r   J/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/agent.pyprocess_info_headers   s   
r   c                 C   s   | d u rt jn| }t j}t||d}z|jddddid | }t| | }W |  n|  w |j	dkr;d S |j	dk sE|j	d	krPt
d
|j	|j d S t|S )N)timeoutGETinfozcontent-typezapplication/json)headersi     i,  z1Unexpected error: HTTP error status %s, reason %s)r   trace_agent_urltrace_agent_timeout_secondsr   requestgetresponser   readclosestatusr   warningreasonjsonloads)url	agent_urlr   _connr   datar   r   r   r      s   


r   c                       sp   e Zd Zddef fddZejdeje	 de
fddZdd
dZdddZejdddZdddZ  ZS )AgentCheckPeriodicService        intervalc                    s   t  j|d | j| _d S )N)r)   )super__init___agent_check_state)selfr)   	__class__r   r   r+   2   s   z"AgentCheckPeriodicService.__init__
agent_inforeturnc                 C      d S Nr   r.   r1   r   r   r   
info_check7      z$AgentCheckPeriodicService.info_checkNc                 C   sD   zt  }W n ty   d }Y nw | |r | j| _|   d S d S r4   )r   r
   r6   _onliner-   r5   r   r   r   r,   :   s   

z&AgentCheckPeriodicService._agent_checkc                 C   s:   z|    W d S  ty   | j| _tjddd Y d S w )Nz7Error during online operation, reverting to agent checkT)exc_info)onliner
   r,   r-   r   r   r.   r   r   r   r8   D   s   z!AgentCheckPeriodicService._onlinec                 C   r3   r4   r   r;   r   r   r   r:   K   r7   z AgentCheckPeriodicService.onlinec                 C   s   |   S r4   )r-   r;   r   r   r   periodicN   s   z"AgentCheckPeriodicService.periodic)r(   )r2   N)__name__
__module____qualname__floatr+   abcabstractmethodtOptionaldictboolr6   r,   r8   r:   r<   __classcell__r   r   r/   r   r'   1   s    


r'   )	metaclassr4   )rA   r!   typingrC   ddtrace.internal.constantsr   ddtrace.internal.loggerr   ddtrace.internal.periodicr   ddtrace.internal.process_tagsr    ddtrace.internal.settings._agentr   
utils.httpr   r=   r   r   r   ABCMetar'   r   r   r   r   <module>   s    
	