diff --git a/pkg/controller/constrainttemplate/constrainttemplate_controller.go b/pkg/controller/constrainttemplate/constrainttemplate_controller.go index ea6bd4d9263..1feec07e74a 100644 --- a/pkg/controller/constrainttemplate/constrainttemplate_controller.go +++ b/pkg/controller/constrainttemplate/constrainttemplate_controller.go @@ -42,6 +42,7 @@ import ( "k8s.io/apimachinery/pkg/util/wait" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/handler" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" @@ -118,6 +119,18 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error { return err } + // Watch for changes to ConstraintTemplate CRDs + err = c.Watch( + &source.Kind{Type: &apiextensionsv1beta1.CustomResourceDefinition{}}, + &handler.EnqueueRequestForOwner{ + OwnerType: &v1beta1.ConstraintTemplate{}, + IsController: true, + }, + ) + if err != nil { + return err + } + return nil } @@ -290,6 +303,9 @@ func (r *ReconcileConstraintTemplate) handleCreate( log.Error(err, "conversion error") return reconcile.Result{}, err } + if err := controllerutil.SetControllerReference(instance, crdv1beta1, r.scheme); err != nil { + return reconcile.Result{}, err + } if err := r.Create(context.TODO(), crdv1beta1); err != nil { status := util.GetCTHAStatus(instance) status.Errors = []*v1beta1.CreateCRDError{} @@ -360,6 +376,9 @@ func (r *ReconcileConstraintTemplate) handleUpdate( log.Error(err, "conversion error") return reconcile.Result{}, err } + if err := controllerutil.SetControllerReference(instance, crdv1beta1, r.scheme); err != nil { + return reconcile.Result{}, err + } if err := r.Update(context.Background(), crdv1beta1); err != nil { return reconcile.Result{}, err }