feat: complete crud endpoints for credential management on proxy

This commit is contained in:
Krrish Dholakia 2025-03-10 18:46:35 -07:00
parent 507640bc8f
commit 2ec7830b66

View file

@ -3,6 +3,7 @@ CRUD endpoints for storing reusable credentials.
""" """
import asyncio import asyncio
import json
import traceback import traceback
from typing import Optional from typing import Optional
@ -116,12 +117,17 @@ async def delete_credential(
credential_name: str, credential_name: str,
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
): ):
from litellm.proxy.proxy_server import prisma_client
try: try:
litellm.credential_list = [ if prisma_client is None:
credential raise HTTPException(
for credential in litellm.credential_list status_code=500,
if credential.credential_name != credential_name detail={"error": CommonProxyErrors.db_not_connected_error.value},
] )
await prisma_client.db.litellm_credentialstable.delete(
where={"credential_name": credential_name}
)
return {"success": True, "message": "Credential deleted successfully"} return {"success": True, "message": "Credential deleted successfully"}
except Exception as e: except Exception as e:
return handle_exception_on_proxy(e) return handle_exception_on_proxy(e)
@ -139,11 +145,22 @@ async def update_credential(
credential: CredentialItem, credential: CredentialItem,
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
): ):
from litellm.proxy.proxy_server import prisma_client
try: try:
for i, c in enumerate(litellm.credential_list): if prisma_client is None:
if c.credential_name == credential_name: raise HTTPException(
litellm.credential_list[i] = credential status_code=500,
return {"success": True, "message": "Credential updated successfully"} detail={"error": CommonProxyErrors.db_not_connected_error.value},
return {"success": False, "message": "Credential not found"} )
credential_object_jsonified = jsonify_object(credential.model_dump())
await prisma_client.db.litellm_credentialstable.update(
where={"credential_name": credential_name},
data={
**credential_object_jsonified,
"updated_by": user_api_key_dict.user_id,
},
)
return {"success": True, "message": "Credential updated successfully"}
except Exception as e: except Exception as e:
return handle_exception_on_proxy(e) return handle_exception_on_proxy(e)