Skip to content

Commit b2b458a

Browse files
authored
Update updateTags function by using new runtime function (#67)
Issue #, if available: New method of comparing tags was added in runtime. Using this new method to reduce amount of custom logic code of updateTags. Description of changes: Use new method in runtime to replace custom logic of comparing two tags. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent f87e4ce commit b2b458a

File tree

6 files changed

+75
-270
lines changed

6 files changed

+75
-270
lines changed

pkg/resource/acl/hooks.go

Lines changed: 13 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import (
1717
"context"
1818
"github.com/pkg/errors"
1919

20+
ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare"
2021
"github.com/aws-controllers-k8s/runtime/pkg/requeue"
2122
ackrtlog "github.com/aws-controllers-k8s/runtime/pkg/runtime/log"
22-
ackutil "github.com/aws-controllers-k8s/runtime/pkg/util"
2323
svcsdk "github.com/aws/aws-sdk-go/service/memorydb"
2424

2525
svcapitypes "github.com/aws-controllers-k8s/memorydb-controller/apis/v1alpha1"
@@ -84,9 +84,18 @@ func (rm *resourceManager) updateTags(
8484

8585
arn := (*string)(latest.ko.Status.ACKResourceMetadata.ARN)
8686

87-
toAdd, toDelete := computeTagsDelta(
88-
desired.ko.Spec.Tags, latest.ko.Spec.Tags,
89-
)
87+
desiredTags := ToACKTags(desired.ko.Spec.Tags)
88+
latestTags := ToACKTags(latest.ko.Spec.Tags)
89+
90+
added, _, removed := ackcompare.GetTagsDifference(latestTags, desiredTags)
91+
92+
toAdd := FromACKTags(added)
93+
toRemove := FromACKTags(removed)
94+
95+
var toDelete []*string
96+
for _, removedElement := range toRemove {
97+
toDelete = append(toDelete, removedElement.Key)
98+
}
9099

91100
if len(toDelete) > 0 {
92101
rlog.Debug("removing tags from ACL", "tags", toDelete)
@@ -121,38 +130,6 @@ func (rm *resourceManager) updateTags(
121130
return nil
122131
}
123132

124-
func computeTagsDelta(
125-
desired []*svcapitypes.Tag,
126-
latest []*svcapitypes.Tag,
127-
) (addedOrUpdated []*svcapitypes.Tag, removed []*string) {
128-
var visitedIndexes []string
129-
var hasSameKey bool
130-
131-
for _, latestElement := range latest {
132-
hasSameKey = false
133-
visitedIndexes = append(visitedIndexes, *latestElement.Key)
134-
for _, desiredElement := range desired {
135-
if equalStrings(latestElement.Key, desiredElement.Key) {
136-
hasSameKey = true
137-
if !equalStrings(latestElement.Value, desiredElement.Value) {
138-
addedOrUpdated = append(addedOrUpdated, desiredElement)
139-
}
140-
break
141-
}
142-
}
143-
if hasSameKey {
144-
continue
145-
}
146-
removed = append(removed, latestElement.Key)
147-
}
148-
for _, desiredElement := range desired {
149-
if !ackutil.InStrings(*desiredElement.Key, visitedIndexes) {
150-
addedOrUpdated = append(addedOrUpdated, desiredElement)
151-
}
152-
}
153-
return addedOrUpdated, removed
154-
}
155-
156133
func sdkTagsFromResourceTags(
157134
rTags []*svcapitypes.Tag,
158135
) []*svcsdk.Tag {
@@ -178,12 +155,3 @@ func resourceTagsFromSDKTags(
178155
}
179156
return tags
180157
}
181-
182-
func equalStrings(a, b *string) bool {
183-
if a == nil {
184-
return b == nil
185-
} else if b == nil {
186-
return false
187-
}
188-
return *a == *b
189-
}

pkg/resource/cluster/hooks.go

Lines changed: 12 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors"
2424
ackrequeue "github.com/aws-controllers-k8s/runtime/pkg/requeue"
2525
ackrtlog "github.com/aws-controllers-k8s/runtime/pkg/runtime/log"
26-
ackutil "github.com/aws-controllers-k8s/runtime/pkg/util"
2726
svcsdk "github.com/aws/aws-sdk-go/service/memorydb"
2827

2928
svcapitypes "github.com/aws-controllers-k8s/memorydb-controller/apis/v1alpha1"
@@ -304,9 +303,18 @@ func (rm *resourceManager) updateTags(
304303

305304
arn := (*string)(latest.ko.Status.ACKResourceMetadata.ARN)
306305

307-
toAdd, toDelete := computeTagsDelta(
308-
desired.ko.Spec.Tags, latest.ko.Spec.Tags,
309-
)
306+
desiredTags := ToACKTags(desired.ko.Spec.Tags)
307+
latestTags := ToACKTags(latest.ko.Spec.Tags)
308+
309+
added, _, removed := ackcompare.GetTagsDifference(latestTags, desiredTags)
310+
311+
toAdd := FromACKTags(added)
312+
toRemove := FromACKTags(removed)
313+
314+
var toDelete []*string
315+
for _, removedElement := range toRemove {
316+
toDelete = append(toDelete, removedElement.Key)
317+
}
310318

311319
if len(toDelete) > 0 {
312320
rlog.Debug("removing tags from cluster", "tags", toDelete)
@@ -341,38 +349,6 @@ func (rm *resourceManager) updateTags(
341349
return nil
342350
}
343351

344-
func computeTagsDelta(
345-
desired []*svcapitypes.Tag,
346-
latest []*svcapitypes.Tag,
347-
) (addedOrUpdated []*svcapitypes.Tag, removed []*string) {
348-
var visitedIndexes []string
349-
var hasSameKey bool
350-
351-
for _, latestElement := range latest {
352-
hasSameKey = false
353-
visitedIndexes = append(visitedIndexes, *latestElement.Key)
354-
for _, desiredElement := range desired {
355-
if equalStrings(latestElement.Key, desiredElement.Key) {
356-
hasSameKey = true
357-
if !equalStrings(latestElement.Value, desiredElement.Value) {
358-
addedOrUpdated = append(addedOrUpdated, desiredElement)
359-
}
360-
break
361-
}
362-
}
363-
if hasSameKey {
364-
continue
365-
}
366-
removed = append(removed, latestElement.Key)
367-
}
368-
for _, desiredElement := range desired {
369-
if !ackutil.InStrings(*desiredElement.Key, visitedIndexes) {
370-
addedOrUpdated = append(addedOrUpdated, desiredElement)
371-
}
372-
}
373-
return addedOrUpdated, removed
374-
}
375-
376352
func sdkTagsFromResourceTags(
377353
rTags []*svcapitypes.Tag,
378354
) []*svcsdk.Tag {
@@ -398,12 +374,3 @@ func resourceTagsFromSDKTags(
398374
}
399375
return tags
400376
}
401-
402-
func equalStrings(a, b *string) bool {
403-
if a == nil {
404-
return b == nil
405-
} else if b == nil {
406-
return false
407-
}
408-
return *a == *b
409-
}

pkg/resource/parameter_group/hooks.go

Lines changed: 13 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import (
1717
"context"
1818

1919
ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1"
20+
ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare"
2021
ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors"
2122
ackrtlog "github.com/aws-controllers-k8s/runtime/pkg/runtime/log"
22-
ackutil "github.com/aws-controllers-k8s/runtime/pkg/util"
2323
svcsdk "github.com/aws/aws-sdk-go/service/memorydb"
2424

2525
svcapitypes "github.com/aws-controllers-k8s/memorydb-controller/apis/v1alpha1"
@@ -189,9 +189,18 @@ func (rm *resourceManager) updateTags(
189189

190190
arn := (*string)(latest.ko.Status.ACKResourceMetadata.ARN)
191191

192-
toAdd, toDelete := computeTagsDelta(
193-
desired.ko.Spec.Tags, latest.ko.Spec.Tags,
194-
)
192+
desiredTags := ToACKTags(desired.ko.Spec.Tags)
193+
latestTags := ToACKTags(latest.ko.Spec.Tags)
194+
195+
added, _, removed := ackcompare.GetTagsDifference(latestTags, desiredTags)
196+
197+
toAdd := FromACKTags(added)
198+
toRemove := FromACKTags(removed)
199+
200+
var toDelete []*string
201+
for _, removedElement := range toRemove {
202+
toDelete = append(toDelete, removedElement.Key)
203+
}
195204

196205
if len(toDelete) > 0 {
197206
rlog.Debug("removing tags from parameter group", "tags", toDelete)
@@ -226,38 +235,6 @@ func (rm *resourceManager) updateTags(
226235
return nil
227236
}
228237

229-
func computeTagsDelta(
230-
desired []*svcapitypes.Tag,
231-
latest []*svcapitypes.Tag,
232-
) (addedOrUpdated []*svcapitypes.Tag, removed []*string) {
233-
var visitedIndexes []string
234-
var hasSameKey bool
235-
236-
for _, latestElement := range latest {
237-
hasSameKey = false
238-
visitedIndexes = append(visitedIndexes, *latestElement.Key)
239-
for _, desiredElement := range desired {
240-
if equalStrings(latestElement.Key, desiredElement.Key) {
241-
hasSameKey = true
242-
if !equalStrings(latestElement.Value, desiredElement.Value) {
243-
addedOrUpdated = append(addedOrUpdated, desiredElement)
244-
}
245-
break
246-
}
247-
}
248-
if hasSameKey {
249-
continue
250-
}
251-
removed = append(removed, latestElement.Key)
252-
}
253-
for _, desiredElement := range desired {
254-
if !ackutil.InStrings(*desiredElement.Key, visitedIndexes) {
255-
addedOrUpdated = append(addedOrUpdated, desiredElement)
256-
}
257-
}
258-
return addedOrUpdated, removed
259-
}
260-
261238
func sdkTagsFromResourceTags(
262239
rTags []*svcapitypes.Tag,
263240
) []*svcsdk.Tag {
@@ -283,12 +260,3 @@ func resourceTagsFromSDKTags(
283260
}
284261
return tags
285262
}
286-
287-
func equalStrings(a, b *string) bool {
288-
if a == nil {
289-
return b == nil
290-
} else if b == nil {
291-
return false
292-
}
293-
return *a == *b
294-
}

pkg/resource/snapshot/hooks.go

Lines changed: 12 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare"
2222
ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors"
2323
ackrtlog "github.com/aws-controllers-k8s/runtime/pkg/runtime/log"
24-
ackutil "github.com/aws-controllers-k8s/runtime/pkg/util"
2524
svcsdk "github.com/aws/aws-sdk-go/service/memorydb"
2625
corev1 "k8s.io/api/core/v1"
2726
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -308,9 +307,18 @@ func (rm *resourceManager) updateTags(
308307

309308
arn := (*string)(latest.ko.Status.ACKResourceMetadata.ARN)
310309

311-
toAdd, toDelete := computeTagsDelta(
312-
desired.ko.Spec.Tags, latest.ko.Spec.Tags,
313-
)
310+
desiredTags := ToACKTags(desired.ko.Spec.Tags)
311+
latestTags := ToACKTags(latest.ko.Spec.Tags)
312+
313+
added, _, removed := ackcompare.GetTagsDifference(latestTags, desiredTags)
314+
315+
toAdd := FromACKTags(added)
316+
toRemove := FromACKTags(removed)
317+
318+
var toDelete []*string
319+
for _, removedElement := range toRemove {
320+
toDelete = append(toDelete, removedElement.Key)
321+
}
314322

315323
if len(toDelete) > 0 {
316324
rlog.Debug("removing tags from snapshot", "tags", toDelete)
@@ -345,38 +353,6 @@ func (rm *resourceManager) updateTags(
345353
return nil
346354
}
347355

348-
func computeTagsDelta(
349-
desired []*svcapitypes.Tag,
350-
latest []*svcapitypes.Tag,
351-
) (addedOrUpdated []*svcapitypes.Tag, removed []*string) {
352-
var visitedIndexes []string
353-
var hasSameKey bool
354-
355-
for _, latestElement := range latest {
356-
hasSameKey = false
357-
visitedIndexes = append(visitedIndexes, *latestElement.Key)
358-
for _, desiredElement := range desired {
359-
if equalStrings(latestElement.Key, desiredElement.Key) {
360-
hasSameKey = true
361-
if !equalStrings(latestElement.Value, desiredElement.Value) {
362-
addedOrUpdated = append(addedOrUpdated, desiredElement)
363-
}
364-
break
365-
}
366-
}
367-
if hasSameKey {
368-
continue
369-
}
370-
removed = append(removed, latestElement.Key)
371-
}
372-
for _, desiredElement := range desired {
373-
if !ackutil.InStrings(*desiredElement.Key, visitedIndexes) {
374-
addedOrUpdated = append(addedOrUpdated, desiredElement)
375-
}
376-
}
377-
return addedOrUpdated, removed
378-
}
379-
380356
func sdkTagsFromResourceTags(
381357
rTags []*svcapitypes.Tag,
382358
) []*svcsdk.Tag {
@@ -402,12 +378,3 @@ func resourceTagsFromSDKTags(
402378
}
403379
return tags
404380
}
405-
406-
func equalStrings(a, b *string) bool {
407-
if a == nil {
408-
return b == nil
409-
} else if b == nil {
410-
return false
411-
}
412-
return *a == *b
413-
}

0 commit comments

Comments
 (0)