@@ -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