@@ -27,7 +27,6 @@ import (
2727 "github.com/fluxcd/cli-utils/pkg/kstatus/polling/engine"
2828 celtypes "github.com/google/cel-go/common/types"
2929 chart "helm.sh/helm/v4/pkg/chart/v2"
30- helmrelease "helm.sh/helm/v4/pkg/release/v1"
3130 corev1 "k8s.io/api/core/v1"
3231 apiequality "k8s.io/apimachinery/pkg/api/equality"
3332 apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -70,9 +69,7 @@ import (
7069 "github.com/fluxcd/helm-controller/internal/features"
7170 "github.com/fluxcd/helm-controller/internal/kube"
7271 "github.com/fluxcd/helm-controller/internal/loader"
73- "github.com/fluxcd/helm-controller/internal/postrender"
7472 intreconcile "github.com/fluxcd/helm-controller/internal/reconcile"
75- "github.com/fluxcd/helm-controller/internal/release"
7673)
7774
7875// +kubebuilder:rbac:groups=helm.toolkit.fluxcd.io,resources=helmreleases,verbs=get;list;watch;create;update;patch;delete
@@ -369,19 +366,6 @@ func (r *HelmReleaseReconciler) reconcileRelease(ctx context.Context,
369366 conditions .MarkUnknown (obj , meta .ReadyCondition , meta .ProgressingReason , "reconciliation in progress" )
370367 }
371368
372- // Keep feature flagged code paths separate from the main reconciliation
373- // logic to ensure easy removal when the feature flag is removed.
374- if ok , _ := features .Enabled (features .AdoptLegacyReleases ); ok {
375- // Attempt to adopt "legacy" v2beta1 release state on a best-effort basis.
376- // If this fails, the controller will fall back to performing an upgrade
377- // to settle on the desired state.
378- // TODO(hidde): remove this in a future release.
379- if err := r .adoptLegacyRelease (ctx , getter , statusReader , obj ); err != nil {
380- log .Error (err , "failed to adopt v2beta1 release state" )
381- }
382- r .adoptPostRenderersStatus (obj )
383- }
384-
385369 // If the release target configuration has changed, we need to uninstall the
386370 // previous release target first. If we did not do this, the installation would
387371 // fail due to resources already existing.
@@ -681,81 +665,6 @@ func (r *HelmReleaseReconciler) evalReadyExpr(
681665 return celExpr .EvaluateBoolean (ctx , vars )
682666}
683667
684- // adoptLegacyRelease attempts to adopt a v2beta1 release into a v2
685- // release.
686- // This is done by retrieving the last successful release from the Helm storage
687- // and converting it to a v2 release snapshot.
688- // If the v2beta1 release has already been adopted, this function is a no-op.
689- func (r * HelmReleaseReconciler ) adoptLegacyRelease (ctx context.Context ,
690- getter genericclioptions.RESTClientGetter , statusReader engine.StatusReader , obj * v2.HelmRelease ) error {
691-
692- if obj .Status .LastReleaseRevision < 1 || len (obj .Status .History ) > 0 {
693- return nil
694- }
695-
696- var (
697- log = ctrl .LoggerFrom (ctx ).V (logger .DebugLevel )
698- storageNamespace = obj .GetStorageNamespace ()
699- releaseNamespace = obj .GetReleaseNamespace ()
700- releaseName = obj .GetReleaseName ()
701- version = obj .Status .LastReleaseRevision
702- )
703-
704- log .Info ("adopting %s/%s.v%d release from v2beta1 state" , releaseNamespace , releaseName , version )
705-
706- // Construct config factory for current release.
707- cfg , err := action .NewConfigFactory (getter ,
708- action .WithStorage (action .DefaultStorageDriver , storageNamespace ),
709- action .WithStorageLog (action .NewTraceLogger (ctx )),
710- action .WithStatusReader (statusReader ),
711- )
712- if err != nil {
713- return err
714- }
715-
716- // Get the last successful release based on the observation for the v2beta1
717- // object.
718- rls , err := cfg .NewStorage ().Get (releaseName , version )
719- if err != nil {
720- return err
721- }
722-
723- // Convert it to a v2 release snapshot.
724- rlsTyped , ok := rls .(* helmrelease.Release )
725- if ! ok {
726- return fmt .Errorf ("only the Chart API v2 is supported" )
727- }
728- snap := release .ObservedToSnapshot (release .ObserveRelease (rlsTyped ))
729-
730- // If tests are enabled, include them as well.
731- if obj .GetTest ().Enable {
732- snap .SetTestHooks (release .TestHooksFromRelease (rlsTyped ))
733- }
734-
735- // Adopt it as the current release in the history.
736- obj .Status .History = append (obj .Status .History , snap )
737- obj .Status .StorageNamespace = storageNamespace
738-
739- // Erase the last release revision from the status.
740- obj .Status .LastReleaseRevision = 0
741-
742- return nil
743- }
744-
745- // adoptPostRenderersStatus attempts to set obj.Status.ObservedPostRenderersDigest
746- // for v2beta1 and v2beta2 HelmReleases.
747- func (* HelmReleaseReconciler ) adoptPostRenderersStatus (obj * v2.HelmRelease ) {
748- if obj .GetGeneration () != obj .Status .ObservedGeneration {
749- return
750- }
751-
752- // if we have a reconciled object with PostRenderers not reflected in the
753- // status, we need to update the status.
754- if obj .Spec .PostRenderers != nil && obj .Status .ObservedPostRenderersDigest == "" {
755- obj .Status .ObservedPostRenderersDigest = postrender .Digest (digest .Canonical , obj .Spec .PostRenderers ).String ()
756- }
757- }
758-
759668func (r * HelmReleaseReconciler ) buildRESTClientGetter (ctx context.Context , obj * v2.HelmRelease ) (genericclioptions.RESTClientGetter , error ) {
760669 opts := []kube.Option {
761670 kube .WithNamespace (obj .GetReleaseNamespace ()),
0 commit comments