@@ -84,13 +84,13 @@ func (rm *resourceManager) CustomModifyReplicationGroup(
8484 if desired .ko .Spec .AutomaticFailoverEnabled != nil && * desired .ko .Spec .AutomaticFailoverEnabled == false {
8585 latestAutomaticFailoverEnabled := latest .ko .Status .AutomaticFailover != nil && * latest .ko .Status .AutomaticFailover == "enabled"
8686 if latestAutomaticFailoverEnabled != * desired .ko .Spec .AutomaticFailoverEnabled {
87- return rm .modifyReplicationGroup (ctx , desired , latest )
87+ return rm .modifyReplicationGroup (ctx , desired , latest , delta )
8888 }
8989 }
9090 if desired .ko .Spec .MultiAZEnabled != nil && * desired .ko .Spec .MultiAZEnabled == false {
9191 latestMultiAZEnabled := latest .ko .Status .MultiAZ != nil && * latest .ko .Status .MultiAZ == "enabled"
9292 if latestMultiAZEnabled != * desired .ko .Spec .MultiAZEnabled {
93- return rm .modifyReplicationGroup (ctx , desired , latest )
93+ return rm .modifyReplicationGroup (ctx , desired , latest , delta )
9494 }
9595 }
9696
@@ -107,7 +107,7 @@ func (rm *resourceManager) CustomModifyReplicationGroup(
107107 return rm .updateShardConfiguration (ctx , desired , latest )
108108 }
109109
110- return rm .modifyReplicationGroup (ctx , desired , latest )
110+ return rm .modifyReplicationGroup (ctx , desired , latest , delta )
111111}
112112
113113// modifyReplicationGroup updates replication group
@@ -118,6 +118,7 @@ func (rm *resourceManager) modifyReplicationGroup(
118118 ctx context.Context ,
119119 desired * resource ,
120120 latest * resource ,
121+ delta * ackcompare.Delta ,
121122) (* resource , error ) {
122123 // Method currently handles SecurityGroupIDs, EngineVersion
123124 // Avoid making unnecessary DescribeCacheCluster API call if both fields are nil in spec.
@@ -134,8 +135,8 @@ func (rm *resourceManager) modifyReplicationGroup(
134135
135136 // SecurityGroupIds, EngineVersion
136137 if rm .securityGroupIdsDiffer (desired , latest , latestCacheCluster ) ||
137- rm . engineVersionsDiffer ( desired , latest ) {
138- input := rm .newModifyReplicationGroupRequestPayload (desired , latest , latestCacheCluster )
138+ delta . DifferentAt ( "Spec.EngineVersion" ) {
139+ input := rm .newModifyReplicationGroupRequestPayload (desired , latest , latestCacheCluster , delta )
139140 resp , respErr := rm .sdkapi .ModifyReplicationGroupWithContext (ctx , input )
140141 rm .metrics .RecordAPICall ("UPDATE" , "ModifyReplicationGroup" , respErr )
141142 if respErr != nil {
@@ -648,6 +649,7 @@ func (rm *resourceManager) newModifyReplicationGroupRequestPayload(
648649 desired * resource ,
649650 latest * resource ,
650651 latestCacheCluster * svcsdk.CacheCluster ,
652+ delta * ackcompare.Delta ,
651653) * svcsdk.ModifyReplicationGroupInput {
652654 input := & svcsdk.ModifyReplicationGroupInput {}
653655
@@ -667,37 +669,14 @@ func (rm *resourceManager) newModifyReplicationGroupRequestPayload(
667669 input .SetSecurityGroupIds (ids )
668670 }
669671
670- if rm . engineVersionsDiffer ( desired , latest ) &&
672+ if delta . DifferentAt ( "Spec.EngineVersion" ) &&
671673 desired .ko .Spec .EngineVersion != nil {
672674 input .SetEngineVersion (* desired .ko .Spec .EngineVersion )
673675 }
674676
675677 return input
676678}
677679
678- /*
679- engineVersionsDiffer returns true if the desired engine version is different
680- from the latest observed engine version, and false if they differ or if
681- the desired EngineVersion is nil
682- */
683- func (rm * resourceManager ) engineVersionsDiffer (
684- desired * resource ,
685- latest * resource ,
686- ) bool {
687- if desired .ko .Spec .EngineVersion == nil {
688- return false
689- }
690-
691- latestEV := ""
692- if latest .ko .Spec .EngineVersion != nil {
693- latestEV = * latest .ko .Spec .EngineVersion
694- }
695-
696- return * desired .ko .Spec .EngineVersion != latestEV
697-
698- //TODO: should Delta be used in this function?
699- }
700-
701680// This method copies the data from given replicationGroup by populating it into copy of supplied resource
702681// and returns it.
703682func (rm * resourceManager ) provideUpdatedResource (
0 commit comments