mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 11:14:04 +00:00
fix(endpoints.py): update credentials should update before storing
This commit is contained in:
parent
7d7b57e3b2
commit
a4b4746a44
2 changed files with 47 additions and 3 deletions
|
@ -164,7 +164,45 @@ async def delete_credential(
|
||||||
return handle_exception_on_proxy(e)
|
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}",
|
"/credentials/{credential_name}",
|
||||||
dependencies=[Depends(user_api_key_auth)],
|
dependencies=[Depends(user_api_key_auth)],
|
||||||
tags=["credential management"],
|
tags=["credential management"],
|
||||||
|
@ -187,7 +225,13 @@ async def update_credential(
|
||||||
status_code=500,
|
status_code=500,
|
||||||
detail={"error": CommonProxyErrors.db_not_connected_error.value},
|
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(
|
await prisma_client.db.litellm_credentialstable.update(
|
||||||
where={"credential_name": credential_name},
|
where={"credential_name": credential_name},
|
||||||
data={
|
data={
|
||||||
|
|
|
@ -2698,7 +2698,7 @@ export const credentialUpdateCall = async (
|
||||||
|
|
||||||
const url = proxyBaseUrl ? `${proxyBaseUrl}/credentials/${credentialName}` : `/credentials/${credentialName}`;
|
const url = proxyBaseUrl ? `${proxyBaseUrl}/credentials/${credentialName}` : `/credentials/${credentialName}`;
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: "PUT",
|
method: "PATCH",
|
||||||
headers: {
|
headers: {
|
||||||
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
[globalLitellmHeaderName]: `Bearer ${accessToken}`,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue