From 680737a388400398542ae59328ec78bdadd6ba84 Mon Sep 17 00:00:00 2001 From: Rob Mullinnix <90331956+rmullinnix461332@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:05:13 -0500 Subject: [PATCH 1/5] Update hooks.go --- pkg/resource/db_cluster/hooks.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkg/resource/db_cluster/hooks.go b/pkg/resource/db_cluster/hooks.go index 10194bc6..4b3ebb78 100644 --- a/pkg/resource/db_cluster/hooks.go +++ b/pkg/resource/db_cluster/hooks.go @@ -400,3 +400,19 @@ func setDeleteDBClusterInput( input.DeleteAutomatedBackups = params.DeleteAutomatedBackup return nil } + +// RDS will choose preferred engine minor version if only +// engine major version is provided and controler should not +// treat them as different, such as spec has 14, status has 14.1 +// controller should treat them as same +func reconcileDBClusterEngineVersion( + a *resource, + b *resource, +) { + if a != nil && b != nil && + a.ko.Spec.EngineVersion != nil && b.ko.Spec.EngineVersion != nil && + strings.HasPrefix(*b.ko.Spec.EngineVersion, *a.ko.Spec.EngineVersion) && + b.ko.Spec.AutoMinorVersionUpgrade != nil && *b.ko.Spec.AutoMinorVersionUpgrade { + a.ko.Spec.EngineVersion = b.ko.Spec.EngineVersion + } +} From 0c6c2351fc17c40ca1733715d1cc401f3c28f8c2 Mon Sep 17 00:00:00 2001 From: Rob Mullinnix <90331956+rmullinnix461332@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:05:42 -0500 Subject: [PATCH 2/5] Update hooks.go --- pkg/resource/db_cluster/hooks.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/resource/db_cluster/hooks.go b/pkg/resource/db_cluster/hooks.go index 4b3ebb78..45210054 100644 --- a/pkg/resource/db_cluster/hooks.go +++ b/pkg/resource/db_cluster/hooks.go @@ -17,6 +17,7 @@ import ( "context" "errors" "fmt" + "strings" svcapitypes "github.com/aws-controllers-k8s/rds-controller/apis/v1alpha1" "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" From 210344a99ecd5f7fb0329feabc576db9138cf27f Mon Sep 17 00:00:00 2001 From: Rob Mullinnix <90331956+rmullinnix461332@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:07:16 -0500 Subject: [PATCH 3/5] Update delta.go --- pkg/resource/db_cluster/delta.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/resource/db_cluster/delta.go b/pkg/resource/db_cluster/delta.go index 7aefd8ad..47c46b6e 100644 --- a/pkg/resource/db_cluster/delta.go +++ b/pkg/resource/db_cluster/delta.go @@ -45,6 +45,10 @@ func newResourceDelta( } compareTags(delta, a, b) + // Handle case where auto update minor version is true + // DBCluster Engine Version is major version and RDS Cluster Version is major and minor + reconcileDBClusterEngineVersion(a, b) + // Handle special case for StorageType field for Aurora engines // When StorageType is set to "aurora" (default), the API doesn't return it @@ -147,7 +151,9 @@ func newResourceDelta( } } if ackcompare.HasNilDifference(a.ko.Spec.DatabaseInsightsMode, b.ko.Spec.DatabaseInsightsMode) { - delta.Add("Spec.DatabaseInsightsMode", a.ko.Spec.DatabaseInsightsMode, b.ko.Spec.DatabaseInsightsMode) + if a.ko.Spec.DatabaseInsightsMode != nil { + delta.Add("Spec.DatabaseInsightsMode", a.ko.Spec.DatabaseInsightsMode, b.ko.Spec.DatabaseInsightsMode) + } } else if a.ko.Spec.DatabaseInsightsMode != nil && b.ko.Spec.DatabaseInsightsMode != nil { if *a.ko.Spec.DatabaseInsightsMode != *b.ko.Spec.DatabaseInsightsMode { delta.Add("Spec.DatabaseInsightsMode", a.ko.Spec.DatabaseInsightsMode, b.ko.Spec.DatabaseInsightsMode) From 95a161643cc115904ed95434f08ecbfb6d1309c9 Mon Sep 17 00:00:00 2001 From: Rob Mullinnix <90331956+rmullinnix461332@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:08:41 -0500 Subject: [PATCH 4/5] Update delta.go --- pkg/resource/db_instance/delta.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/resource/db_instance/delta.go b/pkg/resource/db_instance/delta.go index c70f4ae4..978590c4 100644 --- a/pkg/resource/db_instance/delta.go +++ b/pkg/resource/db_instance/delta.go @@ -202,7 +202,9 @@ func newResourceDelta( delta.Add("Spec.DBSubnetGroupRef", a.ko.Spec.DBSubnetGroupRef, b.ko.Spec.DBSubnetGroupRef) } if ackcompare.HasNilDifference(a.ko.Spec.DatabaseInsightsMode, b.ko.Spec.DatabaseInsightsMode) { - delta.Add("Spec.DatabaseInsightsMode", a.ko.Spec.DatabaseInsightsMode, b.ko.Spec.DatabaseInsightsMode) + if a.ko.Spec.DatabaseInsightsMode != nil { + delta.Add("Spec.DatabaseInsightsMode", a.ko.Spec.DatabaseInsightsMode, b.ko.Spec.DatabaseInsightsMode) + } } else if a.ko.Spec.DatabaseInsightsMode != nil && b.ko.Spec.DatabaseInsightsMode != nil { if *a.ko.Spec.DatabaseInsightsMode != *b.ko.Spec.DatabaseInsightsMode { delta.Add("Spec.DatabaseInsightsMode", a.ko.Spec.DatabaseInsightsMode, b.ko.Spec.DatabaseInsightsMode) From a84204a37f1521e1bf6f3a3465c31647549a79e6 Mon Sep 17 00:00:00 2001 From: Rob Mullinnix <90331956+rmullinnix461332@users.noreply.github.com> Date: Thu, 2 Oct 2025 12:12:15 -0500 Subject: [PATCH 5/5] Update pkg/resource/db_cluster/hooks.go Co-authored-by: knottnt --- pkg/resource/db_cluster/hooks.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/resource/db_cluster/hooks.go b/pkg/resource/db_cluster/hooks.go index 45210054..ead135b7 100644 --- a/pkg/resource/db_cluster/hooks.go +++ b/pkg/resource/db_cluster/hooks.go @@ -403,7 +403,7 @@ func setDeleteDBClusterInput( } // RDS will choose preferred engine minor version if only -// engine major version is provided and controler should not +// engine major version is provided and controller should not // treat them as different, such as spec has 14, status has 14.1 // controller should treat them as same func reconcileDBClusterEngineVersion(