@@ -263,7 +263,10 @@ async def create_gateway(
263263 default_gateway = await get_project_default_gateway_model (session = session , project = project )
264264 if default_gateway is None or configuration .default :
265265 await set_default_gateway (
266- session = session , project = project , name = configuration .name , user = user
266+ session = session ,
267+ project = project ,
268+ ref = EntityReference (name = configuration .name , project = None ),
269+ user = user ,
267270 )
268271 default_gateway = gateway
269272 pipeline_hinter .hint_fetch (GatewayModel .__name__ )
@@ -394,18 +397,18 @@ async def set_gateway_wildcard_domain(
394397
395398
396399async def set_default_gateway (
397- session : AsyncSession , project : ProjectModel , name : str , user : Optional [UserModel ]
400+ session : AsyncSession , project : ProjectModel , ref : EntityReference , user : Optional [UserModel ]
398401):
399402 gateway = await get_project_gateway_model_by_reference (
400- session = session , project = project , ref = EntityReference ( name = name , project = None )
403+ session = session , project = project , ref = ref
401404 )
402405 if gateway is None :
403406 raise ResourceNotExistsError ()
404407 if gateway .to_be_deleted :
405408 raise ServerClientError ("Cannot set gateway marked for deletion as default" )
406- if project .default_gateway_id == gateway .id :
407- return
408409 previous_gateway = await get_project_default_gateway_model (session , project )
410+ if previous_gateway is not None and previous_gateway .id == gateway .id :
411+ return
409412 await session .execute (
410413 update (ProjectModel )
411414 .where (
@@ -418,15 +421,21 @@ async def set_default_gateway(
418421 if previous_gateway is not None :
419422 events .emit (
420423 session ,
421- "Gateway unset as default" ,
424+ "Gateway unset as project default" ,
422425 actor = events .UserActor .from_user (user ) if user is not None else events .SystemActor (),
423- targets = [events .Target .from_model (previous_gateway )],
426+ targets = [
427+ events .Target .from_model (previous_gateway ),
428+ events .Target .from_model (project ),
429+ ],
424430 )
425431 events .emit (
426432 session ,
427- "Gateway set as default" ,
433+ "Gateway set as project default" ,
428434 actor = events .UserActor .from_user (user ) if user is not None else events .SystemActor (),
429- targets = [events .Target .from_model (gateway )],
435+ targets = [
436+ events .Target .from_model (gateway ),
437+ events .Target .from_model (project ),
438+ ],
430439 )
431440 await session .commit ()
432441
@@ -531,6 +540,14 @@ async def get_project_default_gateway_model(
531540 stmt = select (GatewayModel ).where (
532541 GatewayModel .id == project .default_gateway_id ,
533542 GatewayModel .to_be_deleted == False ,
543+ or_ (
544+ GatewayModel .project_id == project .id ,
545+ exists ().where (
546+ ImportModel .project_id == project .id ,
547+ ImportModel .export_id == ExportedGatewayModel .export_id ,
548+ ExportedGatewayModel .gateway_id == GatewayModel .id ,
549+ ),
550+ ),
534551 )
535552 if load_gateway_compute :
536553 stmt = stmt .options (joinedload (GatewayModel .gateway_compute ))
0 commit comments