Skip to content

Commit 688f65f

Browse files
authored
Merge pull request #1029 from haarchri/fix/tgw-tagger
fix(tagger): tagger fixed for tgw/tgwvpcattachment
2 parents af2bdd8 + 0199cec commit 688f65f

2 files changed

Lines changed: 46 additions & 18 deletions

File tree

pkg/controller/ec2/transitgateway/setup.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package transitgateway
22

33
import (
44
"context"
5+
"sort"
56
"time"
67

78
"github.com/aws/aws-sdk-go/aws"
@@ -131,19 +132,32 @@ func (t *tagger) Initialize(ctx context.Context, mgd resource.Managed) error {
131132
if !ok {
132133
return errors.New(errUnexpectedObject)
133134
}
134-
added := false
135+
var transitGatewayTags svcapitypes.TagSpecification
136+
for _, tagSpecification := range cr.Spec.ForProvider.TagSpecifications {
137+
if aws.StringValue(tagSpecification.ResourceType) == "transit-gateway" {
138+
transitGatewayTags = *tagSpecification
139+
}
140+
}
141+
135142
tagMap := map[string]string{}
136-
for _, t := range cr.Spec.ForProvider.Tags {
137-
tagMap[awsclients.StringValue(t.Key)] = awsclients.StringValue(t.Value)
143+
tagMap["Name"] = cr.Name
144+
for _, t := range transitGatewayTags.Tags {
145+
tagMap[aws.StringValue(t.Key)] = aws.StringValue(t.Value)
138146
}
139147
for k, v := range resource.GetExternalTags(mgd) {
140-
if tagMap[k] != v {
141-
cr.Spec.ForProvider.Tags = append(cr.Spec.ForProvider.Tags, svcapitypes.Tag{Key: awsclients.String(k), Value: awsclients.String(v)})
142-
added = true
143-
}
148+
tagMap[k] = v
144149
}
145-
if !added {
146-
return nil
150+
transitGatewayTags.Tags = make([]*svcapitypes.Tag, len(tagMap))
151+
transitGatewayTags.ResourceType = aws.String("transit-gateway")
152+
i := 0
153+
for k, v := range tagMap {
154+
transitGatewayTags.Tags[i] = &svcapitypes.Tag{Key: aws.String(k), Value: aws.String(v)}
155+
i++
147156
}
157+
sort.Slice(transitGatewayTags.Tags, func(i, j int) bool {
158+
return aws.StringValue(transitGatewayTags.Tags[i].Key) < aws.StringValue(transitGatewayTags.Tags[j].Key)
159+
})
160+
161+
cr.Spec.ForProvider.TagSpecifications = []*svcapitypes.TagSpecification{&transitGatewayTags}
148162
return errors.Wrap(t.kube.Update(ctx, cr), errKubeUpdateFailed)
149163
}

pkg/controller/ec2/transitgatewayvpcattachment/setup.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package transitgatewayvpcattachment
22

33
import (
44
"context"
5+
"sort"
56
"time"
67

78
"github.com/aws/aws-sdk-go/aws"
@@ -134,19 +135,32 @@ func (t *tagger) Initialize(ctx context.Context, mgd resource.Managed) error {
134135
if !ok {
135136
return errors.New(errUnexpectedObject)
136137
}
137-
added := false
138+
var transitGatewayAttachmentTags svcapitypes.TagSpecification
139+
for _, tagSpecification := range cr.Spec.ForProvider.TagSpecifications {
140+
if aws.StringValue(tagSpecification.ResourceType) == "transit-gateway-attachment" {
141+
transitGatewayAttachmentTags = *tagSpecification
142+
}
143+
}
144+
138145
tagMap := map[string]string{}
139-
for _, t := range cr.Spec.ForProvider.Tags {
140-
tagMap[awsclients.StringValue(t.Key)] = awsclients.StringValue(t.Value)
146+
tagMap["Name"] = cr.Name
147+
for _, t := range transitGatewayAttachmentTags.Tags {
148+
tagMap[aws.StringValue(t.Key)] = aws.StringValue(t.Value)
141149
}
142150
for k, v := range resource.GetExternalTags(mgd) {
143-
if tagMap[k] != v {
144-
cr.Spec.ForProvider.Tags = append(cr.Spec.ForProvider.Tags, svcapitypes.Tag{Key: awsclients.String(k), Value: awsclients.String(v)})
145-
added = true
146-
}
151+
tagMap[k] = v
147152
}
148-
if !added {
149-
return nil
153+
transitGatewayAttachmentTags.Tags = make([]*svcapitypes.Tag, len(tagMap))
154+
transitGatewayAttachmentTags.ResourceType = aws.String("transit-gateway-attachment")
155+
i := 0
156+
for k, v := range tagMap {
157+
transitGatewayAttachmentTags.Tags[i] = &svcapitypes.Tag{Key: aws.String(k), Value: aws.String(v)}
158+
i++
150159
}
160+
sort.Slice(transitGatewayAttachmentTags.Tags, func(i, j int) bool {
161+
return aws.StringValue(transitGatewayAttachmentTags.Tags[i].Key) < aws.StringValue(transitGatewayAttachmentTags.Tags[j].Key)
162+
})
163+
164+
cr.Spec.ForProvider.TagSpecifications = []*svcapitypes.TagSpecification{&transitGatewayAttachmentTags}
151165
return errors.Wrap(t.kube.Update(ctx, cr), errKubeUpdateFailed)
152166
}

0 commit comments

Comments
 (0)