6
6
7
7
import json
8
8
import traceback
9
- from typing import Optional
9
+ from typing import List , Optional
10
10
11
11
from fastapi import APIRouter , Depends , Header , HTTPException , Request , status
12
12
@@ -102,66 +102,30 @@ async def add_team_callbacks(
102
102
103
103
# store team callback settings in metadata
104
104
team_metadata = _existing_team .metadata
105
- team_callback_settings = team_metadata .get ("callback_settings" , {})
106
- # expect callback settings to be
107
- team_callback_settings_obj = TeamCallbackMetadata (** team_callback_settings )
108
-
109
- if data .callback_type == "success" :
110
- if team_callback_settings_obj .success_callback is None :
111
- team_callback_settings_obj .success_callback = []
112
-
113
- if data .callback_name in team_callback_settings_obj .success_callback :
114
- raise ProxyException (
115
- message = f"callback_name = { data .callback_name } already exists in success_callback, for team_id = { team_id } . \n Existing failure_callback = { team_callback_settings_obj .success_callback } " ,
116
- code = status .HTTP_400_BAD_REQUEST ,
117
- type = ProxyErrorTypes .bad_request_error ,
118
- param = "callback_name" ,
119
- )
120
-
121
- team_callback_settings_obj .success_callback .append (data .callback_name )
122
- elif data .callback_type == "failure" :
123
- if team_callback_settings_obj .failure_callback is None :
124
- team_callback_settings_obj .failure_callback = []
125
-
126
- if data .callback_name in team_callback_settings_obj .failure_callback :
127
- raise ProxyException (
128
- message = f"callback_name = { data .callback_name } already exists in failure_callback, for team_id = { team_id } . \n Existing failure_callback = { team_callback_settings_obj .failure_callback } " ,
129
- code = status .HTTP_400_BAD_REQUEST ,
130
- type = ProxyErrorTypes .bad_request_error ,
131
- param = "callback_name" ,
132
- )
133
- team_callback_settings_obj .failure_callback .append (data .callback_name )
134
- elif data .callback_type == "success_and_failure" :
135
- if team_callback_settings_obj .success_callback is None :
136
- team_callback_settings_obj .success_callback = []
137
- if team_callback_settings_obj .failure_callback is None :
138
- team_callback_settings_obj .failure_callback = []
139
- if data .callback_name in team_callback_settings_obj .success_callback :
140
- raise ProxyException (
141
- message = f"callback_name = { data .callback_name } already exists in success_callback, for team_id = { team_id } . \n Existing success_callback = { team_callback_settings_obj .success_callback } " ,
142
- code = status .HTTP_400_BAD_REQUEST ,
143
- type = ProxyErrorTypes .bad_request_error ,
144
- param = "callback_name" ,
145
- )
146
-
147
- if data .callback_name in team_callback_settings_obj .failure_callback :
105
+ team_callback_settings : List [dict ] = team_metadata .get (
106
+ "logging"
107
+ ) # will be dict of type AddTeamCallback
108
+ if team_callback_settings is None or not isinstance (
109
+ team_callback_settings , list
110
+ ):
111
+ team_callback_settings = []
112
+
113
+ ## check if it already exists, for the same callback event
114
+ for callback in team_callback_settings :
115
+ if (
116
+ callback .get ("callback_name" ) == data .callback_name
117
+ and callback .get ("callback_type" ) == data .callback_type
118
+ ):
148
119
raise ProxyException (
149
- message = f"callback_name = { data .callback_name } already exists in failure_callback , for team_id = { team_id } . \n Existing failure_callback = { team_callback_settings_obj . failure_callback } " ,
120
+ message = f"callback_name = { data .callback_name } already exists in team_callback_settings , for team_id = { team_id } and event = { data . callback_type } " ,
150
121
code = status .HTTP_400_BAD_REQUEST ,
151
122
type = ProxyErrorTypes .bad_request_error ,
152
123
param = "callback_name" ,
153
124
)
154
125
155
- team_callback_settings_obj .success_callback .append (data .callback_name )
156
- team_callback_settings_obj .failure_callback .append (data .callback_name )
157
- for var , value in data .callback_vars .items ():
158
- if team_callback_settings_obj .callback_vars is None :
159
- team_callback_settings_obj .callback_vars = {}
160
- team_callback_settings_obj .callback_vars [var ] = value
161
-
162
- team_callback_settings_obj_dict = team_callback_settings_obj .model_dump ()
126
+ team_callback_settings .append (data .model_dump ())
163
127
164
- team_metadata ["callback_settings " ] = team_callback_settings_obj_dict
128
+ team_metadata ["logging " ] = team_callback_settings
165
129
team_metadata_json = json .dumps (team_metadata ) # update team_metadata
166
130
167
131
new_team_row = await prisma_client .db .litellm_teamtable .update (
@@ -178,7 +142,7 @@ async def add_team_callbacks(
178
142
except ProxyException as e :
179
143
raise e
180
144
except Exception as e :
181
- verbose_proxy_logger .error (
145
+ verbose_proxy_logger .exception (
182
146
"litellm.proxy.proxy_server.add_team_callbacks(): Exception occured - {}" .format (
183
147
str (e )
184
148
)
0 commit comments