@@ -84,27 +84,29 @@ func (r *resourcePolicyResource) Create(ctx context.Context, request resource.Cr
84
84
85
85
conn := r .Meta ().AMPClient (ctx )
86
86
87
+ workspaceID := fwflex .StringValueFromFramework (ctx , data .WorkspaceID )
87
88
input := amp.PutResourcePolicyInput {
88
89
ClientToken : aws .String (sdkid .UniqueId ()),
89
90
PolicyDocument : fwflex .StringFromFramework (ctx , data .PolicyDocument ),
90
- WorkspaceId : fwflex . StringFromFramework ( ctx , data . WorkspaceId ),
91
+ WorkspaceId : aws . String ( workspaceID ),
91
92
}
92
93
93
- if ! data .RevisionId .IsNull () {
94
- input .RevisionId = fwflex .StringFromFramework (ctx , data .RevisionId )
94
+ if ! data .RevisionID .IsNull () {
95
+ input .RevisionId = fwflex .StringFromFramework (ctx , data .RevisionID )
95
96
}
96
97
97
98
output , err := conn .PutResourcePolicy (ctx , & input )
98
99
99
100
if err != nil {
100
- response .Diagnostics .AddError ("creating Prometheus Workspace Resource Policy" , err .Error ())
101
+ response .Diagnostics .AddError (fmt . Sprintf ( "creating Prometheus Workspace (%s) Resource Policy" , workspaceID ) , err .Error ())
101
102
return
102
103
}
103
104
104
105
// Set values for unknowns.
105
- data .RevisionId = fwflex .StringToFramework (ctx , output .RevisionId )
106
- if _ , err := waitResourcePolicyCreated (ctx , conn , data .WorkspaceId .ValueString (), r .CreateTimeout (ctx , data .Timeouts )); err != nil {
107
- response .Diagnostics .AddError (fmt .Sprintf ("waiting for Prometheus Workspace Resource Policy (%s) create" , data .WorkspaceId .ValueString ()), err .Error ())
106
+ data .RevisionID = fwflex .StringToFramework (ctx , output .RevisionId )
107
+
108
+ if _ , err := waitResourcePolicyCreated (ctx , conn , workspaceID , r .CreateTimeout (ctx , data .Timeouts )); err != nil {
109
+ response .Diagnostics .AddError (fmt .Sprintf ("waiting for Prometheus Workspace (%s) Resource Policy create" , workspaceID ), err .Error ())
108
110
return
109
111
}
110
112
@@ -120,7 +122,8 @@ func (r *resourcePolicyResource) Read(ctx context.Context, request resource.Read
120
122
121
123
conn := r .Meta ().AMPClient (ctx )
122
124
123
- output , err := findResourcePolicyByWorkspaceID (ctx , conn , data .WorkspaceId .ValueString ())
125
+ workspaceID := fwflex .StringValueFromFramework (ctx , data .WorkspaceID )
126
+ output , err := findResourcePolicyByWorkspaceID (ctx , conn , workspaceID )
124
127
125
128
if tfresource .NotFound (err ) {
126
129
response .Diagnostics .Append (fwdiag .NewResourceNotFoundWarningDiagnostic (err ))
@@ -129,7 +132,7 @@ func (r *resourcePolicyResource) Read(ctx context.Context, request resource.Read
129
132
}
130
133
131
134
if err != nil {
132
- response .Diagnostics .AddError (fmt .Sprintf ("reading Prometheus Workspace Resource Policy (%s)" , data . WorkspaceId . ValueString () ), err .Error ())
135
+ response .Diagnostics .AddError (fmt .Sprintf ("reading Prometheus Workspace (%s) Resource Policy " , workspaceID ), err .Error ())
133
136
return
134
137
}
135
138
@@ -155,27 +158,29 @@ func (r *resourcePolicyResource) Update(ctx context.Context, request resource.Up
155
158
156
159
conn := r .Meta ().AMPClient (ctx )
157
160
158
- if ! new .PolicyDocument .Equal (old .PolicyDocument ) {
161
+ if ! new .PolicyDocument .Equal (old .PolicyDocument ) || ! new .RevisionID .Equal (old .RevisionID ) {
162
+ workspaceID := fwflex .StringValueFromFramework (ctx , new .WorkspaceID )
159
163
input := amp.PutResourcePolicyInput {
160
164
ClientToken : aws .String (sdkid .UniqueId ()),
161
165
PolicyDocument : fwflex .StringFromFramework (ctx , new .PolicyDocument ),
162
- WorkspaceId : fwflex . StringFromFramework ( ctx , new . WorkspaceId ),
166
+ WorkspaceId : aws . String ( workspaceID ),
163
167
}
164
168
165
- if ! new .RevisionId .IsNull () {
166
- input .RevisionId = fwflex .StringFromFramework (ctx , new .RevisionId )
169
+ if ! new .RevisionID .IsNull () {
170
+ input .RevisionId = fwflex .StringFromFramework (ctx , new .RevisionID )
167
171
}
168
172
169
173
output , err := conn .PutResourcePolicy (ctx , & input )
170
174
171
175
if err != nil {
172
- response .Diagnostics .AddError (fmt .Sprintf ("updating Prometheus Workspace Resource Policy (%s)" , new . WorkspaceId . ValueString () ), err .Error ())
176
+ response .Diagnostics .AddError (fmt .Sprintf ("updating Prometheus Workspace (%s) Resource Policy " , workspaceID ), err .Error ())
173
177
return
174
178
}
175
179
176
- new .RevisionId = fwflex .StringToFramework (ctx , output .RevisionId )
177
- if _ , err := waitResourcePolicyUpdated (ctx , conn , new .WorkspaceId .ValueString (), r .UpdateTimeout (ctx , new .Timeouts )); err != nil {
178
- response .Diagnostics .AddError (fmt .Sprintf ("waiting for Prometheus Workspace Resource Policy (%s) update" , new .WorkspaceId .ValueString ()), err .Error ())
180
+ new .RevisionID = fwflex .StringToFramework (ctx , output .RevisionId )
181
+
182
+ if _ , err := waitResourcePolicyUpdated (ctx , conn , workspaceID , r .UpdateTimeout (ctx , new .Timeouts )); err != nil {
183
+ response .Diagnostics .AddError (fmt .Sprintf ("waiting for Prometheus Workspace (%s) Resource Policy update" , workspaceID ), err .Error ())
179
184
return
180
185
}
181
186
}
@@ -192,13 +197,14 @@ func (r *resourcePolicyResource) Delete(ctx context.Context, request resource.De
192
197
193
198
conn := r .Meta ().AMPClient (ctx )
194
199
200
+ workspaceID := fwflex .StringValueFromFramework (ctx , data .WorkspaceID )
195
201
input := amp.DeleteResourcePolicyInput {
196
202
ClientToken : aws .String (sdkid .UniqueId ()),
197
- WorkspaceId : fwflex . StringFromFramework ( ctx , data . WorkspaceId ),
203
+ WorkspaceId : aws . String ( workspaceID ),
198
204
}
199
205
200
- if ! data .RevisionId .IsNull () {
201
- input .RevisionId = fwflex .StringFromFramework (ctx , data .RevisionId )
206
+ if ! data .RevisionID .IsNull () {
207
+ input .RevisionId = fwflex .StringFromFramework (ctx , data .RevisionID )
202
208
}
203
209
204
210
_ , err := conn .DeleteResourcePolicy (ctx , & input )
@@ -208,12 +214,12 @@ func (r *resourcePolicyResource) Delete(ctx context.Context, request resource.De
208
214
}
209
215
210
216
if err != nil {
211
- response .Diagnostics .AddError (fmt .Sprintf ("deleting Prometheus Workspace Resource Policy (%s)" , data . WorkspaceId . ValueString () ), err .Error ())
217
+ response .Diagnostics .AddError (fmt .Sprintf ("deleting Prometheus Workspace (%s) Resource Policy " , workspaceID ), err .Error ())
212
218
return
213
219
}
214
220
215
- if _ , err := waitResourcePolicyDeleted (ctx , conn , data . WorkspaceId . ValueString () , r .DeleteTimeout (ctx , data .Timeouts )); err != nil {
216
- response .Diagnostics .AddError (fmt .Sprintf ("waiting for Prometheus Workspace Resource Policy (%s) delete" , data . WorkspaceId . ValueString () ), err .Error ())
221
+ if _ , err := waitResourcePolicyDeleted (ctx , conn , workspaceID , r .DeleteTimeout (ctx , data .Timeouts )); err != nil {
222
+ response .Diagnostics .AddError (fmt .Sprintf ("waiting for Prometheus Workspace (%s) Resource Policy delete" , workspaceID ), err .Error ())
217
223
return
218
224
}
219
225
}
@@ -225,17 +231,21 @@ func (r *resourcePolicyResource) ImportState(ctx context.Context, request resour
225
231
type resourcePolicyResourceModel struct {
226
232
framework.WithRegionModel
227
233
PolicyDocument fwtypes.IAMPolicy `tfsdk:"policy_document"`
228
- RevisionId types.String `tfsdk:"revision_id"`
234
+ RevisionID types.String `tfsdk:"revision_id"`
229
235
Timeouts timeouts.Value `tfsdk:"timeouts"`
230
- WorkspaceId types.String `tfsdk:"workspace_id"`
236
+ WorkspaceID types.String `tfsdk:"workspace_id"`
231
237
}
232
238
233
239
func findResourcePolicyByWorkspaceID (ctx context.Context , conn * amp.Client , workspaceID string ) (* amp.DescribeResourcePolicyOutput , error ) {
234
240
input := amp.DescribeResourcePolicyInput {
235
241
WorkspaceId : aws .String (workspaceID ),
236
242
}
237
243
238
- output , err := conn .DescribeResourcePolicy (ctx , & input )
244
+ return findResourcePolicy (ctx , conn , & input )
245
+ }
246
+
247
+ func findResourcePolicy (ctx context.Context , conn * amp.Client , input * amp.DescribeResourcePolicyInput ) (* amp.DescribeResourcePolicyOutput , error ) {
248
+ output , err := conn .DescribeResourcePolicy (ctx , input )
239
249
240
250
if errs.IsA [* awstypes.ResourceNotFoundException ](err ) {
241
251
return nil , & retry.NotFoundError {
@@ -248,7 +258,7 @@ func findResourcePolicyByWorkspaceID(ctx context.Context, conn *amp.Client, work
248
258
return nil , err
249
259
}
250
260
251
- if output == nil {
261
+ if output == nil || output . PolicyDocument == nil {
252
262
return nil , tfresource .NewEmptyResultError (input )
253
263
}
254
264
0 commit comments