@@ -2,6 +2,7 @@ package transitgatewayvpcattachment
22
33import (
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