11package  controllers
22
33import  (
4+ 	"context" 
45	"os" 
6+ 	"strconv" 
57
68	rayv1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1" 
9+ 	ctrl "sigs.k8s.io/controller-runtime" 
10+ 	"sigs.k8s.io/controller-runtime/pkg/client" 
11+ 	kueuev1beta1 "sigs.k8s.io/kueue/apis/kueue/v1beta1" 
712
813	corev1 "k8s.io/api/core/v1" 
914	networkingv1 "k8s.io/api/networking/v1" 
1015	"k8s.io/apimachinery/pkg/api/equality" 
16+ 	"k8s.io/apimachinery/pkg/api/meta" 
17+ 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 
1118	"k8s.io/apimachinery/pkg/util/intstr" 
1219	"k8s.io/apimachinery/pkg/util/validation/field" 
1320	v1 "k8s.io/client-go/applyconfigurations/meta/v1" 
@@ -17,10 +24,16 @@ import (
1724)
1825
1926var  (
20- 	CertGeneratorImage  =  getEnv ("CERT_GENERATOR_IMAGE" , "registry.redhat.io/ubi9@sha256:770cf07083e1c85ae69c25181a205b7cdef63c11b794c89b3b487d4670b4c328" )
21- 	OAuthProxyImage     =  getEnv ("OAUTH_PROXY_IMAGE" , "registry.redhat.io/openshift4/ose-oauth-proxy@sha256:1ea6a01bf3e63cdcf125c6064cbd4a4a270deaf0f157b3eabb78f60556840366" )
27+ 	CertGeneratorImage      =  getEnv ("CERT_GENERATOR_IMAGE" , "registry.redhat.io/ubi9@sha256:770cf07083e1c85ae69c25181a205b7cdef63c11b794c89b3b487d4670b4c328" )
28+ 	OAuthProxyImage         =  getEnv ("OAUTH_PROXY_IMAGE" , "registry.redhat.io/openshift4/ose-oauth-proxy@sha256:1ea6a01bf3e63cdcf125c6064cbd4a4a270deaf0f157b3eabb78f60556840366" )
29+ 	DefaultLocalQueueLabel  =  "kueue.x-k8s.io/default-queue" 
30+ 	LocalQueueLabel         =  "kueue.x-k8s.io/queue-name" 
2231)
2332
33+ type  HasMetadata  interface  {
34+ 	GetObjectMeta () * metav1.ObjectMeta 
35+ }
36+ 
2437func  getEnv (key , fallback  string ) string  {
2538	if  value , ok  :=  os .LookupEnv (key ); ok  {
2639		return  value 
@@ -172,3 +185,59 @@ func withEnvVarName(name string) compare[corev1.EnvVar] {
172185		return  e1 .Name  ==  name 
173186	}
174187}
188+ 
189+ func  withDefaultLocalQueue (ctx  context.Context , k8Obj  interface {}, c  client.Client ) error  {
190+ 	logger  :=  ctrl .LoggerFrom (ctx )
191+ 	metaAccessor , err  :=  meta .Accessor (k8Obj )
192+ 	if  err  !=  nil  {
193+ 		logger .Error (err , "Object does not have required metadata" )
194+ 		return  err 
195+ 	}
196+ 	// k8Meta := k8Obj.GetObjectMeta() 
197+ 	labels  :=  metaAccessor .GetLabels ()
198+ 	if  labels  ==  nil  {
199+ 		labels  =  make (map [string ]string )
200+ 	}
201+ 
202+ 	_ , ok  :=  labels [LocalQueueLabel ]
203+ 	if  ok  {
204+ 		return  nil 
205+ 	}
206+ 
207+ 	// for accessing default Kind and Version 
208+ 	emptyLocalQueue  :=  kueuev1beta1.LocalQueue {}
209+ 
210+ 	localQueueMetaList  :=  metav1.PartialObjectMetadataList {
211+ 		TypeMeta : metav1.TypeMeta {
212+ 			APIVersion : emptyLocalQueue .APIVersion ,
213+ 			Kind :       emptyLocalQueue .Kind ,
214+ 		},
215+ 	}
216+ 	err  =  c .List (ctx , & localQueueMetaList )
217+ 
218+ 	if  client .IgnoreNotFound (err ) !=  nil  {
219+ 		logger .Error (err , "Failed to list LocalQueues" )
220+ 		return  err 
221+ 	} else  if  err  !=  nil  {
222+ 		logger .Info ("LocalQueue CRD not found" )
223+ 		return  nil 
224+ 	}
225+ 
226+ 	for  _ , localQMeta  :=  range  localQueueMetaList .Items  {
227+ 		isDefault , ok  :=  localQMeta .Labels [DefaultLocalQueueLabel ]
228+ 		if  ! ok  {
229+ 			continue 
230+ 		}
231+ 		boolIsDefault , err  :=  strconv .ParseBool (isDefault )
232+ 		if  err  !=  nil  {
233+ 			logger .Error (err , "Failed to parse bool" )
234+ 			continue 
235+ 		}
236+ 		if  boolIsDefault  {
237+ 			labels [LocalQueueLabel ] =  localQMeta .Name 
238+ 			break 
239+ 		}
240+ 	}
241+ 	metaAccessor .SetLabels (labels )
242+ 	return  nil 
243+ }
0 commit comments