2424 ErrJobValidationFailed = errors .New ("validation failed" )
2525)
2626
27- func (m * ModelRegistryRepository ) GetAllModelTransferJobs (ctx context.Context , client k8s.KubernetesClientInterface , namespace string ) (* models.ModelTransferJobList , error ) {
28- jobList , err := client .GetAllModelTransferJobs (ctx , namespace )
27+ func (m * ModelRegistryRepository ) GetAllModelTransferJobs (ctx context.Context , client k8s.KubernetesClientInterface , namespace string , modelRegistryID string ) (* models.ModelTransferJobList , error ) {
28+ if modelRegistryID == "" {
29+ return & models.ModelTransferJobList {Items : nil , Size : 0 , PageSize : 0 }, nil
30+ }
31+
32+ jobList , err := client .GetAllModelTransferJobs (ctx , namespace , modelRegistryID )
2933 if err != nil {
3034 return nil , fmt .Errorf ("failed to fetch model transfer jobs: %w" , err )
3135 }
@@ -107,7 +111,7 @@ func (m *ModelRegistryRepository) createModelTransferJobResources(
107111 }
108112 }
109113
110- job := buildK8sJob (jobName , namespace , jobID , payload , configMapName , sourceSecretName , destSecretName , modelRegistryAddress )
114+ job := buildK8sJob (jobName , namespace , jobID , payload , configMapName , sourceSecretName , destSecretName , modelRegistryAddress , modelRegistryID )
111115 if err := client .CreateModelTransferJob (ctx , namespace , job ); err != nil {
112116 cleanupCreatedResources (ctx , client , namespace , configMapName , sourceSecretName , destSecretName )
113117 if apierrors .IsAlreadyExists (err ) {
@@ -195,6 +199,11 @@ func (m *ModelRegistryRepository) UpdateModelTransferJob(
195199 oldAnnotations = map [string ]string {}
196200 }
197201
202+ jobRegistry := oldJob .Labels ["modelregistry.kubeflow.org/model-registry-name" ]
203+ if jobRegistry != modelRegistryID {
204+ return nil , fmt .Errorf ("%w: %s" , ErrJobNotFound , oldJobName )
205+ }
206+
198207 oldConfigMapName := oldAnnotations ["modelregistry.kubeflow.org/configmap-name" ]
199208 if oldConfigMapName == "" {
200209 return nil , fmt .Errorf ("old job missing required annotation: configmap-name (job may not have been created via this API)" )
@@ -334,7 +343,10 @@ func (m *ModelRegistryRepository) UpdateModelTransferJob(
334343 return result , err
335344}
336345
337- func (m * ModelRegistryRepository ) DeleteModelTransferJob (ctx context.Context , client k8s.KubernetesClientInterface , namespace string , jobName string ) (* models.ModelTransferJob , error ) {
346+ func (m * ModelRegistryRepository ) DeleteModelTransferJob (ctx context.Context , client k8s.KubernetesClientInterface , namespace string , jobName string , modelRegistryID string ) (* models.ModelTransferJob , error ) {
347+ if modelRegistryID == "" {
348+ return nil , fmt .Errorf ("%w: model registry name is required" , ErrJobNotFound )
349+ }
338350 job , err := client .GetModelTransferJob (ctx , namespace , jobName )
339351 if err != nil {
340352 if apierrors .IsNotFound (err ) {
@@ -343,6 +355,11 @@ func (m *ModelRegistryRepository) DeleteModelTransferJob(ctx context.Context, cl
343355 return nil , fmt .Errorf ("failed to get job: %w" , err )
344356 }
345357
358+ jobRegistry := job .Labels ["modelregistry.kubeflow.org/model-registry-name" ]
359+ if jobRegistry != modelRegistryID {
360+ return nil , fmt .Errorf ("%w: %s" , ErrJobNotFound , jobName )
361+ }
362+
346363 if err := client .DeleteModelTransferJob (ctx , namespace , jobName ); err != nil {
347364 if apierrors .IsNotFound (err ) {
348365 return nil , fmt .Errorf ("%w: %s" , ErrJobNotFound , jobName )
@@ -363,7 +380,7 @@ func (m *ModelRegistryRepository) getModelRegistryAddress(ctx context.Context, c
363380}
364381
365382func buildK8sJob (jobName , namespace , jobID string , payload models.ModelTransferJob ,
366- configMapName , sourceSecretName , destSecretName , modelRegistryAddress string ) * batchv1.Job {
383+ configMapName , sourceSecretName , destSecretName , modelRegistryAddress , modelRegistryID string ) * batchv1.Job {
367384
368385 backoffLimit := int32 (3 )
369386 baseImage := models .DefaultOCIBaseImage
@@ -449,21 +466,24 @@ func buildK8sJob(jobName, namespace, jobID string, payload models.ModelTransferJ
449466 annotations ["modelregistry.kubeflow.org/source-bucket" ] = payload .Source .Bucket
450467 annotations ["modelregistry.kubeflow.org/source-key" ] = payload .Source .Key
451468 annotations ["modelregistry.kubeflow.org/source-secret" ] = sourceSecretName
469+ annotations ["modelregistry.kubeflow.org/model-registry-name" ] = modelRegistryID
452470
453471 case models .ModelTransferJobSourceTypeURI :
454472 envVars = append (envVars ,
455473 corev1.EnvVar {Name : "MODEL_SYNC_SOURCE_URI" , Value : payload .Source .URI },
456474 )
457475 annotations ["modelregistry.kubeflow.org/source-uri" ] = payload .Source .URI
476+ annotations ["modelregistry.kubeflow.org/model-registry-name" ] = modelRegistryID
458477 }
459478
460479 return & batchv1.Job {
461480 ObjectMeta : metav1.ObjectMeta {
462481 Name : jobName ,
463482 Namespace : namespace ,
464483 Labels : map [string ]string {
465- "modelregistry.kubeflow.org/job-type" : "async-upload" ,
466- "modelregistry.kubeflow.org/job-id" : jobID ,
484+ "modelregistry.kubeflow.org/job-type" : "async-upload" ,
485+ "modelregistry.kubeflow.org/job-id" : jobID ,
486+ "modelregistry.kubeflow.org/model-registry-name" : modelRegistryID ,
467487 },
468488 Annotations : annotations ,
469489 },
@@ -606,6 +626,16 @@ func buildModelMetadataConfigMap(name, namespace string, payload models.ModelTra
606626}
607627
608628func buildSourceSecret (name , namespace string , payload models.ModelTransferJob , jobID string ) * corev1.Secret {
629+ stringData := map [string ]string {
630+ "AWS_ACCESS_KEY_ID" : payload .Source .AwsAccessKeyId ,
631+ "AWS_SECRET_ACCESS_KEY" : payload .Source .AwsSecretAccessKey ,
632+ "AWS_S3_ENDPOINT" : payload .Source .Endpoint ,
633+ "AWS_S3_BUCKET" : payload .Source .Bucket ,
634+ }
635+
636+ if payload .Source .Region != "" {
637+ stringData ["AWS_DEFAULT_REGION" ] = payload .Source .Region
638+ }
609639 return & corev1.Secret {
610640 ObjectMeta : metav1.ObjectMeta {
611641 Name : name ,
@@ -615,14 +645,8 @@ func buildSourceSecret(name, namespace string, payload models.ModelTransferJob,
615645 "modelregistry.kubeflow.org/job-id" : jobID ,
616646 },
617647 },
618- Type : corev1 .SecretTypeOpaque ,
619- StringData : map [string ]string {
620- "AWS_ACCESS_KEY_ID" : payload .Source .AwsAccessKeyId ,
621- "AWS_SECRET_ACCESS_KEY" : payload .Source .AwsSecretAccessKey ,
622- "AWS_DEFAULT_REGION" : payload .Source .Region ,
623- "AWS_S3_ENDPOINT" : payload .Source .Endpoint ,
624- "AWS_S3_BUCKET" : payload .Source .Bucket ,
625- },
648+ Type : corev1 .SecretTypeOpaque ,
649+ StringData : stringData ,
626650 }
627651}
628652
0 commit comments