6464 CeleryTaskQueueGateway ,
6565 DatadogMonitoringMetricsGateway ,
6666 FakeMonitoringMetricsGateway ,
67+ GCSFileStorageGateway ,
68+ GCSFilesystemGateway ,
69+ GCSLLMArtifactGateway ,
6770 LiveAsyncModelEndpointInferenceGateway ,
6871 LiveBatchJobOrchestrationGateway ,
6972 LiveBatchJobProgressGateway ,
100103from model_engine_server .infra .gateways .resources .queue_endpoint_resource_delegate import (
101104 QueueEndpointResourceDelegate ,
102105)
106+ from model_engine_server .infra .gateways .resources .redis_queue_endpoint_resource_delegate import (
107+ RedisQueueEndpointResourceDelegate ,
108+ )
103109from model_engine_server .infra .gateways .resources .sqs_queue_endpoint_resource_delegate import (
104110 SQSQueueEndpointResourceDelegate ,
105111)
115121 DbTriggerRepository ,
116122 ECRDockerRepository ,
117123 FakeDockerRepository ,
124+ GARDockerRepository ,
125+ GCSFileLLMFineTuneEventsRepository ,
126+ GCSFileLLMFineTuneRepository ,
118127 LiveTokenizerRepository ,
119128 LLMFineTuneRepository ,
120129 OnPremDockerRepository ,
@@ -224,13 +233,18 @@ def _get_external_interfaces(
224233 read_only = read_only ,
225234 )
226235
236+ redis_client = aioredis .Redis (connection_pool = get_or_create_aioredis_pool ())
237+
227238 queue_delegate : QueueEndpointResourceDelegate
228239 if CIRCLECI :
229240 queue_delegate = FakeQueueEndpointResourceDelegate ()
230241 elif infra_config ().cloud_provider == "onprem" :
231242 queue_delegate = OnPremQueueEndpointResourceDelegate ()
232243 elif infra_config ().cloud_provider == "azure" :
233244 queue_delegate = ASBQueueEndpointResourceDelegate ()
245+ elif infra_config ().cloud_provider == "gcp" :
246+ # GCP uses Redis (Memorystore) for Celery, so use Redis-based queue delegate
247+ queue_delegate = RedisQueueEndpointResourceDelegate (redis_client = redis_client )
234248 else :
235249 queue_delegate = SQSQueueEndpointResourceDelegate (
236250 sqs_profile = os .getenv ("SQS_PROFILE" , hmi_config .sqs_profile )
@@ -245,13 +259,13 @@ def _get_external_interfaces(
245259 elif infra_config ().cloud_provider == "azure" :
246260 inference_task_queue_gateway = servicebus_task_queue_gateway
247261 infra_task_queue_gateway = servicebus_task_queue_gateway
248- elif infra_config ().celery_broker_type_redis :
262+ elif infra_config ().cloud_provider == "gcp" or infra_config ().celery_broker_type_redis :
263+ # GCP uses Redis (Memorystore) for Celery broker
249264 inference_task_queue_gateway = redis_task_queue_gateway
250265 infra_task_queue_gateway = redis_task_queue_gateway
251266 else :
252267 inference_task_queue_gateway = sqs_task_queue_gateway
253268 infra_task_queue_gateway = sqs_task_queue_gateway
254- redis_client = aioredis .Redis (connection_pool = get_or_create_aioredis_pool ())
255269 inference_autoscaling_metrics_gateway = (
256270 ASBInferenceAutoscalingMetricsGateway ()
257271 if infra_config ().cloud_provider == "azure"
@@ -286,6 +300,9 @@ def _get_external_interfaces(
286300 if infra_config ().cloud_provider == "azure" :
287301 filesystem_gateway = ABSFilesystemGateway ()
288302 llm_artifact_gateway = ABSLLMArtifactGateway ()
303+ elif infra_config ().cloud_provider == "gcp" :
304+ filesystem_gateway = GCSFilesystemGateway ()
305+ llm_artifact_gateway = GCSLLMArtifactGateway ()
289306 else :
290307 # AWS uses S3, on-prem uses MinIO (S3-compatible)
291308 filesystem_gateway = S3FilesystemGateway ()
@@ -337,6 +354,11 @@ def _get_external_interfaces(
337354 if infra_config ().cloud_provider == "azure" :
338355 llm_fine_tune_repository = ABSFileLLMFineTuneRepository (file_path = file_path )
339356 llm_fine_tune_events_repository = ABSFileLLMFineTuneEventsRepository ()
357+ elif infra_config ().cloud_provider == "gcp" :
358+ llm_fine_tune_repository = GCSFileLLMFineTuneRepository (
359+ file_path = file_path ,
360+ )
361+ llm_fine_tune_events_repository = GCSFileLLMFineTuneEventsRepository ()
340362 else :
341363 # AWS uses S3, on-prem uses MinIO (S3-compatible)
342364 llm_fine_tune_repository = S3FileLLMFineTuneRepository (file_path = file_path )
@@ -354,6 +376,8 @@ def _get_external_interfaces(
354376 file_storage_gateway : FileStorageGateway
355377 if infra_config ().cloud_provider == "azure" :
356378 file_storage_gateway = ABSFileStorageGateway ()
379+ elif infra_config ().cloud_provider == "gcp" :
380+ file_storage_gateway = GCSFileStorageGateway ()
357381 else :
358382 # AWS uses S3, on-prem uses MinIO (S3-compatible)
359383 file_storage_gateway = S3FileStorageGateway ()
@@ -365,6 +389,8 @@ def _get_external_interfaces(
365389 docker_repository = OnPremDockerRepository ()
366390 elif infra_config ().cloud_provider == "azure" :
367391 docker_repository = ACRDockerRepository ()
392+ elif infra_config ().cloud_provider == "gcp" :
393+ docker_repository = GARDockerRepository ()
368394 else :
369395 docker_repository = ECRDockerRepository ()
370396
@@ -417,11 +443,13 @@ async def get_external_interfaces():
417443 try :
418444 from plugins .dependencies import get_external_interfaces as get_custom_external_interfaces
419445
420- yield get_custom_external_interfaces ()
446+ ei = get_custom_external_interfaces ()
421447 except ModuleNotFoundError :
422- yield get_default_external_interfaces ()
448+ ei = get_default_external_interfaces ()
449+ try :
450+ yield ei
423451 finally :
424- pass
452+ await ei . file_storage_gateway . close ()
425453
426454
427455async def get_external_interfaces_read_only ():
@@ -430,11 +458,13 @@ async def get_external_interfaces_read_only():
430458 get_external_interfaces_read_only as get_custom_external_interfaces_read_only ,
431459 )
432460
433- yield get_custom_external_interfaces_read_only ()
461+ ei = get_custom_external_interfaces_read_only ()
434462 except ModuleNotFoundError :
435- yield get_default_external_interfaces_read_only ()
463+ ei = get_default_external_interfaces_read_only ()
464+ try :
465+ yield ei
436466 finally :
437- pass
467+ await ei . file_storage_gateway . close ()
438468
439469
440470def get_default_auth_repository () -> AuthenticationRepository :
0 commit comments