
    g                     ~    d dl Z 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
 d dlmZ d dlmZmZ  G d d	e
      Zy)
    N)Optional)verbose_logger)InMemoryCache)GCSBucketBase)_get_httpx_client)CommonProxyErrorsKeyManagementSystemc                   T     e Zd Z	 	 ddee   dee   ddf fdZdedee   fdZ xZ	S )	GoogleSecretManagerrefresh_intervalalways_read_secret_managerreturnNc                 n   ddl m} |dur&t        dt        j                  j
                         t        |           t        j                  j                  dd      | _        | j                  t        d      t               | _        | t        _        t         j"                  t        _        t        j                  j                  d|      }|rt'        |      n|}t)        |	      | _        t        j                  j                  d
      }|r|j-                         dk(  rd| _        y|xs d| _        y)a!  
        Args:
            refresh_interval (int, optional): The refresh interval in seconds. Defaults to 86400. (24 hours)
            always_read_secret_manager (bool, optional): Whether to always read from the secret manager. Defaults to False. Since we do want to cache values
        r   )premium_userTz5Google Secret Manager requires an Enterprise License  GOOGLE_SECRET_MANAGER_PROJECT_IDNzgGoogle Secret Manager requires a project ID, please set 'GOOGLE_SECRET_MANAGER_PROJECT_ID' in your .env&GOOGLE_SECRET_MANAGER_REFRESH_INTERVAL)default_ttl0GOOGLE_SECRET_MANAGER_ALWAYS_READ_SECRET_MANAGERtrueF)litellm.proxy.proxy_serverr   
ValueErrorr   not_premium_uservaluesuper__init__osenvironget
PROJECT_IDr   sync_httpx_clientlitellmsecret_manager_clientr	   GOOGLE_SECRET_MANAGER_key_management_systemintr   cachelowerr   )selfr   r   r   _refresh_interval_always_read_secret_manager	__class__s         b/var/www/openai/venv/lib/python3.12/site-packages/litellm/secret_managers/google_secret_manager.pyr   zGoogleSecretManager.__init__   s    	<t#GHYHjHjHpHpGqr  	**..)KTR??"y  "3!4(,%)<)R)R&JJNN46F
 '8C!"=M 	 #)

 ')jjnn>'
# (+113v=.2D+ /I.QED+    secret_namec                 z   | j                   dur9| j                  j                  |      }||S || j                  j                  v r|S d| j                   d| d}| j                         }d| d}| j                  j                  ||      }|j                  d	k7  r`t        j                  d
t        |j                               | j                  j                  |d       t        d| d|j                         t        j                  d|j                         |j!                         }|j                  di       j                  d      }|Bt#        j$                  |      j'                  d      }	| j                  j                  ||	       |	S | j                  j                  |d       t        d| d      )z
        Retrieve a secret from Google Secret Manager or cache.

        Args:
            secret_name (str): The name of the secret.

        Returns:
            str: The secret value if successful, None otherwise.
        TNz	projects/z	/secrets/z/versions/latestz(https://secretmanager.googleapis.com/v1/z:access)urlheaders   z)Google Secret Manager retrieval error: %szsecret z, not found in Google Secret Manager. Error: z8Google Secret Manager retrieval response status code: %spayloaddatazutf-8z# not found in Google Secret Manager)r   r&   	get_cache
cache_dictr   sync_construct_request_headersr    r   status_coder   errorstrtext	set_cacher   debugjsonbase64	b64decodedecode)
r(   r.   cached_secret_secret_namer1   r0   responsesecret_data_base64_encoded_value_decoded_values
             r,   %get_secret_from_google_secret_managerz9GoogleSecretManager.get_secret_from_google_secret_manager=   s    **$6 JJ00=M($$djj333$$ (	+>NO 	 5578gN ))--#w-G3&  ;S=O JJ  T +&RS[S`S`Rab  	F  	
 mmo +	2 > B B6 J !,#--.CDKKGTNJJ  ^ "!

[$/7;-/RSTTr-   )iQ F)
__name__
__module____qualname__r   r%   boolr   r:   rH   __classcell__)r+   s   @r,   r   r      sT     +05:-R"3--R %-TN-R 
	-R^7U 7URU 7Ur-   r   )r?   r   typingr   r!   litellm._loggingr   litellm.caching.cachingr   /litellm.integrations.gcs_bucket.gcs_bucket_baser   &litellm.llms.custom_httpx.http_handlerr   litellm.proxy._typesr   r	   r    r-   r,   <module>rU      s0     	   + 1 I D GgU- gUr-   