o
    ưi^                     @   s   d dl Z d dlmZmZmZ d dlZ								ddee dee dee dee dee dee d	ee d
eeeejf  fddZ		ddee defddZ
dS )    N)AnyOptionalUnionaws_access_key_idaws_secret_access_keyaws_region_nameaws_session_nameaws_profile_nameaws_role_nameaws_web_identity_tokentimeoutc                 C   sH  ddl m} |dd }	|dd }
| ||||||g}t|D ]\}}|r.|dr.||||< q|\} }}}}}}|}|r?|}n|	rD|	}n	|
rI|
}ntddd l}t|tr_|jj	||d}nt|t
jrp|jj	|j|jd}n|j	 }|d ur|d ur|d urzt| }W n ty   ||}Y nw |d u rtd|d	}|j|||d
d}|jd|d d |d d |d d ||d}|S |d ur|d ur|jd	| |d}|j||d}|jd|d d |d d |d d ||d}|S | d ur|jd| |||d}|S |d ur|j|djd||d}|S |jd||d}|S )Nr   )
get_secretAWS_REGION_NAMEZ
AWS_REGIONzos.environ/zRAWS region not set: set AWS_REGION_NAME or AWS_REGION env variable or in .env file)connect_timeoutread_timeoutz6OIDC token could not be retrieved from secret manager.stsi  )RoleArnRoleSessionNameZWebIdentityTokenZDurationSecondsZrdsCredentialsZAccessKeyIdZSecretAccessKeyZSessionToken)service_namer   r   Zaws_session_tokenregion_nameconfig)r   r   )r   r   )r   r   r   r   r   )Zprofile_name)r   r   r   )Zlitellm.secret_managers.mainr   	enumerate
startswith	Exceptionboto3
isinstancefloatsessionZConfighttpxTimeoutconnectreadopenclientZassume_role_with_web_identityZassume_roleSession)r   r   r   r   r	   r
   r   r   r   Zlitellm_aws_region_nameZstandard_aws_region_nameZparams_to_checkiparamr   r   r   Z
oidc_tokenZ
sts_clientZsts_responser$    r(   W/home/app/Keep/.python/lib/python3.10/site-packages/litellm/proxy/auth/rds_iam_token.pyinit_rds_client   s   









;


&

r*   r$   returnc                 C   s   ddl m} |d u r3ttdtdtdtdtdtdtd	td
tdd}n|}|j| ||d}||dd}|S )Nr   )quoter   ZAWS_ACCESS_KEY_IDZAWS_SECRET_ACCESS_KEYZAWS_SESSION_NAMEZAWS_PROFILE_NAMEZAWS_ROLE_NAMEZAWS_ROLE_ARNZAWS_WEB_IDENTITY_TOKENZAWS_WEB_IDENTITY_TOKEN_FILE)r   r   r   r   r	   r
   r   )Z
DBHostnameZPortZ
DBUsername )safe)urllib.parser,   r*   osgetenvZgenerate_db_auth_token)Zdb_hostZdb_portZdb_userr$   r,   Zboto_clienttokenZcleaned_tokenr(   r(   r)   generate_iam_auth_token   s&   
r3   )NNNNNNNN)N)r0   typingr   r   r   r   strr   r    r*   r3   r(   r(   r(   r)   <module>   sF    
 