
    lhd                     d   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	 e	rd dlm
Z
 dZdZd	Zd
j                  e      Zdj                  e      ZdZdj                  e      Z G d d      Z G d d      Z G d de      Zej,                  ej.                  ej0                  ej2                  iZy)    N)Integration)set_context)logger)TYPE_CHECKING)Dictcloud_resourceg       @z169.254.169.254zhttp://{}/latest/api/tokenz3http://{}/latest/dynamic/instance-identity/documentzmetadata.google.internalz,http://{}/computeMetadata/v1/?recursive=truec                   (    e Zd ZdZdZdZdZdZdZdZ	y)	CLOUD_PROVIDERz
    Name of the cloud provider.
    see https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/cloud/
    alibaba_cloudawsazuregcp	ibm_cloudtencent_cloudN)
__name__
__module____qualname____doc__ALIBABAAWSAZUREGCPIBMTENCENT     /var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/cloud_resource_context.pyr
   r
      s'    
 G
CE
C
CGr   r
   c                       e Zd ZdZdZdZy)CLOUD_PLATFORMz
    The cloud platform.
    see https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/cloud/
    aws_ec2gcp_compute_engineN)r   r   r   r   AWS_EC2GCP_COMPUTE_ENGINEr   r   r   r   r   ,   s    
 G-r   r   c                       e Zd ZdZdZdZdZ ej                  e	      Z
dZddZed        Zed        Zed	        Zed
        Zed        Zed        Zed        Zy)CloudResourceContextIntegrationz8
    Adds cloud resource context to the Senty scope
    cloudresourcecontext )timeoutNc                     |t         _        y )N)r%   cloud_provider)selfr*   s     r   __init__z(CloudResourceContextIntegration.__init__D   s    9G'6r   c                    	 | j                   j                  dt        ddi      }|j                  dk7  ry|j                  j                         | _        y# t        j                  j                  $ r t        j                  dt               Y yt        $ r)}t        j                  d	t        |             Y d }~yd }~ww xY w)
NPUTz$X-aws-ec2-metadata-token-ttl-seconds60headers   FT/AWS metadata service timed out after %s secondsz'Error checking AWS metadata service: %s)httprequestAWS_TOKEN_URLstatusdatadecode	aws_tokenurllib3
exceptionsTimeoutErrorr   debugHTTP_TIMEOUT	Exceptionstrclsres      r   _is_awsz'CloudResourceContextIntegration._is_awsH   s    	  ?F ! A xx3FFMMOCM!!.. 	LLA<  	LLBCFK	s"   3A A 7C C B;;C c                    t         j                  t        j                  d}	 | j                  j                  dt        d| j                  i      }|j                  dk7  r|S t        j                  |j                  j                  d            }	 |d   |d<   	 |d	   |d
<   	 |d   |d<   	 |d   |d<   	 |d   |d<   |S # t        $ r Y 1w xY w# t        $ r Y 7w xY w# t        $ r Y =w xY w# t        $ r Y Cw xY w# t        $ r Y |S w xY w# t        j                  j                   $ r t#        j$                  dt&               Y |S t        $ r*}t#        j$                  dt)        |             Y d }~|S d }~ww xY w)Nzcloud.providerzcloud.platformGETzX-aws-ec2-metadata-tokenr0   r2   utf-8	accountIdcloud.account.idavailabilityZonecloud.availability_zoneregioncloud.region
instanceIdhost.idinstanceTypez	host.typer3   zError fetching AWS metadata: %s)r
   r   r   r"   r4   r5   AWS_METADATA_URLr:   r7   jsonloadsr8   r9   r@   r;   r<   r=   r   r>   r?   rA   )rC   ctxrD   r8   rE   s        r   _get_aws_contextz0CloudResourceContextIntegration._get_aws_contexta   s    -00,44

*	D   3S]]C ! A xx3
::affmmG45D*.{*;&'156H1I-.&*8nN#!%l!3I#'#7K  
=  
  
  
  
   
 !!.. 	LLA< 
  	DLL:CFCC
	Ds   >D ".D B? C #C ,C, 5C; ?	CD 
CD 	CD CD 	C)&D (C))D ,	C85D 7C88D ;	DD DD 7E7E7E22E7c                    	 | j                   j                  dt        ddi      }|j                  dk7  ryt	        j
                  |j                  j                  d            | _        y# t        j                  j                  $ r t        j                  d	t               Y yt        $ r)}t        j                  d
