Skip to content

Commit da52641

Browse files
mprahlopenshift-merge-robot
authored andcommitted
Adjust the error to check for the ConstraintTemplate CRD missing
After updating to controller-runtime 0.15, it seems that a different error is returned when a CRD is missing, so it caused an API server hit every time the policy template sync controller reconciled. This uses the new error. Relates: stolostron/backlog#27375 Signed-off-by: mprahl <[email protected]>
1 parent 03bd852 commit da52641

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

controllers/templatesync/template_sync.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
extensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
2222
"k8s.io/apimachinery/pkg/api/equality"
2323
k8serrors "k8s.io/apimachinery/pkg/api/errors"
24-
"k8s.io/apimachinery/pkg/api/meta"
2524
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2625
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2726
"k8s.io/apimachinery/pkg/labels"
@@ -49,7 +48,10 @@ const (
4948
ControllerName string = "policy-template-sync"
5049
)
5150

52-
var log = ctrl.Log.WithName(ControllerName)
51+
var (
52+
log = ctrl.Log.WithName(ControllerName)
53+
errGroupDiscoveryFailed *discovery.ErrGroupDiscoveryFailed
54+
)
5355

5456
//+kubebuilder:rbac:groups=policy.open-cluster-management.io,resources=*,verbs=get;list;watch;create;update;patch;delete
5557
//+kubebuilder:rbac:groups=templates.gatekeeper.sh,resources=constrainttemplates,verbs=get;list;watch;create;update;patch;delete
@@ -995,7 +997,7 @@ func (r *PolicyReconciler) cleanUpExcessTemplates(
995997
namespaced: false,
996998
})
997999
}
998-
} else if meta.IsNoMatchError(err) {
1000+
} else if errors.As(err, &errGroupDiscoveryFailed) {
9991001
// If there's no v1 ConstraintTemplate, try the v1beta1 version
10001002
gkConstraintTemplateListv1beta1 := gktemplatesv1beta1.ConstraintTemplateList{}
10011003
err := r.List(ctx, &gkConstraintTemplateListv1beta1, &client.ListOptions{})
@@ -1026,7 +1028,7 @@ func (r *PolicyReconciler) cleanUpExcessTemplates(
10261028
})
10271029
}
10281030
// Log and ignore other errors to allow cleanup to continue since Gatekeeper may not be installed
1029-
} else if meta.IsNoMatchError(err) {
1031+
} else if errors.As(err, &errGroupDiscoveryFailed) {
10301032
reqLogger.Info("The ConstraintTemplate CRD is not installed")
10311033
r.setCreatedGkConstraint(false)
10321034
} else {
@@ -1059,7 +1061,7 @@ func (r *PolicyReconciler) cleanUpExcessTemplates(
10591061
})
10601062
}
10611063
}
1062-
} else if meta.IsNoMatchError(err) {
1064+
} else if errors.As(err, &errGroupDiscoveryFailed) {
10631065
crdsv1beta1 := extensionsv1beta1.CustomResourceDefinitionList{}
10641066
err := r.List(ctx, &crdsv1beta1, &crdQuery)
10651067
if err != nil {
@@ -1427,7 +1429,7 @@ func (r *PolicyReconciler) hasPolicyTemplateLabel(
14271429
err := r.Get(ctx, crdName, &crd)
14281430
if err == nil {
14291431
return crd.GetLabels()[utils.PolicyTypeLabel] == "template", nil
1430-
} else if meta.IsNoMatchError(err) {
1432+
} else if errors.As(err, &errGroupDiscoveryFailed) {
14311433
betaCrd := extensionsv1beta1.CustomResourceDefinition{}
14321434

14331435
err = r.Get(ctx, crdName, &betaCrd)

0 commit comments

Comments
 (0)