
    tni                     h   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
                    e          Zd                    e          ZdZd                    e          Z G d d          Z G d d          Z G d de          Zej        ej        ej        ej        iZdS )    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	dS )	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     k/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/cloud_resource_context.pyr
   r
      s8         
 G
CE
C
CGGGr   r
   c                       e Zd ZdZdZdZdS )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eddfdZedefd	            Zedd            Zedefd            Zedd            Zedefd            Zedd            Zedd            ZdS )CloudResourceContextIntegrationz8
    Adds cloud resource context to the Senty scope
    cloudresourcecontext )timeoutNcloud_providerreturnc                     |t           _        d S )N)r%   r)   )selfr)   s     r   __init__z(CloudResourceContextIntegration.__init__D   s    9G'666r   c                 z   	 | j                             dt          ddi          }|j        dk    rdS |j                                        | _        dS # t          j        j	        $ r t          j        dt                     Y dS t          $ r-}t          j        d	t          |                     Y d }~dS 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_awsG   s    	  ?F !  A x3uFMMOOCM4!. 	 	 	LA<   55 	 	 	LBCFFKKK55555	s"   /A A .B:	B:"B55B:Dict[str, str]c                    t           j        t          j        d}	 | j                            dt          d| j        i          }|j        dk    r|S t          j
        |j                            d                    }	 |d         |d<   n# t          $ r Y nw xY w	 |d	         |d
<   n# t          $ r Y nw xY w	 |d         |d<   n# t          $ r Y nw xY w	 |d         |d<   n# t          $ r Y nw xY w	 |d         |d<   n# t          $ r Y nw xY wnh# t          j        j        $ r t#          j        dt&                     Y n8t          $ r,}t#          j        dt)          |                     Y d }~nd }~ww xY w|S )Nzcloud.providerzcloud.platformGETzX-aws-ec2-metadata-tokenr1   r3   utf-8	accountIdcloud.account.idavailabilityZonecloud.availability_zoneregioncloud.region
instanceIdhost.idinstanceTypez	host.typer4   zError fetching AWS metadata: %s)r
   r   r   r"   r5   r6   AWS_METADATA_URLr;   r8   jsonloadsr9   r:   rA   r<   r=   r>   r   r?   r@   rB   )rD   ctxrE   r9   rF   s        r   _get_aws_contextz0CloudResourceContextIntegration._get_aws_context_   s"    -0,4
 

*	D   3S]C !  A x3
:afmmG4455D*.{*;&''   156H1I-..   &*8nN##   !%l!3I   #'#7K      !. 	 	 	LA<      	D 	D 	DL:CFFCCCCCCCC	D 
s   5D ,D >B
 	D 

BD BD B' &D '
B41D 3B44D 8C D 
CD CD C!  D !
C.+D -C..D 2C> =D >
DD 
DD .E4?	E4"E//E4c                    	 | j                             dt          ddi          }|j        dk    rdS t	          j        |j                            d                    | _        dS # t          j
        j        $ r t          j        d	t                     Y dS t          $ r-}t          j        d
t!          |                     Y d }~dS d }~ww xY w)NrK   Metadata-FlavorGoogler1   r3   FrL   T/GCP metadata service timed out after %s secondsz'Error checking GCP metadata service: %s)r5   r6   GCP_METADATA_URLr8   rW   rX   r9   r:   gcp_metadatar<   r=   r>   r   r?   r@   rA   rB   rC   s      r   _is_gcpz'CloudResourceContextIntegration._is_gcp   s    	   *H5 !  A x3u#z!&--*@*@AAC4!. 	 	 	LA<   55 	 	 	LBCFFKKK55555	s"   /A& 1A& &.C	C "CCc                    t           j        t          j        d}	 | j        b| j                            dt          ddi          }|j        dk    r|S t          j
        |j                            d                    | _        	 | j        d         d	         |d
<   n# t          $ r Y nw xY w	 | j        d         d                             d          d         |d<   n# t          $ r Y nw xY w	 | j        d         d                             d          d         |d<   n# t          $ r Y nw xY w	 | j        d         d         |d<   n# t          $ r Y nw xY wnh# t          j        j        $ r t%          j        dt(                     Y n8t          $ r,}t%          j        dt+          |                     Y d }~nd }~ww xY w|S )NrJ   rK   r\   r]   r1   r3   rL   project	projectIdrN   instancezone/rP   rQ   rR   idrT   r^   zError fetching GCP metadata: %s)r
   r   r   r#   r`   r5   r6   r_   r8   rW   rX   r9   r:   rA   splitr<   r=   r>   r   r?   r@   rB   )rD   rY   rE   rF   s       r   _get_gcp_contextz0CloudResourceContextIntegration._get_gcp_context   sE    -0,?
 

+	D'H$$$.9 %   8s??J#':afmmG.D.D#E#E *-*:9*Ek*R&''   141A*1M2%**R2!-..    &)&6z&B8&L&R&RSV&W&W'N##    !$!1*!=d!CI    !. 	 	 	LA<      	D 	D 	DL:CFFCCCCCCCC	D 
s   7E 1E B E 
B)&E (B))E -/C E 
C*'E )C**E ./D E 
D+(E *D++E /E E 
EE EE .F<	F<"F77F<c                     |                                  rt          j        S |                                 rt          j        S dS Nr'   )rG   r
   r   ra   r   )rD   s    r   _get_cloud_providerz3CloudResourceContextIntegration._get_cloud_provider   s9    ;;== 	&!%%;;== 	&!%%rr   c                     | j         dk    r| j         nt                                          }|t                                          v rt          |                     S i S rm   )r)   r%   rn   context_getterskeys)rD   r)   s     r   _get_cloud_resource_contextz;CloudResourceContextIntegration._get_cloud_resource_context   s`     !R'' 0DDFF 	
 _113333">2444	r   c                  X   t           j        } | dk    o| t                                          v}|rDt	          j        dt           j        t          t                                                               t                                           }|i k    rt          t          |           d S d S )Nr'   zVInvalid value for cloud_provider: %s (must be in %s). Falling back to autodetection...)
r%   r)   rp   rq   r   warninglistrr   r   CONTEXT_TYPE)r)   unsupported_cloud_providercontexts      r   
setup_oncez*CloudResourceContextIntegration.setup_once   s    8Gb Q^?;O;O;Q;Q%Q 	# & 	Nh/>_))++,,   2MMOOb==g..... =r   )r'   )r*   rH   )r*   N)r   r   r   r   
identifierr)   r;   r<   PoolManagerr@   r5   r`   rB   r-   classmethodboolrG   rZ   ra   rk   rn   rr   staticmethodry   r   r   r   r%   r%   6   sn         (JNI7|444DLH Hs HD H H H H     [. 2 2 2 [2h     [. 3 3 3 [3j C    [ 	 	 	 [	 / / / \/ / /r   r%   )rW   r<   sentry_sdk.integrationsr   sentry_sdk.apir   sentry_sdk.utilsr   typingr   r   rv   r@   AWS_METADATA_HOSTformatr7   rV   GCP_METADATA_HOSTr_   r
   r   r%   r   rZ   r   rk   rp   r   r   r   <module>r      s     / / / / / / & & & & & & # # # # # #               % ,334EFFHOO   / AHH  
       . . . . . . . .R/ R/ R/ R/ R/k R/ R/ R/p 7H7Hr   