Merge remote-tracking branch 'origin' into litellm_key_alias_spend_usage_report

This commit is contained in:
yuneng-jiang 2026-01-28 13:30:49 -08:00
commit 8a54fff5cf
183 changed files with 253 additions and 243 deletions

View file

@ -144,6 +144,7 @@ class OpenTelemetry(CustomLogger):
self.OTEL_EXPORTER = self.config.exporter
self.OTEL_ENDPOINT = self.config.endpoint
self.OTEL_HEADERS = self.config.headers
self._tracer_provider_cache: Dict[str, Any] = {}
self._init_tracing(tracer_provider)
_debug_otel = str(os.getenv("DEBUG_OTEL", "False")).lower()
@ -615,12 +616,20 @@ class OpenTelemetry(CustomLogger):
"""Create a temporary tracer with dynamic headers for this request only."""
from opentelemetry.sdk.trace import TracerProvider
# Prevents thread exhaustion by reusing providers for the same credential sets (e.g. per-team keys)
cache_key = str(sorted(dynamic_headers.items()))
if cache_key in self._tracer_provider_cache:
return self._tracer_provider_cache[cache_key].get_tracer(LITELLM_TRACER_NAME)
# Create a temporary tracer provider with dynamic headers
temp_provider = TracerProvider(resource=self._get_litellm_resource(self.config))
temp_provider.add_span_processor(
self._get_span_processor(dynamic_headers=dynamic_headers)
)
# Store in cache for reuse
self._tracer_provider_cache[cache_key] = temp_provider
return temp_provider.get_tracer(LITELLM_TRACER_NAME)
def construct_dynamic_otel_headers(

View file

@ -849,7 +849,7 @@ def get_vertex_model_id_from_url(url: str) -> Optional[str]:
`https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:streamGenerateContent`
"""
match = re.search(r"/models/([^/:]+)", url)
match = re.search(r"/models/([^:]+)", url)
return match.group(1) if match else None

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-cf5ca766ac8f493f.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

View file

@ -1 +0,0 @@
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1979],{15143:function(e,n,r){Promise.resolve().then(r.bind(r,37492))},25512:function(e,n,r){"use strict";r.d(n,{P:function(){return t.Z},Q:function(){return u.Z}});var t=r(27281),u=r(57365)},37492:function(e,n,r){"use strict";r.r(n);var t=r(57437),u=r(66600),l=r(39760);n.default=()=>{let{token:e,accessToken:n,userRole:r,userId:o,premiumUser:i}=(0,l.Z)();return(0,t.jsx)(u.Z,{accessToken:n,token:e,userRole:r,userID:o,premiumUser:i})}},90246:function(e,n,r){"use strict";function t(e){let n=[e];return{all:n,lists:()=>[...n,"list"],list:e=>[...n,"list",{params:e}],details:()=>[...n,"detail"],detail:e=>[...n,"detail",e]}}r.d(n,{n:function(){return t}})},76191:function(e,n,r){"use strict";r.d(n,{p:function(){return o}});var t=r(19250),u=r(11713);let l=(0,r(90246).n)("uiConfig"),o=()=>(0,u.a)({queryKey:l.list({}),queryFn:async()=>await (0,t.getUiConfig)(),staleTime:864e5,gcTime:864e5})},39760:function(e,n,r){"use strict";var t=r(19250),u=r(3914),l=r(97060),o=r(14474),i=r(99376),a=r(2265),s=r(76191);n.Z=()=>{var e,n,r,c,d,f;let m=(0,i.useRouter)(),{data:p,isLoading:_}=(0,s.p)(),v="undefined"!=typeof document?(0,u.e)("token"):null;(0,a.useEffect)(()=>{(!v||v&&(0,l.v)(v))&&(v&&(0,u.b)(),m.replace("".concat((0,t.getProxyBaseUrl)(),"/ui/login")))},[v,m]),(0,a.useEffect)(()=>{!_&&(null==p?void 0:p.admin_ui_disabled)&&m.replace("".concat((0,t.getProxyBaseUrl)(),"/ui/login"))},[m,_,p]);let g=(0,a.useMemo)(()=>{if(!v)return null;try{return(0,o.o)(v)}catch(e){return(0,u.b)(),m.replace("".concat((0,t.getProxyBaseUrl)(),"/ui/login")),null}},[v,m]);return{token:v,accessToken:null!==(e=null==g?void 0:g.key)&&void 0!==e?e:null,userId:null!==(n=null==g?void 0:g.user_id)&&void 0!==n?n:null,userEmail:null!==(r=null==g?void 0:g.user_email)&&void 0!==r?r:null,userRole:function(e){if(!e)return"Undefined Role";switch(e.toLowerCase()){case"app_owner":case"demo_app_owner":return"App Owner";case"app_admin":case"proxy_admin":return"Admin";case"proxy_admin_viewer":return"Admin Viewer";case"org_admin":return"Org Admin";case"internal_user":return"Internal User";case"internal_user_viewer":case"internal_viewer":return"Internal Viewer";case"app_user":return"App User";default:return"Unknown Role"}}(null!==(c=null==g?void 0:g.user_role)&&void 0!==c?c:null),premiumUser:null!==(d=null==g?void 0:g.premium_user)&&void 0!==d?d:null,disabledPersonalKeyCreation:null!==(f=null==g?void 0:g.disabled_non_admin_personal_key_creation)&&void 0!==f?f:null,showSSOBanner:(null==g?void 0:g.login_method)==="username_password"}}},10703:function(e,n,r){"use strict";r.d(n,{p:function(){return u}});var t=r(19250);let u=async e=>{try{let n=await (0,t.modelHubCall)(e);if(console.log("model_info:",n),(null==n?void 0:n.data.length)>0){let e=n.data.map(e=>({model_group:e.model_group,mode:null==e?void 0:e.mode}));return e.sort((e,n)=>e.model_group.localeCompare(n.model_group)),e}return[]}catch(e){throw console.error("Error fetching model info:",e),e}}},24199:function(e,n,r){"use strict";r.d(n,{Z:function(){return l}});var t=r(57437);r(2265);var u=r(30150),l=e=>{let{step:n=.01,style:r={width:"100%"},placeholder:l="Enter a numerical value",min:o,max:i,onChange:a,...s}=e;return(0,t.jsx)(u.Z,{onWheel:e=>e.currentTarget.blur(),step:n,style:r,placeholder:l,min:o,max:i,onChange:a,...s})}},97060:function(e,n,r){"use strict";r.d(n,{v:function(){return u}});var t=r(14474);function u(e){try{let n=(0,t.o)(e);if(n&&"number"==typeof n.exp)return 1e3*n.exp<=Date.now();return!1}catch(e){return!0}}}},function(e){e.O(0,[1047,9028,9409,1713,4865,2926,6736,1108,5733,4817,8049,6600,2971,2117,1744],function(){return e(e.s=15143)}),_N_E=e.O()}]);

View file

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6061],{38997:function(n,t,u){Promise.resolve().then(u.bind(u,21933))},9513:function(n,t,u){"use strict";u.d(t,{Ct:function(){return r.Z},JO:function(){return c.Z},RM:function(){return o.Z},SC:function(){return a.Z},iA:function(){return i.Z},pj:function(){return f.Z},ss:function(){return s.Z},xs:function(){return Z.Z},xv:function(){return l.Z},zx:function(){return e.Z}});var r=u(41649),e=u(78489),c=u(47323),i=u(21626),o=u(97214),f=u(28241),s=u(58834),Z=u(69552),a=u(71876),l=u(84264)},45822:function(n,t,u){"use strict";u.d(t,{JO:function(){return i.Z},JX:function(){return e.Z},rj:function(){return c.Z},xv:function(){return o.Z},zx:function(){return r.Z}});var r=u(78489),e=u(49804),c=u(67101),i=u(47323),o=u(84264)},21933:function(n,t,u){"use strict";u.r(t);var r=u(57437),e=u(39145),c=u(39760);t.default=()=>{let{accessToken:n,userId:t,userRole:u}=(0,c.Z)();return(0,r.jsx)(e.Z,{accessToken:n,userID:t,userRole:u})}}},function(n){n.O(0,[1047,9028,9409,1713,4865,337,2652,2926,2409,1850,5869,353,3709,7971,6894,7138,3178,5319,6736,8582,6609,4105,3634,8049,5144,7914,1098,9145,2971,2117,1744],function(){return n(n.s=38997)}),_N_E=n.O()}]);

Some files were not shown because too many files have changed in this diff Show more