t!        |             Y d }~yd }~ww xY w)NrI   Metadata-FlavorGoogler0   r2   FrJ   T/GCP metadata service timed out after %s secondsz'Error checking GCP metadata service: %s)r4   r5   GCP_METADATA_URLr7   rU   rV   r8   r9   gcp_metadatar;   r<   r=   r   r>   r?   r@   rA   rB   s      r   _is_gcpz'CloudResourceContextIntegration._is_gcp   s    	   *H5 ! A xx3#zz!&&--*@AC!!.. 	LLA<  	LLBCFK	s"   3A* 3A* *7C#C+CCc                    t         j                  t        j                  d}	 | j                  h| j
                  j                  dt        ddi      }|j                  dk7  r|S t        j                  |j                  j                  d            | _        	 | j                  d   d	   |d
<   	 | j                  d   d   j                  d      d   |d<   	 | j                  d   d   j                  d      d   |d<   	 | j                  d   d   |d<   |S # t        $ r Y sw xY w# t        $ r Y Zw xY w# t        $ r Y Aw xY w# t        $ r Y |S w xY w# t        j                   j"                  $ r t%        j&                  dt(               Y |S t        $ r*}t%        j&                  dt+        |             Y d }~|S d }~ww xY w)NrH   rI   rZ   r[   r0   r2   rJ   project	projectIdrL   instancezone/rN   rO   rP   idrR   r\   zError fetching GCP metadata: %s)r
   r   r   r#   r^   r4   r5   r]   r7   rU   rV   r8   r9   r@   splitr;   r<   r=   r   r>   r?   rA   )rC   rW   rD   rE   s       r   _get_gcp_contextz0CloudResourceContextIntegration._get_gcp_context   s    -00,??

+	D'HH$$$.9 %  88s?J#'::affmmG.D#E *-*:*:9*Ek*R&'141A1A*1M2%*R2!-.&)&6&6z&B8&L&R&RSV&W'N#!$!1!1*!=d!CI 
=      
   
 !!.. 	LLA< 
  	DLL:CFCC
	Ds   A E $3E D .'D$ 'D3 >E 	D!E  D!!E $	D0-E /D00E 3	D?<E >D??E 	EE EE 7F>F>F99F>c                     | j                         rt        j                  S | j                         rt        j                  S yNr'   )rF   r
   r   r_   r   )rC   s    r   _get_cloud_providerz3CloudResourceContextIntegration._get_cloud_provider   s1     ;;=!%%%;;=!%%%r   c                     | j                   dk7  r| j                   nt        j                         }|t        j	                         v rt        |          S i S rk   )r*   r%   rl   context_getterskeys)rC   r*   s     r   _get_cloud_resource_contextz;CloudResourceContextIntegration._get_cloud_resource_context   sT    
 !!R' 0DDF 	
 _1133">244	r   c                  6   t         j                  } | dk7  xr | t        j                         v}|r@t	        j
                  dt         j                  t        t        j                                      t         j                         }|i k7  rt        t        |       y y )Nr'   zVInvalid value for cloud_provider: %s (must be in %s). Falling back to autodetection...)
r%   r*   rn   ro   r   warninglistrp   r   CONTEXT_TYPE)r*   unsupported_cloud_providercontexts      r   
setup_oncez*CloudResourceContextIntegration.setup_once   s     9GGb Q^?;O;O;Q%Q 	# &NNh/>>_))+, 2MMOb=g. r   )r'   )r   r   r   r   
identifierr*   r:   r;   PoolManagerr?   r4   r^   r,   classmethodrF   rX   r_   ri   rl   rp   staticmethodrw   r   r   r   r%   r%   6   s     (JNI7|4DLH  0 3 3j  0 4 4l   
 
 / /r   r%   )rU   r;   sentry_sdk.integrationsr   sentry_sdk.apir   sentry_sdk.utilsr   typingr   r   rt   r?   AWS_METADATA_HOSTformatr6   rT   GCP_METADATA_HOSTr]   r
   r   r%   r   rX   r   ri   rn   r   r   r   <module>r      s      / & #    % ,334EFHOO  / AHH 
 . .Z/k Z/@ 7HH7HHr   