add organization_id and organization_name to the tracing span in a http request (#3657)

This commit is contained in:
LawyZheng
2025-10-09 17:32:51 +08:00
committed by GitHub
parent a2b6a0da2c
commit 5e7e346c74

View File

@@ -4,6 +4,7 @@ from typing import Annotated
import structlog
from asyncache import cached
from cachetools import TTLCache
from ddtrace import tracer
from fastapi import Header, HTTPException, status
from jose import jwt
from jose.exceptions import JWTError
@@ -37,11 +38,30 @@ async def get_current_org(
status_code=status.HTTP_403_FORBIDDEN,
detail="Invalid credentials",
)
organization = None
if x_api_key:
return await _get_current_org_cached(x_api_key, app.DATABASE)
organization = await _get_current_org_cached(x_api_key, app.DATABASE)
elif authorization:
return await _authenticate_helper(authorization)
organization = await _authenticate_helper(authorization)
if organization:
try:
# Set in context
curr_ctx = skyvern_context.current()
if curr_ctx:
curr_ctx.organization_id = organization.organization_id
curr_ctx.organization_name = organization.organization_name
# Tag datadog span immediately
span = tracer.current_span()
if span:
span.set_tag("organization_id", organization.organization_id)
if organization.organization_name:
span.set_tag("organization_name", organization.organization_name)
except Exception:
pass
return organization
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="Invalid credentials",
@@ -83,6 +103,13 @@ async def _authenticate_helper(authorization: str) -> Organization:
status_code=status.HTTP_403_FORBIDDEN,
detail="Invalid credentials",
)
# set organization_id in skyvern context and log context
context = skyvern_context.current()
if context:
context.organization_id = organization.organization_id
context.organization_name = organization.organization_name
return organization