From 6f4ee3c5677a8929cbb4c8570c996432d9c815bb Mon Sep 17 00:00:00 2001 From: Arush Sharma Date: Wed, 10 Sep 2025 15:23:44 -0700 Subject: [PATCH] fix engine upgrades --- apis/v1alpha1/ack-generate-metadata.yaml | 6 +++--- helm/templates/deployment.yaml | 3 +++ pkg/resource/replication_group/hooks.go | 23 +++++++++++++++++++++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/apis/v1alpha1/ack-generate-metadata.yaml b/apis/v1alpha1/ack-generate-metadata.yaml index e0e43e2..2923410 100755 --- a/apis/v1alpha1/ack-generate-metadata.yaml +++ b/apis/v1alpha1/ack-generate-metadata.yaml @@ -1,8 +1,8 @@ ack_generate_info: - build_date: "2025-09-05T22:54:05Z" - build_hash: 1d9076d0211773ff8ab8682b28b912c7ece10676 + build_date: "2025-09-10T22:13:23Z" + build_hash: 9e29f017d9e942548af133d2f31aecae248a8816 go_version: go1.25.0 - version: v0.51.0-2-g1d9076d + version: v0.51.0-3-g9e29f01 api_directory_checksum: 65127f2f0a24a801fad4e043be37857f0e6bcfb9 api_version: v1alpha1 aws_sdk_go_version: v1.32.6 diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml index 687f333..159e8a6 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployment.yaml @@ -10,6 +10,9 @@ metadata: app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} k8s-app: {{ include "ack-elasticache-controller.app.name" . }} helm.sh/chart: {{ include "ack-elasticache-controller.chart.name-version" . }} +{{- range $key, $value := .Values.deployment.labels }} + {{ $key }}: {{ $value | quote }} +{{- end }} spec: replicas: {{ .Values.deployment.replicas }} selector: diff --git a/pkg/resource/replication_group/hooks.go b/pkg/resource/replication_group/hooks.go index f679b85..d987645 100644 --- a/pkg/resource/replication_group/hooks.go +++ b/pkg/resource/replication_group/hooks.go @@ -613,7 +613,7 @@ func (rm *resourceManager) modifyReplicationGroup( // SecurityGroupIds, EngineVersion if rm.securityGroupIdsDiffer(desired, latest, latestCacheCluster) || - delta.DifferentAt("Spec.EngineVersion") { + delta.DifferentAt("Spec.EngineVersion") || delta.DifferentAt("Spec.Engine") || delta.DifferentAt("Spec.CacheParameterGroupName") { input := rm.newModifyReplicationGroupRequestPayload(desired, latest, latestCacheCluster, delta) resp, respErr := rm.sdkapi.ModifyReplicationGroup(ctx, input) rm.metrics.RecordAPICall("UPDATE", "ModifyReplicationGroup", respErr) @@ -622,7 +622,16 @@ func (rm *resourceManager) modifyReplicationGroup( return nil, respErr } - return rm.setReplicationGroupOutput(ctx, desired, resp.ReplicationGroup) + // The ModifyReplicationGroup API returns stale field Engine that don't + // immediately reflect the requested changes, causing the controller to detect false + // differences and trigger terminal conditions. Override these fields with the user's + // intended values before passing to the generated setReplicationGroupOutput function. + normalizedRG := *resp.ReplicationGroup + if desired.ko.Spec.Engine != nil { + normalizedRG.Engine = desired.ko.Spec.Engine + } + + return rm.setReplicationGroupOutput(ctx, desired, &normalizedRG) } // no updates done @@ -1169,6 +1178,16 @@ func (rm *resourceManager) newModifyReplicationGroupRequestPayload( input.EngineVersion = desired.ko.Spec.EngineVersion } + if delta.DifferentAt("Spec.Engine") && + desired.ko.Spec.Engine != nil { + input.Engine = desired.ko.Spec.Engine + } + + if delta.DifferentAt("Spec.CacheParameterGroupName") && + desired.ko.Spec.CacheParameterGroupName != nil { + input.CacheParameterGroupName = desired.ko.Spec.CacheParameterGroupName + } + return input }