1
1
package ec2
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
5
6
"log"
6
7
"time"
7
8
8
9
"github.com/aws/aws-sdk-go/aws"
9
10
"github.com/aws/aws-sdk-go/service/ec2"
10
11
"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
12
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
11
13
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
12
14
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
13
15
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -19,10 +21,11 @@ import (
19
21
20
22
func ResourceTransitGatewayConnect () * schema.Resource {
21
23
return & schema.Resource {
22
- Create : resourceTransitGatewayConnectCreate ,
23
- Read : resourceTransitGatewayConnectRead ,
24
- Update : resourceTransitGatewayConnectUpdate ,
25
- Delete : resourceTransitGatewayConnectDelete ,
24
+ CreateWithoutTimeout : resourceTransitGatewayConnectCreate ,
25
+ ReadWithoutTimeout : resourceTransitGatewayConnectRead ,
26
+ UpdateWithoutTimeout : resourceTransitGatewayConnectUpdate ,
27
+ DeleteWithoutTimeout : resourceTransitGatewayConnectDelete ,
28
+
26
29
Importer : & schema.ResourceImporter {
27
30
State : schema .ImportStatePassthrough ,
28
31
},
@@ -71,7 +74,7 @@ func ResourceTransitGatewayConnect() *schema.Resource {
71
74
}
72
75
}
73
76
74
- func resourceTransitGatewayConnectCreate (d * schema.ResourceData , meta interface {}) error {
77
+ func resourceTransitGatewayConnectCreate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
75
78
conn := meta .(* conns.AWSClient ).EC2Conn
76
79
defaultTagsConfig := meta .(* conns.AWSClient ).DefaultTagsConfig
77
80
tags := defaultTagsConfig .MergeTags (tftags .New (d .Get ("tags" ).(map [string ]interface {})))
@@ -89,44 +92,44 @@ func resourceTransitGatewayConnectCreate(d *schema.ResourceData, meta interface{
89
92
log .Printf ("[DEBUG] Creating EC2 Transit Gateway Connect Attachment: %s" , input )
90
93
output , err := conn .CreateTransitGatewayConnect (input )
91
94
if err != nil {
92
- return fmt .Errorf ("error creating EC2 Transit Gateway Connect Attachment: %s" , err )
95
+ return diag .Errorf ("error creating EC2 Transit Gateway Connect Attachment: %s" , err )
93
96
}
94
97
95
98
d .SetId (aws .StringValue (output .TransitGatewayConnect .TransitGatewayAttachmentId ))
96
99
97
100
if _ , err := WaitTransitGatewayConnectCreated (conn , d .Id (), d .Timeout (schema .TimeoutCreate )); err != nil {
98
- return fmt .Errorf ("error waiting for EC2 Transit Gateway Connect (%s) create: %w " , d .Id (), err )
101
+ return diag .Errorf ("error waiting for EC2 Transit Gateway Connect (%s) create: %s " , d .Id (), err )
99
102
}
100
103
101
104
transportAttachment , err := DescribeTransitGatewayAttachment (conn , transportAttachmentID )
102
105
if err != nil {
103
- return fmt .Errorf ("error describing EC2 Transit Gateway Attachment (%s): %s" , transportAttachmentID , err )
106
+ return diag .Errorf ("error describing EC2 Transit Gateway Attachment (%s): %s" , transportAttachmentID , err )
104
107
}
105
108
106
109
transitGateway , err := DescribeTransitGateway (conn , * transportAttachment .TransitGatewayId )
107
110
if err != nil {
108
- return fmt .Errorf ("error describing EC2 Transit Gateway (%s): %s" , * transportAttachment .TransitGatewayId , err )
111
+ return diag .Errorf ("error describing EC2 Transit Gateway (%s): %s" , * transportAttachment .TransitGatewayId , err )
109
112
}
110
113
111
114
if transitGateway .Options == nil {
112
- return fmt .Errorf ("error describing EC2 Transit Gateway (%s): missing options" , * transportAttachment .TransitGatewayId )
115
+ return diag .Errorf ("error describing EC2 Transit Gateway (%s): missing options" , * transportAttachment .TransitGatewayId )
113
116
}
114
117
115
118
// We cannot modify Transit Gateway Route Tables for Resource Access Manager shared Transit Gateways
116
119
if aws .StringValue (transitGateway .OwnerId ) == aws .StringValue (transportAttachment .ResourceOwnerId ) {
117
120
if err := transitGatewayRouteTableAssociationUpdate (conn , aws .StringValue (transitGateway .Options .AssociationDefaultRouteTableId ), d .Id (), d .Get ("transit_gateway_default_route_table_association" ).(bool )); err != nil {
118
- return fmt .Errorf ("error updating EC2 Transit Gateway Attachment (%s) Route Table (%s) association: %s" , d .Id (), aws .StringValue (transitGateway .Options .AssociationDefaultRouteTableId ), err )
121
+ return diag .Errorf ("error updating EC2 Transit Gateway Attachment (%s) Route Table (%s) association: %s" , d .Id (), aws .StringValue (transitGateway .Options .AssociationDefaultRouteTableId ), err )
119
122
}
120
123
121
124
if err := transitGatewayRouteTablePropagationUpdate (conn , aws .StringValue (transitGateway .Options .PropagationDefaultRouteTableId ), d .Id (), d .Get ("transit_gateway_default_route_table_propagation" ).(bool )); err != nil {
122
- return fmt .Errorf ("error updating EC2 Transit Gateway Attachment (%s) Route Table (%s) propagation: %s" , d .Id (), aws .StringValue (transitGateway .Options .PropagationDefaultRouteTableId ), err )
125
+ return diag .Errorf ("error updating EC2 Transit Gateway Attachment (%s) Route Table (%s) propagation: %s" , d .Id (), aws .StringValue (transitGateway .Options .PropagationDefaultRouteTableId ), err )
123
126
}
124
127
}
125
128
126
- return resourceTransitGatewayConnectRead (d , meta )
129
+ return resourceTransitGatewayConnectRead (ctx , d , meta )
127
130
}
128
131
129
- func resourceTransitGatewayConnectRead (d * schema.ResourceData , meta interface {}) error {
132
+ func resourceTransitGatewayConnectRead (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
130
133
conn := meta .(* conns.AWSClient ).EC2Conn
131
134
defaultTagsConfig := meta .(* conns.AWSClient ).DefaultTagsConfig
132
135
ignoreTagsConfig := meta .(* conns.AWSClient ).IgnoreTagsConfig
@@ -140,7 +143,7 @@ func resourceTransitGatewayConnectRead(d *schema.ResourceData, meta interface{})
140
143
}
141
144
142
145
if err != nil {
143
- return fmt .Errorf ("error reading EC2 Transit Gateway Connect Attachment: %s" , err )
146
+ return diag .Errorf ("error reading EC2 Transit Gateway Connect Attachment: %s" , err )
144
147
}
145
148
146
149
if transitGatewayConnect == nil {
@@ -158,12 +161,12 @@ func resourceTransitGatewayConnectRead(d *schema.ResourceData, meta interface{})
158
161
transitGatewayID := * transitGatewayConnect .TransitGatewayId
159
162
transitGateway , err := DescribeTransitGateway (conn , transitGatewayID )
160
163
if err != nil {
161
- return fmt .Errorf ("error describing EC2 Transit Gateway (%s): %s" , transitGatewayID , err )
164
+ return diag .Errorf ("error describing EC2 Transit Gateway (%s): %s" , transitGatewayID , err )
162
165
}
163
166
164
167
transitGatewayAttachment , err := DescribeTransitGatewayAttachment (conn , d .Id ())
165
168
if err != nil {
166
- return fmt .Errorf ("error reading EC2 Transit Gateway Attachment: %s" , err )
169
+ return diag .Errorf ("error reading EC2 Transit Gateway Attachment: %s" , err )
167
170
}
168
171
169
172
if transitGatewayAttachment == nil {
@@ -180,13 +183,13 @@ func resourceTransitGatewayConnectRead(d *schema.ResourceData, meta interface{})
180
183
transitGatewayAssociationDefaultRouteTableID := aws .StringValue (transitGateway .Options .AssociationDefaultRouteTableId )
181
184
transitGatewayDefaultRouteTableAssociation , err = DescribeTransitGatewayRouteTableAssociation (conn , transitGatewayAssociationDefaultRouteTableID , d .Id ())
182
185
if err != nil {
183
- return fmt .Errorf ("error determining EC2 Transit Gateway Attachment (%s) association to Route Table (%s): %s" , d .Id (), transitGatewayAssociationDefaultRouteTableID , err )
186
+ return diag .Errorf ("error determining EC2 Transit Gateway Attachment (%s) association to Route Table (%s): %s" , d .Id (), transitGatewayAssociationDefaultRouteTableID , err )
184
187
}
185
188
186
189
transitGatewayPropagationDefaultRouteTableID := aws .StringValue (transitGateway .Options .PropagationDefaultRouteTableId )
187
190
transitGatewayDefaultRouteTablePropagation , err = FindTransitGatewayRouteTablePropagation (conn , transitGatewayPropagationDefaultRouteTableID , d .Id ())
188
191
if err != nil {
189
- return fmt .Errorf ("error determining EC2 Transit Gateway Attachment (%s) propagation to Route Table (%s): %s" , d .Id (), transitGatewayPropagationDefaultRouteTableID , err )
192
+ return diag .Errorf ("error determining EC2 Transit Gateway Attachment (%s) propagation to Route Table (%s): %s" , d .Id (), transitGatewayPropagationDefaultRouteTableID , err )
190
193
}
191
194
}
192
195
@@ -200,40 +203,40 @@ func resourceTransitGatewayConnectRead(d *schema.ResourceData, meta interface{})
200
203
201
204
//lintignore:AWSR002
202
205
if err := d .Set ("tags" , tags .RemoveDefaultConfig (defaultTagsConfig ).Map ()); err != nil {
203
- return fmt .Errorf ("error setting tags: %w " , err )
206
+ return diag .Errorf ("error setting tags: %s " , err )
204
207
}
205
208
206
209
if err := d .Set ("tags_all" , tags .Map ()); err != nil {
207
- return fmt .Errorf ("error setting tags_all: %w " , err )
210
+ return diag .Errorf ("error setting tags_all: %s " , err )
208
211
}
209
212
210
213
return nil
211
214
}
212
215
213
- func resourceTransitGatewayConnectUpdate (d * schema.ResourceData , meta interface {}) error {
216
+ func resourceTransitGatewayConnectUpdate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
214
217
conn := meta .(* conns.AWSClient ).EC2Conn
215
218
216
219
if d .HasChanges ("transit_gateway_default_route_table_association" , "transit_gateway_default_route_table_propagation" ) {
217
220
transitGatewayID := d .Get ("transit_gateway_id" ).(string )
218
221
219
222
transitGateway , err := DescribeTransitGateway (conn , transitGatewayID )
220
223
if err != nil {
221
- return fmt .Errorf ("error describing EC2 Transit Gateway (%s): %s" , transitGatewayID , err )
224
+ return diag .Errorf ("error describing EC2 Transit Gateway (%s): %s" , transitGatewayID , err )
222
225
}
223
226
224
227
if transitGateway .Options == nil {
225
- return fmt .Errorf ("error describing EC2 Transit Gateway (%s): missing options" , transitGatewayID )
228
+ return diag .Errorf ("error describing EC2 Transit Gateway (%s): missing options" , transitGatewayID )
226
229
}
227
230
228
231
if d .HasChange ("transit_gateway_default_route_table_association" ) {
229
232
if err := transitGatewayRouteTableAssociationUpdate (conn , aws .StringValue (transitGateway .Options .AssociationDefaultRouteTableId ), d .Id (), d .Get ("transit_gateway_default_route_table_association" ).(bool )); err != nil {
230
- return fmt .Errorf ("error updating EC2 Transit Gateway Attachment (%s) Route Table (%s) association: %s" , d .Id (), aws .StringValue (transitGateway .Options .AssociationDefaultRouteTableId ), err )
233
+ return diag .Errorf ("error updating EC2 Transit Gateway Attachment (%s) Route Table (%s) association: %s" , d .Id (), aws .StringValue (transitGateway .Options .AssociationDefaultRouteTableId ), err )
231
234
}
232
235
}
233
236
234
237
if d .HasChange ("transit_gateway_default_route_table_propagation" ) {
235
238
if err := transitGatewayRouteTablePropagationUpdate (conn , aws .StringValue (transitGateway .Options .PropagationDefaultRouteTableId ), d .Id (), d .Get ("transit_gateway_default_route_table_propagation" ).(bool )); err != nil {
236
- return fmt .Errorf ("error updating EC2 Transit Gateway Attachment (%s) Route Table (%s) propagation: %s" , d .Id (), aws .StringValue (transitGateway .Options .PropagationDefaultRouteTableId ), err )
239
+ return diag .Errorf ("error updating EC2 Transit Gateway Attachment (%s) Route Table (%s) propagation: %s" , d .Id (), aws .StringValue (transitGateway .Options .PropagationDefaultRouteTableId ), err )
237
240
}
238
241
}
239
242
}
@@ -242,14 +245,14 @@ func resourceTransitGatewayConnectUpdate(d *schema.ResourceData, meta interface{
242
245
o , n := d .GetChange ("tags_all" )
243
246
244
247
if err := UpdateTags (conn , d .Id (), o , n ); err != nil {
245
- return fmt .Errorf ("error updating EC2 Transit Gateway Connect Attachment (%s) tags: %s" , d .Id (), err )
248
+ return diag .Errorf ("error updating EC2 Transit Gateway Connect Attachment (%s) tags: %s" , d .Id (), err )
246
249
}
247
250
}
248
251
249
- return nil
252
+ return resourceTransitGatewayConnectRead ( ctx , d , meta )
250
253
}
251
254
252
- func resourceTransitGatewayConnectDelete (d * schema.ResourceData , meta interface {}) error {
255
+ func resourceTransitGatewayConnectDelete (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
253
256
conn := meta .(* conns.AWSClient ).EC2Conn
254
257
255
258
log .Printf ("[DEBUG] Deleting EC2 Transit Gateway Connect: %s" , d .Id ())
@@ -262,11 +265,11 @@ func resourceTransitGatewayConnectDelete(d *schema.ResourceData, meta interface{
262
265
}
263
266
264
267
if err != nil {
265
- return fmt .Errorf ("error deleting EC2 Transit Gateway Connect (%s): %w " , d .Id (), err )
268
+ return diag .Errorf ("error deleting EC2 Transit Gateway Connect (%s): %s " , d .Id (), err )
266
269
}
267
270
268
271
if _ , err := WaitTransitGatewayConnectDeleted (conn , d .Id (), d .Timeout (schema .TimeoutDelete )); err != nil {
269
- return fmt .Errorf ("error waiting for EC2 Transit Gateway Connect (%s) delete: %w " , d .Id (), err )
272
+ return diag .Errorf ("error waiting for EC2 Transit Gateway Connect (%s) delete: %s " , d .Id (), err )
270
273
}
271
274
272
275
return nil
0 commit comments