Ë
    uPêjQ  ã                   óŠ   — 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 d dlmZmZ  G d	„ d
e«      Zy)é    N)ÚFinal)Úverbose_logger)ÚInMemoryCache)ÚSECRET_MANAGER_REFRESH_INTERVAL)ÚGCSBucketBase)Ú_get_httpx_client)ÚCommonProxyErrorsÚKeyManagementSystemc                   óT   ‡ — e Zd Zedfdedz  dedz  ddfˆ fd„Zdededz  fd„Zˆ xZ	S )	ÚGoogleSecretManagerFÚrefresh_intervalNÚalways_read_secret_managerÚreturnc                 ó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_ttlÚ0GOOGLE_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         €úr/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/secret_managers/google_secret_manager.pyr   zGoogleSecretManager.__init__   s  ø€ õ 	<à˜tÑ#ÜØGÔHY×HjÑHj×HpÑHpÐGqÐróð ô 	‰ÑÔÜŸ*™*Ÿ.™.Ð)KÈTÓRˆŒØ�?‰?Ð"ÜØyóð ô "3Ó!4ˆÔØ(,ŒÔ%Ü)<×)RÑ)RŒÔ&ÜŸJ™JŸN™NÐ+SÐUeÓfÐÙ6GœCÐ 1Ô2ÐM]ÐÜ"Ð/@ÔAˆŒ
ä-/¯Z©Z¯^©^Ø>ó.
Ð#ñ 'Ð+F×+LÑ+LÓ+NÐRXÒ+XØ.2ˆDÕ+ð /IÒ.QÈEˆDÕ+ó    Ú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_namer2   r1   ÚresponseÚsecret_dataÚ_base64_encoded_valueÚ_decoded_values
             r-   Ú%get_secret_from_google_secret_managerz9GoogleSecretManager.get_secret_from_google_secret_manager5   s¨  € ð ×*Ñ*°$Ñ6Ø#'§:¡:×#7Ñ#7¸Ó#DˆMØÐ(Ø$Ð$Ø˜dŸj™j×3Ñ3Ñ3Ø$Ð$à )¨$¯/©/Ð):¸)ÀKÀ=ÐP`ÐaˆØ×<Ñ<Ó>ˆØ?À¸~ÈWÐUˆð ×0Ñ0×4Ñ4¸ÀgÐ4ÓNˆà×Ñ 3Ò&Ü× Ñ Ð!LÌcÐRZ×R_ÑR_ÓN`ÔaØ�J‰J× Ñ  ¨dÔ3Ü˜w { mÐ3_Ð`h×`mÑ`mÐ_nÐoÓpÐpä×ÑØFØ× Ñ ô	
ð &Ÿ]™]›_ˆØ'2§¡°yÀ"Ó'E×'IÑ'IÈ&Ó'QÐð !Ð,Ü$*×$4Ñ$4Ð5JÓ$K×$RÑ$RÐSZÓ$[ˆNØ�J‰J× Ñ  ¨nÔ=Ø!Ð!à�
‰
×Ñ˜[¨$Ô/Ü˜7 ; -Ð/RÐSÓTÐTr.   )
Ú__name__Ú
__module__Ú__qualname__r   r&   Úboolr   r;   rI   Ú__classcell__)r,   s   @r-   r   r      sT   ø„ ð (GØ27ñ$Rà ™*ð$Rð %)¨4¡Kð$Rð 
õ	$RðL-UÀð -UÈÈtÉ÷ -Ur.   r   )r@   r   Útypingr   r"   Úlitellm._loggingr   Úlitellm.caching.cachingr   Úlitellm.constantsr   Ú/litellm.integrations.gcs_bucket.gcs_bucket_baser   Ú&litellm.llms.custom_httpx.http_handlerr   Úlitellm.proxy._typesr	   r
   r   © r.   r-   ú<module>rW      s3   ðÛ Û 	Ý ã Ý +Ý 1Ý =Ý IÝ Dß GôTU˜-õ TUr.   