Skip to content

Commit a8e9391

Browse files
Fix updateTags support for Subnet (#92)
Description of changes: - Removed unused `compareTag` function and changed key-value names to be `TAG_KEY` and `TAG_VALUE` in e2e tests. - Removed `createTags`, `deleteTags` functions and added `sdkTags` function to reduce the number of API calls. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent d4d97e8 commit a8e9391

File tree

7 files changed

+41
-89
lines changed

7 files changed

+41
-89
lines changed

apis/v1alpha1/ack-generate-metadata.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
ack_generate_info:
2-
build_date: "2022-09-08T18:33:19Z"
2+
build_date: "2022-09-13T16:18:40Z"
33
build_hash: 585f06bbd6d4cc1b738acb85901e7a009bf452c7
44
go_version: go1.18.3
55
version: v0.20.0

pkg/resource/subnet/hooks.go

Lines changed: 34 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -262,73 +262,57 @@ func (rm *resourceManager) syncTags(
262262
exit(err)
263263
}(err)
264264

265+
resourceId := []*string{latest.ko.Status.SubnetID}
266+
265267
toAdd, toDelete := computeTagsDelta(
266268
desired.ko.Spec.Tags, latest.ko.Spec.Tags,
267269
)
268270

269-
if err = rm.deleteTags(ctx, latest, toDelete); err != nil {
270-
return err
271-
}
271+
if len(toDelete) > 0 {
272+
rlog.Debug("removing tags from subnet resource", "tags", toDelete)
273+
_, err = rm.sdkapi.DeleteTagsWithContext(
274+
ctx,
275+
&svcsdk.DeleteTagsInput{
276+
Resources: resourceId,
277+
Tags: rm.sdkTags(toDelete),
278+
},
279+
)
280+
rm.metrics.RecordAPICall("UPDATE", "DeleteTags", err)
281+
if err != nil {
282+
return err
283+
}
272284

273-
if err = rm.createTags(ctx, desired, toAdd); err != nil {
274-
return err
275285
}
276286

277-
return nil
278-
}
279-
280-
// createTags function creates tags for subnet resource using CreateTags API calls
281-
func (rm *resourceManager) createTags(
282-
ctx context.Context,
283-
r *resource,
284-
tags []*svcapitypes.Tag,
285-
) (err error) {
286-
rlog := ackrtlog.FromContext(ctx)
287-
exit := rlog.Trace("rm.createTags")
288-
defer exit(err)
289-
290-
resourceId := []*string{r.ko.Status.SubnetID}
291-
292-
for _, i := range tags {
293-
toAdd := rm.newTag(*i)
294-
req := &svcsdk.CreateTagsInput{
295-
Resources: resourceId,
296-
Tags: []*svcsdk.Tag{toAdd},
297-
}
298-
_, err := rm.sdkapi.CreateTagsWithContext(ctx, req)
299-
rm.metrics.RecordAPICall("CREATE", "CreateTags", err)
287+
if len(toAdd) > 0 {
288+
rlog.Debug("adding tags to subnet resource", "tags", toAdd)
289+
_, err = rm.sdkapi.CreateTagsWithContext(
290+
ctx,
291+
&svcsdk.CreateTagsInput{
292+
Resources: resourceId,
293+
Tags: rm.sdkTags(toAdd),
294+
},
295+
)
296+
rm.metrics.RecordAPICall("UPDATE", "CreateTags", err)
300297
if err != nil {
301298
return err
302299
}
303300
}
304-
return err
301+
302+
return nil
305303
}
306304

307-
// deleteTags function deletes tags from subnet resource using DeleteTags API calls
308-
func (rm *resourceManager) deleteTags(
309-
ctx context.Context,
310-
r *resource,
305+
// sdkTags converts *svcapitypes.Tag array to a *svcsdk.Tag array
306+
func (rm *resourceManager) sdkTags(
311307
tags []*svcapitypes.Tag,
312-
) (err error) {
313-
rlog := ackrtlog.FromContext(ctx)
314-
exit := rlog.Trace("rm.deleteTags")
315-
defer exit(err)
316-
317-
resourceId := []*string{r.ko.Status.SubnetID}
308+
) (sdktags []*svcsdk.Tag) {
318309

319310
for _, i := range tags {
320-
toDelete := rm.newTag(*i)
321-
req := &svcsdk.DeleteTagsInput{
322-
Resources: resourceId,
323-
Tags: []*svcsdk.Tag{toDelete},
324-
}
325-
_, err = rm.sdkapi.DeleteTagsWithContext(ctx, req)
326-
rm.metrics.RecordAPICall("DELETE", "DeleteTags", err)
327-
if err != nil {
328-
return err
329-
}
311+
sdktag := rm.newTag(*i)
312+
sdktags = append(sdktags, sdktag)
330313
}
331-
return err
314+
315+
return sdktags
332316
}
333317

334318
// computeTagsDelta returns tags to be added and removed from the resource

pkg/resource/subnet/sdk.go

Lines changed: 0 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/resource/vpc/hook.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ func (rm *resourceManager) syncTags(
306306
)
307307

308308
if len(toDelete) > 0 {
309-
rlog.Debug("removing tags from parameter group", "tags", toDelete)
309+
rlog.Debug("removing tags from vpc resource", "tags", toDelete)
310310
_, err = rm.sdkapi.DeleteTagsWithContext(
311311
ctx,
312312
&svcsdk.DeleteTagsInput{
@@ -322,7 +322,7 @@ func (rm *resourceManager) syncTags(
322322
}
323323

324324
if len(toAdd) > 0 {
325-
rlog.Debug("adding tags to parameter group", "tags", toAdd)
325+
rlog.Debug("adding tags to vpc resource", "tags", toAdd)
326326
_, err = rm.sdkapi.CreateTagsWithContext(
327327
ctx,
328328
&svcsdk.CreateTagsInput{

templates/hooks/subnet/sdk_file_end.go.tpl

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,6 @@
1010
{{- if eq $subnetRefName "Tags" }}
1111
{{- $subnetRef := $subnetMemberRefs.Shape.MemberRef }}
1212
{{- $subnetRefName = "Tag" }}
13-
func compare{{ $subnetRefName }}(
14-
a *svcapitypes.{{ $subnetRefName }},
15-
b *svcapitypes.{{ $subnetRefName }},
16-
) *ackcompare.Delta {
17-
delta := ackcompare.NewDelta()
18-
{{ GoCodeCompareStruct $CRD $subnetRef.Shape "delta" "a" "b" $subnetRefName 1 }}
19-
return delta
20-
}
21-
2213
func (rm *resourceManager) new{{ $subnetRefName }}(
2314
c svcapitypes.{{ $subnetRefName }},
2415
) *svcsdk.{{ $subnetRefName }} {

test/e2e/resources/subnet.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ spec:
66
cidrBlock: $CIDR_BLOCK
77
vpcID: $VPC_ID
88
tags:
9-
- key: $KEY
10-
value: $VALUE
9+
- key: $TAG_KEY
10+
value: $TAG_VALUE

test/e2e/tests/test_subnet.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ def test_crud_tags(self, ec2_client):
147147
test_resource_values["VPC_ID"] = vpc_id
148148
# CIDR needs to be within SharedTestVPC range and not overlap other subnets
149149
test_resource_values["CIDR_BLOCK"] = "10.0.255.0/24"
150-
test_resource_values["KEY"] = "initialtagkey"
151-
test_resource_values["VALUE"] = "initialtagvalue"
150+
test_resource_values["TAG_KEY"] = "initialtagkey"
151+
test_resource_values["TAG_VALUE"] = "initialtagvalue"
152152

153153
# Load Subnet CR
154154
resource_data = load_ec2_resource(

0 commit comments

Comments
 (0)