mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 18:54:30 +00:00
fix(endpoints.py): update credentials should update before storing
This commit is contained in:
parent
fc0d21794d
commit
6629354329
2 changed files with 47 additions and 3 deletions
|
@ -164,7 +164,45 @@ async def delete_credential(
|
|||
return handle_exception_on_proxy(e)
|
||||
|
||||
|
||||
@router.put(
|
||||
def update_db_credential(
|
||||
db_credential: CredentialItem, updated_patch: CredentialItem
|
||||
) -> CredentialItem:
|
||||
"""
|
||||
Update a credential in the DB.
|
||||
"""
|
||||
merged_credential = CredentialItem(
|
||||
credential_name=db_credential.credential_name,
|
||||
credential_info=db_credential.credential_info,
|
||||
credential_values=db_credential.credential_values,
|
||||
)
|
||||
|
||||
encrypted_credential = CredentialHelperUtils.encrypt_credential_values(
|
||||
updated_patch
|
||||
)
|
||||
# update model name
|
||||
if encrypted_credential.credential_name:
|
||||
merged_credential.credential_name = encrypted_credential.credential_name
|
||||
|
||||
# update litellm params
|
||||
if encrypted_credential.credential_values:
|
||||
# Encrypt any sensitive values
|
||||
encrypted_params = {
|
||||
k: v for k, v in encrypted_credential.credential_values.items()
|
||||
}
|
||||
|
||||
merged_credential.credential_values.update(encrypted_params)
|
||||
|
||||
# update model info
|
||||
if encrypted_credential.credential_info:
|
||||
"""Update credential info"""
|
||||
if "credential_info" not in merged_credential.credential_info:
|
||||
merged_credential.credential_info = {}
|
||||
merged_credential.credential_info.update(encrypted_credential.credential_info)
|
||||
|
||||
return merged_credential
|
||||
|
||||
|
||||
@router.patch(
|
||||
"/credentials/{credential_name}",
|
||||
dependencies=[Depends(user_api_key_auth)],
|
||||
tags=["credential management"],
|
||||
|
@ -187,7 +225,13 @@ async def update_credential(
|
|||
status_code=500,
|
||||
detail={"error": CommonProxyErrors.db_not_connected_error.value},
|
||||
)
|
||||
credential_object_jsonified = jsonify_object(credential.model_dump())
|
||||
db_credential = await prisma_client.db.litellm_credentialstable.find_unique(
|
||||
where={"credential_name": credential_name},
|
||||
)
|
||||
if db_credential is None:
|
||||
raise HTTPException(status_code=404, detail="Credential not found in DB.")
|
||||
merged_credential = update_db_credential(db_credential, credential)
|
||||
credential_object_jsonified = jsonify_object(merged_credential.model_dump())
|
||||
await prisma_client.db.litellm_credentialstable.update(
|
||||
where={"credential_name": credential_name},
|
||||
data={
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue