@@ -8,21 +8,24 @@ import (
8
8
"log"
9
9
"regexp"
10
10
11
- "github.com/aws/aws-sdk-go/aws"
12
- "github.com/aws/aws-sdk-go/service/timestreamwrite"
13
- "github.com/hashicorp /aws-sdk-go-base/ v2/awsv1shim/v2/tfawserr "
11
+ "github.com/aws/aws-sdk-go-v2 /aws"
12
+ "github.com/aws/aws-sdk-go-v2 /service/timestreamwrite"
13
+ "github.com/aws /aws-sdk-go-v2/service/timestreamwrite/types "
14
14
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
15
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
15
16
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
16
17
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
17
18
"github.com/hashicorp/terraform-provider-aws/internal/conns"
19
+ "github.com/hashicorp/terraform-provider-aws/internal/errs"
18
20
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
21
+ "github.com/hashicorp/terraform-provider-aws/internal/tfresource"
19
22
"github.com/hashicorp/terraform-provider-aws/internal/verify"
20
23
"github.com/hashicorp/terraform-provider-aws/names"
21
24
)
22
25
23
26
// @SDKResource("aws_timestreamwrite_database", name="Database")
24
27
// @Tags(identifierAttribute="arn")
25
- func ResourceDatabase () * schema.Resource {
28
+ func resourceDatabase () * schema.Resource {
26
29
return & schema.Resource {
27
30
CreateWithoutTimeout : resourceDatabaseCreate ,
28
31
ReadWithoutTimeout : resourceDatabaseRead ,
@@ -38,7 +41,6 @@ func ResourceDatabase() *schema.Resource {
38
41
Type : schema .TypeString ,
39
42
Computed : true ,
40
43
},
41
-
42
44
"database_name" : {
43
45
Type : schema .TypeString ,
44
46
Required : true ,
@@ -48,7 +50,6 @@ func ResourceDatabase() *schema.Resource {
48
50
validation .StringMatch (regexp .MustCompile (`^[a-zA-Z0-9_.-]+$` ), "must only include alphanumeric, underscore, period, or hyphen characters" ),
49
51
),
50
52
},
51
-
52
53
"kms_key_id" : {
53
54
Type : schema .TypeString ,
54
55
Optional : true ,
@@ -59,7 +60,6 @@ func ResourceDatabase() *schema.Resource {
59
60
// To avoid importing an extra service in this resource, input here is restricted to only ARNs.
60
61
ValidateFunc : verify .ValidARN ,
61
62
},
62
-
63
63
"table_count" : {
64
64
Type : schema .TypeInt ,
65
65
Computed : true ,
@@ -73,43 +73,35 @@ func ResourceDatabase() *schema.Resource {
73
73
}
74
74
75
75
func resourceDatabaseCreate (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
76
- conn := meta .(* conns.AWSClient ).TimestreamWriteConn (ctx )
76
+ conn := meta .(* conns.AWSClient ).TimestreamWriteClient (ctx )
77
77
78
- dbName := d .Get ("database_name" ).(string )
78
+ name := d .Get ("database_name" ).(string )
79
79
input := & timestreamwrite.CreateDatabaseInput {
80
- DatabaseName : aws .String (dbName ),
80
+ DatabaseName : aws .String (name ),
81
81
Tags : getTagsIn (ctx ),
82
82
}
83
83
84
84
if v , ok := d .GetOk ("kms_key_id" ); ok {
85
85
input .KmsKeyId = aws .String (v .(string ))
86
86
}
87
87
88
- resp , err := conn .CreateDatabaseWithContext (ctx , input )
88
+ output , err := conn .CreateDatabase (ctx , input )
89
89
90
90
if err != nil {
91
- return diag .Errorf ("creating Timestream Database (%s): %s" , dbName , err )
91
+ return diag .Errorf ("creating Timestream Database (%s): %s" , name , err )
92
92
}
93
93
94
- if resp == nil || resp .Database == nil {
95
- return diag .Errorf ("creating Timestream Database (%s): empty output" , dbName )
96
- }
97
-
98
- d .SetId (aws .StringValue (resp .Database .DatabaseName ))
94
+ d .SetId (aws .ToString (output .Database .DatabaseName ))
99
95
100
96
return resourceDatabaseRead (ctx , d , meta )
101
97
}
102
98
103
99
func resourceDatabaseRead (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
104
- conn := meta .(* conns.AWSClient ).TimestreamWriteConn (ctx )
100
+ conn := meta .(* conns.AWSClient ).TimestreamWriteClient (ctx )
105
101
106
- input := & timestreamwrite.DescribeDatabaseInput {
107
- DatabaseName : aws .String (d .Id ()),
108
- }
109
-
110
- resp , err := conn .DescribeDatabaseWithContext (ctx , input )
102
+ db , err := findDatabaseByName (ctx , conn , d .Id ())
111
103
112
- if ! d .IsNewResource () && tfawserr . ErrCodeEquals (err , timestreamwrite . ErrCodeResourceNotFoundException ) {
104
+ if ! d .IsNewResource () && tfresource . NotFound (err ) {
113
105
log .Printf ("[WARN] Timestream Database %s not found, removing from state" , d .Id ())
114
106
d .SetId ("" )
115
107
return nil
@@ -119,14 +111,7 @@ func resourceDatabaseRead(ctx context.Context, d *schema.ResourceData, meta inte
119
111
return diag .Errorf ("reading Timestream Database (%s): %s" , d .Id (), err )
120
112
}
121
113
122
- if resp == nil || resp .Database == nil {
123
- return diag .Errorf ("reading Timestream Database (%s): empty output" , d .Id ())
124
- }
125
-
126
- db := resp .Database
127
- arn := aws .StringValue (db .Arn )
128
-
129
- d .Set ("arn" , arn )
114
+ d .Set ("arn" , db .Arn )
130
115
d .Set ("database_name" , db .DatabaseName )
131
116
d .Set ("kms_key_id" , db .KmsKeyId )
132
117
d .Set ("table_count" , db .TableCount )
@@ -135,15 +120,15 @@ func resourceDatabaseRead(ctx context.Context, d *schema.ResourceData, meta inte
135
120
}
136
121
137
122
func resourceDatabaseUpdate (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
138
- conn := meta .(* conns.AWSClient ).TimestreamWriteConn (ctx )
123
+ conn := meta .(* conns.AWSClient ).TimestreamWriteClient (ctx )
139
124
140
125
if d .HasChange ("kms_key_id" ) {
141
126
input := & timestreamwrite.UpdateDatabaseInput {
142
127
DatabaseName : aws .String (d .Id ()),
143
128
KmsKeyId : aws .String (d .Get ("kms_key_id" ).(string )),
144
129
}
145
130
146
- _ , err := conn .UpdateDatabaseWithContext (ctx , input )
131
+ _ , err := conn .UpdateDatabase (ctx , input )
147
132
148
133
if err != nil {
149
134
return diag .Errorf ("updating Timestream Database (%s): %s" , d .Id (), err )
@@ -154,14 +139,14 @@ func resourceDatabaseUpdate(ctx context.Context, d *schema.ResourceData, meta in
154
139
}
155
140
156
141
func resourceDatabaseDelete (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
157
- conn := meta .(* conns.AWSClient ).TimestreamWriteConn (ctx )
142
+ conn := meta .(* conns.AWSClient ).TimestreamWriteClient (ctx )
158
143
159
144
log .Printf ("[INFO] Deleting Timestream Database: %s" , d .Id ())
160
- _ , err := conn .DeleteDatabaseWithContext (ctx , & timestreamwrite.DeleteDatabaseInput {
145
+ _ , err := conn .DeleteDatabase (ctx , & timestreamwrite.DeleteDatabaseInput {
161
146
DatabaseName : aws .String (d .Id ()),
162
147
})
163
148
164
- if tfawserr . ErrCodeEquals (err , timestreamwrite . ErrCodeResourceNotFoundException ) {
149
+ if errs. IsA [ * types. ResourceNotFoundException ] (err ) {
165
150
return nil
166
151
}
167
152
@@ -171,3 +156,28 @@ func resourceDatabaseDelete(ctx context.Context, d *schema.ResourceData, meta in
171
156
172
157
return nil
173
158
}
159
+
160
+ func findDatabaseByName (ctx context.Context , conn * timestreamwrite.Client , name string ) (* types.Database , error ) {
161
+ input := & timestreamwrite.DescribeDatabaseInput {
162
+ DatabaseName : aws .String (name ),
163
+ }
164
+
165
+ output , err := conn .DescribeDatabase (ctx , input )
166
+
167
+ if errs.IsA [* types.ResourceNotFoundException ](err ) {
168
+ return nil , & retry.NotFoundError {
169
+ LastError : err ,
170
+ LastRequest : input ,
171
+ }
172
+ }
173
+
174
+ if err != nil {
175
+ return nil , err
176
+ }
177
+
178
+ if output == nil || output .Database == nil {
179
+ return nil , tfresource .NewEmptyResultError (input )
180
+ }
181
+
182
+ return output .Database , nil
183
+ }
0 commit comments