bgcdddlZddlZddlmZddlmZddlmZddlm Z e rddl m Z dZ dZ d e Zd e Zd Zd eZGd dZGddZGddeZejejejejiZdS)N) Integration) set_context)logger) TYPE_CHECKING)Dictcloud_resourcez169.254.169.254zhttp://{}/latest/api/tokenz3http://{}/latest/dynamic/instance-identity/documentzmetadata.google.internalz,http://{}/computeMetadata/v1/?recursive=truec*eZdZdZdZdZdZdZdZdZ dS) CLOUD_PROVIDERz Name of the cloud provider. see https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/cloud/ alibaba_cloudawsazuregcp ibm_cloud tencent_cloudN) __name__ __module__ __qualname____doc__ALIBABAAWSAZUREGCPIBMTENCENT/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/sentry_sdk/integrations/cloud_resource_context.pyr r s8 G C E C CGGGrr ceZdZdZdZdZdS)CLOUD_PLATFORMz The cloud platform. see https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/cloud/ aws_ec2gcp_compute_engineN)rrrrAWS_EC2GCP_COMPUTE_ENGINErrrrr*s' G-rrceZdZdZdZdZdZejZ dZ d dZ e dZ e dZe dZe d Ze d Ze d Zed ZdS)CloudResourceContextIntegrationz8 Adds cloud resource context to the Senty scope cloudresourcecontextNc|t_dS)N)r%cloud_provider)selfr)s r__init__z(CloudResourceContextIntegration.__init__Bs9G'666rc |jdtddi}|jdkrdS|j|_dS#t$rYdSwxYw)NPUTz$X-aws-ec2-metadata-token-ttl-seconds60headersFT)httprequest AWS_TOKEN_URLstatusdatadecode aws_token Exceptionclsrs r_is_awsz'CloudResourceContextIntegration._is_awsFs{   ?F!A x3uFMMOOCM4   55 s/AA A! A!cBtjtjd} |jdt d|ji}|jdkr|Stj |j d} |d|d<n#t$rYnwxYw |d |d <n#t$rYnwxYw |d |d <n#t$rYnwxYw |d |d<n#t$rYnwxYw |d|d<n#t$rYnwxYwn#t$rYnwxYw|S)Nzcloud.providerzcloud.platformGETzX-aws-ec2-metadata-tokenr/r1utf-8 accountIdcloud.account.idavailabilityZonecloud.availability_zoneregion cloud.region instanceIdhost.id instanceTypez host.type)r rrr"r2r3AWS_METADATA_URLr8r5jsonloadsr6r7r9)r;ctxr<r6s r_get_aws_contextz0CloudResourceContextIntegration._get_aws_contextYs-0,4   &    3S]C!A x3 :afmmG4455D *.{*;&''     156H1I-..     &*8nN##     !%l!3I     #'#7K          D  s5D,D> B D BDBD B'&D' B41D3B44D8 CD CDCD C! D! C.+D-C..D2 C>=D> D D D  D DDc |jdtddi}|jdkrdSt j|jd|_dS#t$rYdSwxYw) Nr@Metadata-FlavorGoogler/r1FrAT) r2r3GCP_METADATA_URLr5rLrMr6r7 gcp_metadatar9r:s r_is_gcpz'CloudResourceContextIntegration._is_gcps    *H5!A x3u#z!&--*@*@AAC 4   55 s/A&1A&& A43A4ctjtjd} |jb|jdtddi}|jdkr|Stj |j d|_ |jdd |d <n#t$rYnwxYw |jd d d d|d<n#t$rYnwxYw |jd dd d|d<n#t$rYnwxYw |jd d|d<n#t$rYnwxYwn#t$rYnwxYw|S)Nr?r@rQrRr/r1rAproject projectIdrCinstancezone/rErFrGidrI)r rrr#rTr2r3rSr5rLrMr6r7r9split)r;rNr<s r_get_gcp_contextz0CloudResourceContextIntegration._get_gcp_contexts-0,?   ' 'H$$$.9% 8s??J#':afmmG.D.D#E#E  *-*:9*Ek*R&''     141A*1M2%**R2!-..     &)&6z&B8&L&R&RSV&W&W'N##     !$!1*!=d!CI        D  s7E1EBE B)&E(B))E-/CE C*'E)C**E./DE D+(E*D++E/EE EEEE E$#E$c|r tjS|r tjSdSNr')r=r rrUr)r;s r_get_cloud_providerz3CloudResourceContextIntegration._get_cloud_providers; ;;== &!% % ;;== &!% %rrc|jdkr|jnt}|tvrt|SiSra)r)r%rbcontext_getterskeys)r;r)s r_get_cloud_resource_contextz;CloudResourceContextIntegration._get_cloud_resource_contexts` !R''   0DDFF  _1133 3 3">244 4 rcXtj}|dko|tv}|rDt jdtjt tt}|ikrtt|dSdS)Nr'zVInvalid value for cloud_provider: %s (must be in %s). Falling back to autodetection...) r%r)rdrerwarninglistrfr CONTEXT_TYPE)r)unsupported_cloud_providercontexts r setup_oncez*CloudResourceContextIntegration.setup_onces9G b Q^?;O;O;Q;Q%Q # &  Nh/>_))++,,    2MMOO b==  g . . . . . =r)r')rrrr identifierr)r8urllib3 PoolManagerr2rTr+ classmethodr=rOrUr_rbrf staticmethodrmrrrr%r%4s(JNI 7  DLHHHH[$//[/b[$00[0d[  [ //\///rr%)rLrosentry_sdk.integrationsrsentry_sdk.apirsentry_sdk.utilsrsentry_sdk._typesrtypingrrjAWS_METADATA_HOSTformatr4rKGCP_METADATA_HOSTrSr rr%rrOrr_rdrrrr{s| //////&&&&&&######++++++ %,334EFF HOO/AHH        ........F/F/F/F/F/kF/F/F/X7H7Hr