1
1
package ec2
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
5
6
"log"
6
7
"strconv"
@@ -9,6 +10,7 @@ import (
9
10
"github.com/aws/aws-sdk-go/aws/arn"
10
11
"github.com/aws/aws-sdk-go/service/ec2"
11
12
"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
13
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
12
14
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
13
15
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
14
16
"github.com/hashicorp/terraform-provider-aws/internal/conns"
@@ -19,10 +21,10 @@ import (
19
21
20
22
func ResourceCustomerGateway () * schema.Resource {
21
23
return & schema.Resource {
22
- Create : resourceCustomerGatewayCreate ,
23
- Read : resourceCustomerGatewayRead ,
24
- Update : resourceCustomerGatewayUpdate ,
25
- Delete : resourceCustomerGatewayDelete ,
24
+ CreateWithoutTimeout : resourceCustomerGatewayCreate ,
25
+ ReadWithoutTimeout : resourceCustomerGatewayRead ,
26
+ UpdateWithoutTimeout : resourceCustomerGatewayUpdate ,
27
+ DeleteWithoutTimeout : resourceCustomerGatewayDelete ,
26
28
27
29
Importer : & schema.ResourceImporter {
28
30
State : schema .ImportStatePassthrough ,
@@ -53,7 +55,7 @@ func ResourceCustomerGateway() *schema.Resource {
53
55
},
54
56
"ip_address" : {
55
57
Type : schema .TypeString ,
56
- Required : true ,
58
+ Optional : true ,
57
59
ForceNew : true ,
58
60
ValidateFunc : validation .IsIPv4Address ,
59
61
},
@@ -71,13 +73,12 @@ func ResourceCustomerGateway() *schema.Resource {
71
73
}
72
74
}
73
75
74
- func resourceCustomerGatewayCreate (d * schema.ResourceData , meta interface {}) error {
76
+ func resourceCustomerGatewayCreate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
75
77
conn := meta .(* conns.AWSClient ).EC2Conn
76
78
defaultTagsConfig := meta .(* conns.AWSClient ).DefaultTagsConfig
77
79
tags := defaultTagsConfig .MergeTags (tftags .New (d .Get ("tags" ).(map [string ]interface {})))
78
80
79
81
input := & ec2.CreateCustomerGatewayInput {
80
- IpAddress : aws .String (d .Get ("ip_address" ).(string )),
81
82
TagSpecifications : tagSpecificationsFromKeyValueTags (tags , ec2 .ResourceTypeCustomerGateway ),
82
83
Type : aws .String (d .Get ("type" ).(string )),
83
84
}
@@ -86,7 +87,7 @@ func resourceCustomerGatewayCreate(d *schema.ResourceData, meta interface{}) err
86
87
v , err := strconv .ParseInt (v .(string ), 10 , 64 )
87
88
88
89
if err != nil {
89
- return err
90
+ return diag . FromErr ( err )
90
91
}
91
92
92
93
input .BgpAsn = aws .Int64 (v )
@@ -100,28 +101,31 @@ func resourceCustomerGatewayCreate(d *schema.ResourceData, meta interface{}) err
100
101
input .DeviceName = aws .String (v .(string ))
101
102
}
102
103
103
- log .Printf ("[DEBUG] Creating EC2 Customer Gateway: %s" , input )
104
- output , err := conn .CreateCustomerGateway (input )
104
+ if v , ok := d .GetOk ("ip_address" ); ok {
105
+ input .IpAddress = aws .String (v .(string ))
106
+ }
107
+
108
+ output , err := conn .CreateCustomerGatewayWithContext (ctx , input )
105
109
106
110
if err != nil {
107
- return fmt .Errorf ("error creating EC2 Customer Gateway: %w " , err )
111
+ return diag .Errorf ("creating EC2 Customer Gateway: %s " , err )
108
112
}
109
113
110
114
d .SetId (aws .StringValue (output .CustomerGateway .CustomerGatewayId ))
111
115
112
- if _ , err := WaitCustomerGatewayCreated (conn , d .Id ()); err != nil {
113
- return fmt .Errorf ("error waiting for EC2 Customer Gateway (%s) create: %w " , d .Id (), err )
116
+ if _ , err := WaitCustomerGatewayCreated (ctx , conn , d .Id ()); err != nil {
117
+ return diag .Errorf ("waiting for EC2 Customer Gateway (%s) create: %s " , d .Id (), err )
114
118
}
115
119
116
- return resourceCustomerGatewayRead (d , meta )
120
+ return resourceCustomerGatewayRead (ctx , d , meta )
117
121
}
118
122
119
- func resourceCustomerGatewayRead (d * schema.ResourceData , meta interface {}) error {
123
+ func resourceCustomerGatewayRead (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
120
124
conn := meta .(* conns.AWSClient ).EC2Conn
121
125
defaultTagsConfig := meta .(* conns.AWSClient ).DefaultTagsConfig
122
126
ignoreTagsConfig := meta .(* conns.AWSClient ).IgnoreTagsConfig
123
127
124
- customerGateway , err := FindCustomerGatewayByID (conn , d .Id ())
128
+ customerGateway , err := FindCustomerGatewayByID (ctx , conn , d .Id ())
125
129
126
130
if ! d .IsNewResource () && tfresource .NotFound (err ) {
127
131
log .Printf ("[WARN] EC2 Customer Gateway (%s) not found, removing from state" , d .Id ())
@@ -130,7 +134,7 @@ func resourceCustomerGatewayRead(d *schema.ResourceData, meta interface{}) error
130
134
}
131
135
132
136
if err != nil {
133
- return fmt .Errorf ("error reading EC2 Customer Gateway (%s): %w " , d .Id (), err )
137
+ return diag .Errorf ("reading EC2 Customer Gateway (%s): %s " , d .Id (), err )
134
138
}
135
139
136
140
arn := arn.ARN {
@@ -151,35 +155,35 @@ func resourceCustomerGatewayRead(d *schema.ResourceData, meta interface{}) error
151
155
152
156
//lintignore:AWSR002
153
157
if err := d .Set ("tags" , tags .RemoveDefaultConfig (defaultTagsConfig ).Map ()); err != nil {
154
- return fmt .Errorf ("error setting tags: %w " , err )
158
+ return diag .Errorf ("setting tags: %s " , err )
155
159
}
156
160
157
161
if err := d .Set ("tags_all" , tags .Map ()); err != nil {
158
- return fmt .Errorf ("error setting tags_all: %w " , err )
162
+ return diag .Errorf ("setting tags_all: %s " , err )
159
163
}
160
164
161
165
return nil
162
166
}
163
167
164
- func resourceCustomerGatewayUpdate (d * schema.ResourceData , meta interface {}) error {
168
+ func resourceCustomerGatewayUpdate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
165
169
conn := meta .(* conns.AWSClient ).EC2Conn
166
170
167
171
if d .HasChange ("tags_all" ) {
168
172
o , n := d .GetChange ("tags_all" )
169
173
170
- if err := UpdateTags ( conn , d .Id (), o , n ); err != nil {
171
- return fmt .Errorf ("error updating EC2 Customer Gateway (%s) tags: %w " , d .Id (), err )
174
+ if err := UpdateTagsWithContext ( ctx , conn , d .Id (), o , n ); err != nil {
175
+ return diag .Errorf ("updating EC2 Customer Gateway (%s) tags: %s " , d .Id (), err )
172
176
}
173
177
}
174
178
175
- return resourceCustomerGatewayRead (d , meta )
179
+ return resourceCustomerGatewayRead (ctx , d , meta )
176
180
}
177
181
178
- func resourceCustomerGatewayDelete (d * schema.ResourceData , meta interface {}) error {
182
+ func resourceCustomerGatewayDelete (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
179
183
conn := meta .(* conns.AWSClient ).EC2Conn
180
184
181
185
log .Printf ("[INFO] Deleting EC2 Customer Gateway: %s" , d .Id ())
182
- _ , err := conn .DeleteCustomerGateway ( & ec2.DeleteCustomerGatewayInput {
186
+ _ , err := conn .DeleteCustomerGatewayWithContext ( ctx , & ec2.DeleteCustomerGatewayInput {
183
187
CustomerGatewayId : aws .String (d .Id ()),
184
188
})
185
189
@@ -188,11 +192,11 @@ func resourceCustomerGatewayDelete(d *schema.ResourceData, meta interface{}) err
188
192
}
189
193
190
194
if err != nil {
191
- return fmt .Errorf ("error deleting EC2 Customer Gateway (%s): %w " , d .Id (), err )
195
+ return diag .Errorf ("deleting EC2 Customer Gateway (%s): %s " , d .Id (), err )
192
196
}
193
197
194
- if _ , err := WaitCustomerGatewayDeleted (conn , d .Id ()); err != nil {
195
- return fmt .Errorf ("error waiting for EC2 Customer Gateway (%s) delete: %w " , d .Id (), err )
198
+ if _ , err := WaitCustomerGatewayDeleted (ctx , conn , d .Id ()); err != nil {
199
+ return diag .Errorf ("waiting for EC2 Customer Gateway (%s) delete: %s " , d .Id (), err )
196
200
}
197
201
198
202
return nil
0 commit comments