§
    xÅj  ã                   óh  — d dl Z d dlmZ d dl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)ÚTYPE_CHECKING)Úset_context)ÚIntegration)Úlogger)Ú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© ó    ú_C:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/cloud_resource_context.pyr
   r
      s8   € € € € € ðð ð
 €GØ
€CØ€EØ
€CØ
€CØ€G€G€Gr   r
   c                   ó   — e Zd 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Ú
aws_lambdaÚgcp_compute_engineN)r   r   r   r   ÚAWS_EC2Ú
AWS_LAMBDAÚGCP_COMPUTE_ENGINEr   r   r   r   r   ,   s,   € € € € € ðð ð
 €GØ€JØ-ÐÐÐ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__E   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_awsH   sØ   € ð	Ø”× Ò ØÝØ?ÀÐFð !ñ ô ˆAð Œx˜3ŠˆØ�uàœFŸMšM™OœOˆCŒMØ�4øåÔ!Ô.ð 	ð 	ð 	ÝŒLØAÅ<ñô ð ð �5�5Ýð 	ð 	ð 	ÝŒLÐBÅCÈÁFÄFÑKÔKÐKØ�5�5�5�5�5øøøøð	øøø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-tokenr3   r5   úutf-8Ú	accountIdúcloud.account.idÚavailabilityZoneúcloud.availability_zoneÚregionúcloud.regionÚ
instanceIdúhost.idÚinstanceTypez	host.typer6   zError fetching AWS metadata: %s)r
   r   r   r#   r7   r8   ÚAWS_METADATA_URLr=   r:   ÚjsonÚloadsr;   r<   rC   r>   r?   r@   r   rA   rB   rD   )rF   ÚctxrG   r;   rH   s        r   Ú_get_aws_contextz0CloudResourceContextIntegration._get_aws_context`   s"  € õ -Ô0Ý,Ô4ð
ð 
ˆð
*	DØ”× Ò ØÝ Ø3°S´]ÐCð !ñ ô ˆAð Œx˜3ŠˆØ�
å”:˜aœfŸmšm¨GÑ4Ô4Ñ5Ô5ˆDðØ*.¨{Ô*;�Ð&Ñ'Ð'øÝð ð ð Ø�ðøøøðØ15Ð6HÔ1I�Ð-Ñ.Ð.øÝð ð ð Ø�ðøøøðØ&*¨8¤n��NÑ#Ð#øÝð ð ð Ø�ðøøøðØ!% lÔ!3��I‘�øÝð ð ð Ø�ðøøøðØ#'¨Ô#7��KÑ Ð øÝð ð ð Ø�ðøøøøøõ Ô!Ô.ð 	ð 	ð 	ÝŒLØAÅ<ñô ð ð ð õ ð 	Dð 	Dð 	DÝŒLÐ:½CÀ¹F¼FÑ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)NrM   úMetadata-FlavorÚGoogler3   r5   FrN   Tú/GCP metadata service timed out after %s secondsz'Error checking GCP metadata service: %s)r7   r8   ÚGCP_METADATA_URLr:   rY   rZ   r;   r<   Úgcp_metadatar>   r?   r@   r   rA   rB   rC   rD   rE   s      r   Ú_is_gcpz'CloudResourceContextIntegration._is_gcp•   sç   € ð	Ø”× Ò ØÝ Ø*¨HÐ5ð !ñ ô ˆAð Œx˜3ŠˆØ�uå#œz¨!¬&¯-ª-¸Ñ*@Ô*@ÑAÔAˆCÔØ�4øåÔ!Ô.ð 	ð 	ð 	ÝŒLØAÅ<ñô ð ð �5�5Ýð 	ð 	ð 	ÝŒLÐBÅCÈÁFÄFÑKÔKÐKØ�5�5�5�5�5øøøøð	øøøs"   ‚/A& ³1A& Á&.CÂ	CÂ "CÃCc                 ól  — t           j        t          j        dœ}| j        }	 | j        €d| j                             dt          ddi¬¦  «        }|j        dk    r|S t          j
        |j                             d¦  «        ¦  «        }|| _        	 |d         d	         |d
