@@ -10,26 +10,29 @@ import (
10
10
"github.com/aws/aws-sdk-go-v2/service/verifiedpermissions"
11
11
awstypes "github.com/aws/aws-sdk-go-v2/service/verifiedpermissions/types"
12
12
"github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
13
- "github.com/hashicorp/terraform-plugin-framework/path"
14
13
"github.com/hashicorp/terraform-plugin-framework/resource"
15
14
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
16
15
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
17
16
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
18
17
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
19
18
"github.com/hashicorp/terraform-plugin-framework/types"
20
19
"github.com/hashicorp/terraform-plugin-log/tflog"
21
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id"
20
+ sdkid "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id"
22
21
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
23
22
"github.com/hashicorp/terraform-provider-aws/internal/create"
24
23
"github.com/hashicorp/terraform-provider-aws/internal/errs"
24
+ "github.com/hashicorp/terraform-provider-aws/internal/errs/fwdiag"
25
25
"github.com/hashicorp/terraform-provider-aws/internal/framework"
26
- "github.com/hashicorp/terraform-provider-aws/internal/framework/flex"
26
+ fwflex "github.com/hashicorp/terraform-provider-aws/internal/framework/flex"
27
27
fwtypes "github.com/hashicorp/terraform-provider-aws/internal/framework/types"
28
+ tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
28
29
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
29
30
"github.com/hashicorp/terraform-provider-aws/names"
30
31
)
31
32
32
33
// @FrameworkResource("aws_verifiedpermissions_policy_store", name="Policy Store")
34
+ // @Tags(identifierAttribute="arn")
35
+ // @Testing(tagsTest=false)
33
36
func newResourcePolicyStore (context.Context ) (resource.ResourceWithConfigure , error ) {
34
37
r := & resourcePolicyStore {}
35
38
@@ -42,6 +45,7 @@ const (
42
45
43
46
type resourcePolicyStore struct {
44
47
framework.ResourceWithConfigure
48
+ framework.WithImportByID
45
49
}
46
50
47
51
func (r * resourcePolicyStore ) Schema (ctx context.Context , request resource.SchemaRequest , response * resource.SchemaResponse ) {
@@ -58,6 +62,8 @@ func (r *resourcePolicyStore) Schema(ctx context.Context, request resource.Schem
58
62
stringplanmodifier .UseStateForUnknown (),
59
63
},
60
64
},
65
+ names .AttrTags : tftags .TagsAttribute (),
66
+ names .AttrTagsAll : tftags .TagsAttributeComputedOnly (),
61
67
},
62
68
Blocks : map [string ]schema.Block {
63
69
"validation_settings" : schema.ListNestedBlock {
@@ -82,26 +88,26 @@ func (r *resourcePolicyStore) Schema(ctx context.Context, request resource.Schem
82
88
}
83
89
84
90
func (r * resourcePolicyStore ) Create (ctx context.Context , request resource.CreateRequest , response * resource.CreateResponse ) {
85
- conn := r .Meta ().VerifiedPermissionsClient (ctx )
86
- var plan resourcePolicyStoreData
87
-
88
- response .Diagnostics .Append (request .Plan .Get (ctx , & plan )... )
89
-
91
+ var data resourcePolicyStoreData
92
+ response .Diagnostics .Append (request .Plan .Get (ctx , & data )... )
90
93
if response .Diagnostics .HasError () {
91
94
return
92
95
}
93
96
94
- input := & verifiedpermissions.CreatePolicyStoreInput {}
95
- response .Diagnostics .Append (flex .Expand (ctx , plan , input )... )
97
+ conn := r .Meta ().VerifiedPermissionsClient (ctx )
96
98
99
+ var input verifiedpermissions.CreatePolicyStoreInput
100
+ response .Diagnostics .Append (fwflex .Expand (ctx , data , & input )... )
97
101
if response .Diagnostics .HasError () {
98
102
return
99
103
}
100
104
101
- clientToken := id .UniqueId ()
105
+ // Additional fields.
106
+ clientToken := sdkid .UniqueId ()
102
107
input .ClientToken = aws .String (clientToken )
108
+ input .Tags = getTagsIn (ctx )
103
109
104
- output , err := conn .CreatePolicyStore (ctx , input )
110
+ output , err := conn .CreatePolicyStore (ctx , & input )
105
111
106
112
if err != nil {
107
113
response .Diagnostics .AddError (
@@ -111,134 +117,123 @@ func (r *resourcePolicyStore) Create(ctx context.Context, request resource.Creat
111
117
return
112
118
}
113
119
114
- state := plan
115
- state .ID = flex .StringToFramework (ctx , output .PolicyStoreId )
116
-
117
- response .Diagnostics .Append (flex .Flatten (ctx , output , & state )... )
118
-
120
+ // Set values for unknowns.
121
+ response .Diagnostics .Append (fwflex .Flatten (ctx , output , & data )... )
119
122
if response .Diagnostics .HasError () {
120
123
return
121
124
}
125
+ data .ID = fwflex .StringToFramework (ctx , output .PolicyStoreId )
122
126
123
- response .Diagnostics .Append (response .State .Set (ctx , & state )... )
127
+ response .Diagnostics .Append (response .State .Set (ctx , & data )... )
124
128
}
125
129
126
130
func (r * resourcePolicyStore ) Read (ctx context.Context , request resource.ReadRequest , response * resource.ReadResponse ) {
127
- conn := r .Meta ().VerifiedPermissionsClient (ctx )
128
- var state resourcePolicyStoreData
129
-
130
- response .Diagnostics .Append (request .State .Get (ctx , & state )... )
131
-
131
+ var data resourcePolicyStoreData
132
+ response .Diagnostics .Append (request .State .Get (ctx , & data )... )
132
133
if response .Diagnostics .HasError () {
133
134
return
134
135
}
135
136
136
- output , err := findPolicyStoreByID (ctx , conn , state .ID .ValueString ())
137
+ conn := r .Meta ().VerifiedPermissionsClient (ctx )
138
+
139
+ output , err := findPolicyStoreByID (ctx , conn , data .ID .ValueString ())
137
140
138
141
if tfresource .NotFound (err ) {
142
+ response .Diagnostics .Append (fwdiag .NewResourceNotFoundWarningDiagnostic (err ))
139
143
response .State .RemoveResource (ctx )
144
+
140
145
return
141
146
}
142
147
143
148
if err != nil {
144
149
response .Diagnostics .AddError (
145
- create .ProblemStandardMessage (names .VerifiedPermissions , create .ErrActionReading , ResNamePolicyStore , state .PolicyStoreID .ValueString (), err ),
150
+ create .ProblemStandardMessage (names .VerifiedPermissions , create .ErrActionReading , ResNamePolicyStore , data .PolicyStoreID .ValueString (), err ),
146
151
err .Error (),
147
152
)
148
153
return
149
154
}
150
155
151
- response . Diagnostics . Append ( flex . Flatten ( ctx , output , & state ) ... )
152
-
156
+ // Set attributes for import.
157
+ response . Diagnostics . Append ( fwflex . Flatten ( ctx , output , & data ) ... )
153
158
if response .Diagnostics .HasError () {
154
159
return
155
160
}
156
161
157
- response .Diagnostics .Append (response .State .Set (ctx , & state )... )
162
+ response .Diagnostics .Append (response .State .Set (ctx , & data )... )
158
163
}
159
164
160
165
func (r * resourcePolicyStore ) Update (ctx context.Context , request resource.UpdateRequest , response * resource.UpdateResponse ) {
161
- conn := r .Meta ().VerifiedPermissionsClient (ctx )
162
- var state , plan resourcePolicyStoreData
163
-
164
- response .Diagnostics .Append (request .State .Get (ctx , & state )... )
165
-
166
+ var old , new resourcePolicyStoreData
167
+ response .Diagnostics .Append (request .State .Get (ctx , & old )... )
166
168
if response .Diagnostics .HasError () {
167
169
return
168
170
}
169
-
170
- response .Diagnostics .Append (request .Plan .Get (ctx , & plan )... )
171
-
171
+ response .Diagnostics .Append (request .Plan .Get (ctx , & new )... )
172
172
if response .Diagnostics .HasError () {
173
173
return
174
174
}
175
175
176
- if ! plan .Description .Equal (state .Description ) || ! plan .ValidationSettings .Equal (state .ValidationSettings ) {
177
- input := & verifiedpermissions.UpdatePolicyStoreInput {}
178
- response .Diagnostics .Append (flex .Expand (ctx , plan , input )... )
176
+ conn := r .Meta ().VerifiedPermissionsClient (ctx )
179
177
178
+ if ! new .Description .Equal (old .Description ) || ! new .ValidationSettings .Equal (old .ValidationSettings ) {
179
+ var input verifiedpermissions.UpdatePolicyStoreInput
180
+ response .Diagnostics .Append (fwflex .Expand (ctx , new , & input )... )
180
181
if response .Diagnostics .HasError () {
181
182
return
182
183
}
183
184
184
- output , err := conn .UpdatePolicyStore (ctx , input )
185
+ _ , err := conn .UpdatePolicyStore (ctx , & input )
185
186
186
187
if err != nil {
187
188
response .Diagnostics .AddError (
188
- create .ProblemStandardMessage (names .VerifiedPermissions , create .ErrActionUpdating , ResNamePolicyStore , state .PolicyStoreID .ValueString (), err ),
189
+ create .ProblemStandardMessage (names .VerifiedPermissions , create .ErrActionUpdating , ResNamePolicyStore , old .PolicyStoreID .ValueString (), err ),
189
190
err .Error (),
190
191
)
191
192
return
192
193
}
193
-
194
- response .Diagnostics .Append (flex .Flatten (ctx , output , & plan )... )
195
194
}
196
195
197
- response .Diagnostics .Append (response .State .Set (ctx , & plan )... )
196
+ response .Diagnostics .Append (response .State .Set (ctx , & new )... )
198
197
}
199
198
200
199
func (r * resourcePolicyStore ) Delete (ctx context.Context , request resource.DeleteRequest , response * resource.DeleteResponse ) {
201
- conn := r .Meta ().VerifiedPermissionsClient (ctx )
202
- var state resourcePolicyStoreData
203
-
204
- response .Diagnostics .Append (request .State .Get (ctx , & state )... )
205
-
200
+ var data resourcePolicyStoreData
201
+ response .Diagnostics .Append (request .State .Get (ctx , & data )... )
206
202
if response .Diagnostics .HasError () {
207
203
return
208
204
}
209
205
206
+ conn := r .Meta ().VerifiedPermissionsClient (ctx )
207
+
210
208
tflog .Debug (ctx , "deleting Verified Permissions Policy Store" , map [string ]any {
211
- names .AttrID : state .ID .ValueString (),
209
+ names .AttrID : data .ID .ValueString (),
212
210
})
213
211
214
- input := & verifiedpermissions.DeletePolicyStoreInput {
215
- PolicyStoreId : flex .StringFromFramework (ctx , state .ID ),
212
+ input := verifiedpermissions.DeletePolicyStoreInput {
213
+ PolicyStoreId : fwflex .StringFromFramework (ctx , data .ID ),
216
214
}
217
-
218
- _ , err := conn .DeletePolicyStore (ctx , input )
215
+ _ , err := conn .DeletePolicyStore (ctx , & input )
219
216
220
217
if errs.IsA [* awstypes.ResourceNotFoundException ](err ) {
221
218
return
222
219
}
223
220
224
221
if err != nil {
225
222
response .Diagnostics .AddError (
226
- create .ProblemStandardMessage (names .VerifiedPermissions , create .ErrActionDeleting , ResNamePolicyStore , state .PolicyStoreID .ValueString (), err ),
223
+ create .ProblemStandardMessage (names .VerifiedPermissions , create .ErrActionDeleting , ResNamePolicyStore , data .PolicyStoreID .ValueString (), err ),
227
224
err .Error (),
228
225
)
229
226
return
230
227
}
231
228
}
232
229
233
- func (r * resourcePolicyStore ) ImportState (ctx context.Context , request resource.ImportStateRequest , response * resource.ImportStateResponse ) {
234
- resource .ImportStatePassthroughID (ctx , path .Root (names .AttrID ), request , response )
235
- }
236
-
237
230
type resourcePolicyStoreData struct {
238
231
ARN types.String `tfsdk:"arn"`
239
232
Description types.String `tfsdk:"description"`
240
233
ID types.String `tfsdk:"id"`
241
234
PolicyStoreID types.String `tfsdk:"policy_store_id"`
235
+ Tags tftags.Map `tfsdk:"tags"`
236
+ TagsAll tftags.Map `tfsdk:"tags_all"`
242
237
ValidationSettings fwtypes.ListNestedObjectValueOf [validationSettings ] `tfsdk:"validation_settings"`
243
238
}
244
239
0 commit comments