fix(endpoints.py): update credentials should update before storing

This commit is contained in:
Krrish Dholakia 2025-03-14 10:42:17 -07:00
parent fc0d21794d
commit 6629354329
2 changed files with 47 additions and 3 deletions

View file

@ -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={