
    g                         d Z ddlZddlmZmZmZmZ ddlZddlm	Z	 erddl
mZ eZddlmZ neZeZdeded	eeef   d
efdZdee   fdZy)z1
Callbacks triggered on cooling down deployments
    N)TYPE_CHECKINGAnyOptionalUnion)verbose_logger)RouterPrometheusLoggerlitellm_router_instancedeployment_idexception_statuscooldown_timec           	        K   t        j                  d       | j                  |      }|t        j                  d| d       y|d   }t	        j
                  |      }t        |      }|j                  dd      xs d}t        j                  ||	      xs d}|d
   }	|	j                  }
|j                  d      xs d}d}	 t        j                  ||j                  d            \  }}}}t               }|4|j                  ||
||       |j                  ||
||t!        |             y# t        $ r Y Lw xY ww)z
    Callback triggered when a deployment is put into cooldown by litellm

    - Updates deployment state on Prometheus
    - Increments cooldown metric for deployment on Prometheus
    z7In router_cooldown_event_callback - updating prometheus)model_idNzLin router_cooldown_event_callback but _deployment is None for deployment_id=z. Doing nothinglitellm_params
model_name )modeloptional_params
model_infor   custom_llm_provider)r   r   )litellm_model_namer   api_baseapi_provider)r   r   r   r   r   )r   debugget_deploymentwarningcopydeepcopydictgetlitellmget_api_baseidget_llm_provider	Exception%_get_prometheus_logger_from_callbacksset_deployment_complete_outage increment_deployment_cooled_downstr)r   r   r   r   _deployment_litellm_paramstemp_litellm_params_model_name	_api_baser   r   r   llm_provider_prometheusLoggers                  \/var/www/openai/venv/lib/python3.12/site-packages/litellm/router_utils/cooldown_callbacks.pyrouter_cooldown_event_callbackr4      s     RS)88-8PKZ[hZiixy	
 	!"23O--823//,5;K;@ST 	  \*J}}H,009?RL ' 8 8$ 3 7 78M N!
<A 	./  #77*%	 	8 	
 	99*% !12 	: 	
 1  s+   CE +D1 0AE 1	D=:E <D==E returnc                      ddl m}  t        j                  D ]  }t	        ||       s|c S  t        j
                  D ]  }t	        ||       s|c S  y)zJ
    Checks if prometheus is a initalized callback, if yes returns it
    r   r	   N)litellm.integrations.prometheusr
   r"   _async_success_callback
isinstance	callbacks)r
   	_callbackglobal_callbacks      r3   r'   r'   U   sQ     A44	i!12 5 #,,o'78"" -     )__doc__r   typingr   r   r   r   r"   litellm._loggingr   litellm.routerr   _RouterLitellmRouterr7   r
   r*   intfloatr4   r'    r=   r3   <module>rG      sx     6 6  +0M@M=*== CHo= 	=@x8H/I r=   