@@ -39,6 +39,10 @@ func (m *CRDManager) AddCRDLabelToClusterMapping(labelValue string, cluster *clu
3939	m .crdLabelsToClusterMappings [labelValue ] =  cluster 
4040}
4141
42+ func  (m  * CRDManager ) SkipCRDsWithClusterLabel (labelValue  string ) {
43+ 	m .crdLabelsToClusterMappings [labelValue ] =  nil 
44+ }
45+ 
4246func  (m  * CRDManager ) CreateOrUpdateCRDs (ctx  context.Context , log  * logging.Logger ) error  {
4347	crds , err  :=  m .crdList ()
4448	if  err  !=  nil  {
@@ -48,14 +52,20 @@ func (m *CRDManager) CreateOrUpdateCRDs(ctx context.Context, log *logging.Logger
4852	var  errs  error 
4953
5054	for  _ , crd  :=  range  crds  {
51- 		c , err  :=  m .getClusterForCRD (crd )
55+ 		c , cLabel ,  err  :=  m .getClusterForCRD (crd )
5256		if  err  !=  nil  {
5357			errs  =  errors .Join (errs , err )
5458			continue 
5559		}
5660
61+ 		if  c  ==  nil  {
62+ 			if  log  !=  nil  {
63+ 				log .Info ("Skipping CRD because the assigned cluster is nil" , "name" , crd .Name , "clusterLabel" , cLabel )
64+ 			}
65+ 			continue 
66+ 		}
5767		if  log  !=  nil  {
58- 			log .Info ("creating /updating CRD" , "name" , crd .Name , "cluster" , c .ID ())
68+ 			log .Info ("Creating /updating CRD" , "name" , crd .Name , "cluster" , c .ID ())
5969		}
6070		m  :=  resources .NewCRDMutator (crd )
6171		m .MetadataMutator ().WithLabels (crd .Labels ).WithAnnotations (crd .Annotations )
@@ -69,18 +79,18 @@ func (m *CRDManager) CreateOrUpdateCRDs(ctx context.Context, log *logging.Logger
6979	return  nil 
7080}
7181
72- func  (m  * CRDManager ) getClusterForCRD (crd  * apiextv1.CustomResourceDefinition ) (* clusters.Cluster , error ) {
82+ func  (m  * CRDManager ) getClusterForCRD (crd  * apiextv1.CustomResourceDefinition ) (* clusters.Cluster , string ,  error ) {
7383	labelValue , ok  :=  controller .GetLabel (crd , m .mappingLabelName )
7484	if  ! ok  {
75- 		return  nil , fmt .Errorf ("missing label '%s' for CRD '%s'" , m .mappingLabelName , crd .Name )
85+ 		return  nil , "" ,  fmt .Errorf ("missing label '%s' for CRD '%s'" , m .mappingLabelName , crd .Name )
7686	}
7787
7888	cluster , ok  :=  m .crdLabelsToClusterMappings [labelValue ]
7989	if  ! ok  {
80- 		return  nil , fmt .Errorf ("no cluster mapping found for label value '%s' in CRD '%s'" , labelValue , crd .Name )
90+ 		return  nil , labelValue ,  fmt .Errorf ("no cluster mapping found for label value '%s' in CRD '%s'" , labelValue , crd .Name )
8191	}
8292
83- 	return  cluster , nil 
93+ 	return  cluster , labelValue ,  nil 
8494}
8595
8696// CRDsFromFileSystem reads CRDs from the specified filesystem path. 
0 commit comments