<   n# t          $ r Y nw xY w	 |d         d                              d¦  «        d         |d<   n# t          $ r Y nw xY w	 |d         d                              d¦  «        d         |d<   n# t          $ r Y nw xY w	 |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 )NrL   rM   r^   r_   r3   r5   rN   ÚprojectÚ	projectIdrP   ÚinstanceÚzoneú/éÿÿÿÿrR   rS   rT   ÚidrV   r`   zError fetching GCP metadata: %s)r
   r   r   r%   rb   r7   r8   ra   r:   rY   rZ   r;   r<   rC   Úsplitr>   r?   r@   r   rA   rB   rD   )rF   r[   rb   rG   rH   s        r   Ú_get_gcp_contextz0CloudResourceContextIntegration._get_gcp_context­   sI  € õ -Ô0Ý,Ô?ð
ð 
ˆð
 Ô'ˆð*	DØÔÐ'Ø”H×$Ò$ØÝ$Ø.°Ð9ð %ñ ô �ð ”8˜s’?�?Ø�Jå#œz¨!¬&¯-ª-¸Ñ*@Ô*@ÑAÔA�Ø#/�Ô ðØ*6°yÔ*AÀ+Ô*N�Ð&Ñ'Ð'øÝð ð ð Ø�ðøøøðØ1=¸jÔ1IÈ&Ô1Q×1WÒ1WØñ2ô 2àô2�Ð-Ñ.Ð.øõ ð ð ð Ø�ðøøøðà&2°:Ô&>¸xÔ&H×&NÒ&NÈsÑ&SÔ&SÐTVÔ&W��NÑ#Ð#øÝð ð ð Ø�ðøøøðØ!-¨jÔ!9¸$Ô!?��I‘�øÝð ð ð Ø�ðøøøøøõ Ô!Ô.ð 	ð 	ð 	ÝŒLØAÅ<ñô ð ð ð õ ð 	Dð 	Dð 	DÝŒLÐ:½CÀ¹F¼FÑCÔCÐCÐCÐCÐCÐCÐCøøøøð	Døøøð ˆ
s³   ¢7E Á3E ÂB  ÂE Â 
B-Â*E Â,B-Â-E Â1*C ÃE Ã
C)Ã&E Ã(C)Ã)E Ã-*D ÄE Ä
D%Ä"E Ä$D%Ä%E Ä)D; Ä:E Ä;
EÅE ÅEÅE Å.F1Å<	F1Æ"F,Æ,F1c                 ó†   — |                       ¦   «         rt          j        S |                      ¦   «         rt          j        S dS ©Nr)   )rI   r
   r   rc   r   )rF   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 ro   )r+   r'   rp   Úcontext_gettersÚkeys)rF   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+   rr   rs   r   ÚwarningÚlistrt   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,   rJ   )r,   N)r   r   r   r   Ú
identifierr+   r=   r>   ÚPoolManagerrB   r7   rb   rD   r/   ÚclassmethodÚboolrI   r\   rc   rm   rp   rt   Ústaticmethodr{   r   r   r   r'   r'   7   sn  € € € € € ðð ð (€Jà€Nà€IØˆ7Ô |Ð4Ñ4Ô4€Dà€LðHð H sð H°Dð Hð Hð Hð Hð ð˜ð ð ð ñ „[ðð. ð2ð 2ð 2ñ „[ð2ðh ð˜ð ð ð ñ „[ðð. ð3ð 3ð 3ñ „[ð3ðj ð Cð ð ð ñ „[ðð ð	ð 	ð 	ñ „[ð	ð ð/ð /ð /ñ „\ð/ð /ð /r   r'   )rY   Útypingr   r>   Úsentry_sdk.apir   Úsentry_sdk.integrationsr   Úsentry_sdk.utilsr   r   rx   rB   ÚAWS_METADATA_HOSTÚformatr9   rX   ÚGCP_METADATA_HOSTra   r
   r   r'   r   r\   r   rm   rr   r   r   r   ú<module>rˆ      s�  ðØ €€€Ø  Ð  Ð  Ð  Ð  Ð  à €€€à &Ð &Ð &Ð &Ð &Ð &Ø /Ð /Ð /Ð /Ð /Ð /Ø #Ð #Ð #Ð #Ð #Ð #àð ØÐÐÐÐÐð  €à€à%Ð Ø,×3Ò3Ð4EÑFÔF€ØH×OÒOØñô Ð ð /Ð ØA×HÒHØñô Ð ð
ð ð ð ð ñ ô ð ð.ð .ð .ð .ð .ñ .ô .ð .ðR/ð R/ð R/ð R/ð R/ kñ R/ô R/ð R/ðp ÔÐ7ÔHØÔÐ7ÔHð€€€r   