diff --git a/pkg/reconciler/kubernetes/tektoninstallerset/tektoninstallerset.go b/pkg/reconciler/kubernetes/tektoninstallerset/tektoninstallerset.go index fd8f5aec88..373de1be48 100644 --- a/pkg/reconciler/kubernetes/tektoninstallerset/tektoninstallerset.go +++ b/pkg/reconciler/kubernetes/tektoninstallerset/tektoninstallerset.go @@ -54,9 +54,10 @@ func (r *Reconciler) FinalizeKind(ctx context.Context, installerSet *v1alpha1.Te return err } - // Delete all resources except CRDs as they are own by owner of + // Delete all resources except CRDs and Namespace as they are own by owner of // TektonInstallerSet - err = deleteManifests.Filter(mf.Not(mf.CRDs)).Delete() + // They will be deleted when the component CR is deleted + err = deleteManifests.Filter(mf.Not(mf.Any(namespacePred, mf.CRDs))).Delete() if err != nil { logger.Error("failed to delete resources") return err @@ -84,14 +85,14 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, installerSet *v1alpha1.T } // Set owner of InstallerSet as owner of CRDs so that - // deleting the installer will not delete the CRDs - // If installerSet has not set any owner then crds will + // deleting the installer will not delete the CRDs and Namespace + // If installerSet has not set any owner then CRDs will // not have any owner installerSetOwner := installerSet.GetOwnerReferences() installManifests, err = installManifests.Transform( injectOwner(getReference(installerSet)), - injectOwnerForCRDs(installerSetOwner), + injectOwnerForCRDsAndNamespace(installerSetOwner), ) if err != nil { logger.Error("failed to transform manifest") diff --git a/pkg/reconciler/kubernetes/tektoninstallerset/transformer.go b/pkg/reconciler/kubernetes/tektoninstallerset/transformer.go index 4a033c571c..546b854358 100644 --- a/pkg/reconciler/kubernetes/tektoninstallerset/transformer.go +++ b/pkg/reconciler/kubernetes/tektoninstallerset/transformer.go @@ -27,7 +27,8 @@ func injectOwner(owner []v1.OwnerReference) mf.Transformer { kind := u.GetKind() if kind == "CustomResourceDefinition" || kind == "ValidatingWebhookConfiguration" || - kind == "MutatingWebhookConfiguration" { + kind == "MutatingWebhookConfiguration" || + kind == "Namespace" { return nil } u.SetOwnerReferences(owner) @@ -35,12 +36,14 @@ func injectOwner(owner []v1.OwnerReference) mf.Transformer { } } -func injectOwnerForCRDs(owner []v1.OwnerReference) mf.Transformer { +func injectOwnerForCRDsAndNamespace(owner []v1.OwnerReference) mf.Transformer { if len(owner) == 0 { return func(u *unstructured.Unstructured) error { return nil } } return func(u *unstructured.Unstructured) error { - if u.GetKind() != "CustomResourceDefinition" { + kind := u.GetKind() + if kind != "CustomResourceDefinition" && + kind != "Namespace" { return nil } u.SetOwnerReferences(owner) diff --git a/pkg/reconciler/kubernetes/tektoninstallerset/transformers_test.go b/pkg/reconciler/kubernetes/tektoninstallerset/transformers_test.go index 18e900a1ee..cc3554d8a9 100644 --- a/pkg/reconciler/kubernetes/tektoninstallerset/transformers_test.go +++ b/pkg/reconciler/kubernetes/tektoninstallerset/transformers_test.go @@ -39,7 +39,7 @@ func TestInjectOwner_CRDs(t *testing.T) { BlockOwnerDeletion: ptr.Bool(true), }} - manifest, err := sourceManifest.Transform(injectOwnerForCRDs(owners)) + manifest, err := sourceManifest.Transform(injectOwnerForCRDsAndNamespace(owners)) if err != nil { t.Fatal("unexpected error: ", err) } @@ -75,7 +75,7 @@ func TestInjectOwner_NonCRDs(t *testing.T) { }} // Must not add owner as resource is non-crd - manifest, err := sourceManifest.Transform(injectOwnerForCRDs(owners)) + manifest, err := sourceManifest.Transform(injectOwnerForCRDsAndNamespace(owners)) if err != nil { t.Fatal("unexpected error: ", err) } diff --git a/pkg/reconciler/shared/tektonconfig/tektonconfig.go b/pkg/reconciler/shared/tektonconfig/tektonconfig.go index 8ba22514c8..eb35cb07b6 100644 --- a/pkg/reconciler/shared/tektonconfig/tektonconfig.go +++ b/pkg/reconciler/shared/tektonconfig/tektonconfig.go @@ -50,22 +50,22 @@ var _ tektonConfigreconciler.Finalizer = (*Reconciler)(nil) func (r *Reconciler) FinalizeKind(ctx context.Context, original *v1alpha1.TektonConfig) pkgreconciler.Event { logger := logging.FromContext(ctx) + if err := r.extension.Finalize(ctx, original); err != nil { + logger.Error("Failed to finalize platform resources", err) + } + if original.Spec.Profile == v1alpha1.ProfileLite { return pipeline.TektonPipelineCRDelete(ctx, r.operatorClientSet.OperatorV1alpha1().TektonPipelines(), v1alpha1.PipelineResourceName) } else { // TektonPipeline and TektonTrigger is common for profile type basic and all - if err := pipeline.TektonPipelineCRDelete(ctx, r.operatorClientSet.OperatorV1alpha1().TektonPipelines(), v1alpha1.PipelineResourceName); err != nil { + if err := trigger.TektonTriggerCRDelete(ctx, r.operatorClientSet.OperatorV1alpha1().TektonTriggers(), v1alpha1.TriggerResourceName); err != nil { return err } - if err := trigger.TektonTriggerCRDelete(ctx, r.operatorClientSet.OperatorV1alpha1().TektonTriggers(), v1alpha1.TriggerResourceName); err != nil { + if err := pipeline.TektonPipelineCRDelete(ctx, r.operatorClientSet.OperatorV1alpha1().TektonPipelines(), v1alpha1.PipelineResourceName); err != nil { return err } } - if err := r.extension.Finalize(ctx, original); err != nil { - logger.Error("Failed to finalize platform resources", err) - } - return nil }