Skip to content

Commit 8aa77f7

Browse files
committed
managed service and created_at moved to autoflex.
1 parent 20d02a6 commit 8aa77f7

File tree

1 file changed

+22
-118
lines changed

1 file changed

+22
-118
lines changed

internal/service/odb/network.go

Lines changed: 22 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,15 @@ package odb
55
import (
66
"context"
77
"errors"
8-
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
9-
"github.com/hashicorp/terraform-plugin-framework/attr"
10-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/id"
11-
"github.com/hashicorp/terraform-provider-aws/internal/enum"
12-
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
138
"time"
149

1510
"github.com/aws/aws-sdk-go-v2/aws"
1611
"github.com/aws/aws-sdk-go-v2/service/odb"
1712
odbtypes "github.com/aws/aws-sdk-go-v2/service/odb/types"
1813
"github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts"
14+
"github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes"
15+
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
16+
"github.com/hashicorp/terraform-plugin-framework/attr"
1917
"github.com/hashicorp/terraform-plugin-framework/path"
2018
"github.com/hashicorp/terraform-plugin-framework/resource"
2119
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
@@ -26,13 +24,15 @@ import (
2624
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
2725
"github.com/hashicorp/terraform-provider-aws/internal/conns"
2826
"github.com/hashicorp/terraform-provider-aws/internal/create"
27+
"github.com/hashicorp/terraform-provider-aws/internal/enum"
2928
"github.com/hashicorp/terraform-provider-aws/internal/errs"
3029
"github.com/hashicorp/terraform-provider-aws/internal/errs/fwdiag"
3130
"github.com/hashicorp/terraform-provider-aws/internal/framework"
3231
"github.com/hashicorp/terraform-provider-aws/internal/framework/flex"
3332
fwtypes "github.com/hashicorp/terraform-provider-aws/internal/framework/types"
3433
"github.com/hashicorp/terraform-provider-aws/internal/sweep"
3534
sweepfw "github.com/hashicorp/terraform-provider-aws/internal/sweep/framework"
35+
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
3636
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
3737
"github.com/hashicorp/terraform-provider-aws/names"
3838
)
@@ -200,49 +200,13 @@ func (r *resourceNetwork) Schema(ctx context.Context, req resource.SchemaRequest
200200
},
201201
"created_at": schema.StringAttribute{
202202
Computed: true,
203+
CustomType: timetypes.RFC3339Type{},
203204
Description: "The date and time when the ODB network was created.",
204205
},
205-
"managed_services": schema.ObjectAttribute{
206+
"managed_services": schema.ListAttribute{
206207
Computed: true,
207-
CustomType: fwtypes.NewObjectTypeOf[odbNetworkManagedServicesResourceModel](ctx),
208+
CustomType: fwtypes.NewListNestedObjectTypeOf[odbNetworkManagedServicesResourceModel](ctx),
208209
Description: "The managed services configuration for the ODB network.",
209-
AttributeTypes: map[string]attr.Type{
210-
"service_network_arn": types.StringType,
211-
"resource_gateway_arn": types.StringType,
212-
"managed_service_ipv4_cidrs": types.SetType{
213-
ElemType: types.StringType,
214-
},
215-
"service_network_endpoint": types.ObjectType{
216-
AttrTypes: map[string]attr.Type{
217-
"vpc_endpoint_id": types.StringType,
218-
"vpc_endpoint_type": fwtypes.StringEnumType[odbtypes.VpcEndpointType](),
219-
},
220-
},
221-
"managed_s3_backup_access": types.ObjectType{
222-
AttrTypes: map[string]attr.Type{
223-
"status": fwtypes.StringEnumType[odbtypes.ManagedResourceStatus](),
224-
"ipv4_addresses": types.SetType{
225-
ElemType: types.StringType,
226-
},
227-
},
228-
},
229-
"zero_tl_access": types.ObjectType{
230-
AttrTypes: map[string]attr.Type{
231-
"status": fwtypes.StringEnumType[odbtypes.ManagedResourceStatus](),
232-
"cidr": types.StringType,
233-
},
234-
},
235-
"s3_access": types.ObjectType{
236-
AttrTypes: map[string]attr.Type{
237-
"status": fwtypes.StringEnumType[odbtypes.ManagedResourceStatus](),
238-
"ipv4_addresses": types.SetType{
239-
ElemType: types.StringType,
240-
},
241-
"domain_name": types.StringType,
242-
"s3_policy_document": types.StringType,
243-
},
244-
},
245-
},
246210
},
247211
names.AttrTags: tftags.TagsAttribute(),
248212
names.AttrTagsAll: tftags.TagsAttributeComputedOnly(),
@@ -267,8 +231,7 @@ func (r *resourceNetwork) Create(ctx context.Context, req resource.CreateRequest
267231
}
268232

269233
input := odb.CreateOdbNetworkInput{
270-
ClientToken: aws.String(id.UniqueId()),
271-
Tags: getTagsIn(ctx),
234+
Tags: getTagsIn(ctx),
272235
}
273236

274237
resp.Diagnostics.Append(flex.Expand(ctx, plan, &input)...)
@@ -302,7 +265,7 @@ func (r *resourceNetwork) Create(ctx context.Context, req resource.CreateRequest
302265
}
303266
//set zero etl access
304267
if plan.ZeroEtlAccess.ValueEnum() == odbtypes.AccessEnabled {
305-
_, err = waitManagedServiceEnabled(ctx, conn, *createdOdbNetwork.OdbNetworkId, managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
268+
createdOdbNetwork, err = waitManagedServiceEnabled(ctx, conn, *createdOdbNetwork.OdbNetworkId, managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
306269
return managedService.ZeroEtlAccess.Status
307270
})
308271
if err != nil {
@@ -312,10 +275,8 @@ func (r *resourceNetwork) Create(ctx context.Context, req resource.CreateRequest
312275
)
313276
return
314277
}
315-
plan.ZeroEtlAccess = fwtypes.StringEnumValue(odbtypes.AccessEnabled)
316-
317278
} else if plan.ZeroEtlAccess.ValueEnum() == odbtypes.AccessDisabled {
318-
_, err = waitManagedServiceDisabled(ctx, conn, *createdOdbNetwork.OdbNetworkId, managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
279+
createdOdbNetwork, err = waitManagedServiceDisabled(ctx, conn, *createdOdbNetwork.OdbNetworkId, managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
319280
return managedService.ZeroEtlAccess.Status
320281
})
321282
if err != nil {
@@ -325,12 +286,10 @@ func (r *resourceNetwork) Create(ctx context.Context, req resource.CreateRequest
325286
)
326287
return
327288
}
328-
plan.ZeroEtlAccess = fwtypes.StringEnumValue(odbtypes.AccessDisabled)
329289
}
330-
331290
//set s3 access
332291
if plan.S3Access.ValueEnum() == odbtypes.AccessEnabled {
333-
_, err = waitManagedServiceEnabled(ctx, conn, *createdOdbNetwork.OdbNetworkId, managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
292+
createdOdbNetwork, err = waitManagedServiceEnabled(ctx, conn, *createdOdbNetwork.OdbNetworkId, managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
334293
return managedService.S3Access.Status
335294
})
336295
if err != nil {
@@ -340,10 +299,8 @@ func (r *resourceNetwork) Create(ctx context.Context, req resource.CreateRequest
340299
)
341300
return
342301
}
343-
plan.S3Access = fwtypes.StringEnumValue(odbtypes.AccessEnabled)
344-
345302
} else if plan.S3Access.ValueEnum() == odbtypes.AccessDisabled {
346-
_, err = waitManagedServiceDisabled(ctx, conn, *createdOdbNetwork.OdbNetworkId, managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
303+
createdOdbNetwork, err = waitManagedServiceDisabled(ctx, conn, *createdOdbNetwork.OdbNetworkId, managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
347304
return managedService.S3Access.Status
348305
})
349306
if err != nil {
@@ -353,17 +310,12 @@ func (r *resourceNetwork) Create(ctx context.Context, req resource.CreateRequest
353310
)
354311
return
355312
}
356-
plan.S3Access = fwtypes.StringEnumValue(odbtypes.AccessDisabled)
357313
}
358314

359-
plan.S3PolicyDocument = types.StringPointerValue(createdOdbNetwork.ManagedServices.S3Access.S3PolicyDocument)
360-
plan.CreatedAt = types.StringValue(createdOdbNetwork.CreatedAt.Format(time.RFC3339))
361-
362315
resp.Diagnostics.Append(flex.Flatten(ctx, createdOdbNetwork, &plan)...)
363316
if resp.Diagnostics.HasError() {
364317
return
365318
}
366-
367319
resp.Diagnostics.Append(resp.State.Set(ctx, plan)...)
368320

369321
}
@@ -390,36 +342,13 @@ func (r *resourceNetwork) Read(ctx context.Context, req resource.ReadRequest, re
390342
)
391343
return
392344
}
393-
if out.ManagedServices != nil {
394-
395-
readS3AccessStatus, err := managedServiceStatusToAccessStatus(out.ManagedServices.S3Access.Status)
396-
if err != nil {
397-
resp.Diagnostics.AddError(
398-
create.ProblemStandardMessage(names.ODB, create.ErrActionReading, ResNameNetwork, state.OdbNetworkId.String(), err),
399-
err.Error(),
400-
)
401-
return
402-
}
403-
state.S3Access = fwtypes.StringEnumValue(readS3AccessStatus)
404-
state.S3PolicyDocument = types.StringPointerValue(out.ManagedServices.S3Access.S3PolicyDocument)
405-
406-
readZeroEtlAccessStatus, err := managedServiceStatusToAccessStatus(out.ManagedServices.ZeroEtlAccess.Status)
407-
if err != nil {
408-
resp.Diagnostics.AddError(
409-
create.ProblemStandardMessage(names.ODB, create.ErrActionReading, ResNameNetwork, state.OdbNetworkId.String(), err),
410-
err.Error(),
411-
)
412-
return
413-
}
414-
state.ZeroEtlAccess = fwtypes.StringEnumValue(readZeroEtlAccessStatus)
415-
} else {
345+
if out.ManagedServices == nil {
416346
resp.Diagnostics.AddError(
417347
create.ProblemStandardMessage(names.ODB, create.ErrActionReading, ResNameNetwork, state.OdbNetworkId.String(), errors.New("odbNetwork managed service not found")),
418348
"Odb Network managed service cannot be nil",
419349
)
420350
return
421351
}
422-
state.CreatedAt = types.StringValue(out.CreatedAt.Format(time.RFC3339))
423352
resp.Diagnostics.Append(flex.Flatten(ctx, out, &state)...)
424353
if resp.Diagnostics.HasError() {
425354
return
@@ -441,29 +370,22 @@ func (r *resourceNetwork) Update(ctx context.Context, req resource.UpdateRequest
441370
isUpdateRequired := false
442371
var input odb.UpdateOdbNetworkInput
443372

444-
if !plan.DisplayName.Equal(state.DisplayName) {
373+
if !plan.DisplayName.Equal(state.DisplayName) { //TODO display name change : create new
445374
isUpdateRequired = true
446375
input.DisplayName = plan.DisplayName.ValueStringPointer()
447376
}
448377

449378
if !plan.S3Access.Equal(state.S3Access) {
450379
isUpdateRequired = true
451-
input.S3Access = plan.S3Access.ValueEnum()
452380
}
453-
454381
if !plan.ZeroEtlAccess.Equal(state.ZeroEtlAccess) {
455382
isUpdateRequired = true
456-
input.ZeroEtlAccess = plan.ZeroEtlAccess.ValueEnum()
457383
}
458384
if !plan.S3PolicyDocument.Equal(state.S3PolicyDocument) {
459385
isUpdateRequired = true
460-
if !plan.S3PolicyDocument.IsNull() || !plan.S3PolicyDocument.IsUnknown() {
461-
input.S3PolicyDocument = plan.S3PolicyDocument.ValueStringPointer()
462-
}
463386
}
464387
if isUpdateRequired {
465-
input.OdbNetworkId = state.OdbNetworkId.ValueStringPointer()
466-
388+
resp.Diagnostics.Append(flex.Expand(ctx, plan, &input)...)
467389
out, err := conn.UpdateOdbNetwork(ctx, &input)
468390
if err != nil {
469391
resp.Diagnostics.AddError(
@@ -492,7 +414,7 @@ func (r *resourceNetwork) Update(ctx context.Context, req resource.UpdateRequest
492414
}
493415

494416
if plan.S3Access.ValueEnum() == odbtypes.AccessEnabled {
495-
_, err = waitManagedServiceEnabled(ctx, conn, plan.OdbNetworkId.ValueString(), managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
417+
updatedOdbNwk, err = waitManagedServiceEnabled(ctx, conn, plan.OdbNetworkId.ValueString(), managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
496418
return managedService.S3Access.Status
497419
})
498420
if err != nil {
@@ -502,10 +424,9 @@ func (r *resourceNetwork) Update(ctx context.Context, req resource.UpdateRequest
502424
)
503425
return
504426
}
505-
plan.S3Access = fwtypes.StringEnumValue(odbtypes.AccessEnabled)
506427

507428
} else if plan.S3Access.ValueEnum() == odbtypes.AccessDisabled {
508-
_, err = waitManagedServiceDisabled(ctx, conn, plan.OdbNetworkId.ValueString(), managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
429+
updatedOdbNwk, err = waitManagedServiceDisabled(ctx, conn, plan.OdbNetworkId.ValueString(), managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
509430
return managedService.S3Access.Status
510431
})
511432
if err != nil {
@@ -515,11 +436,10 @@ func (r *resourceNetwork) Update(ctx context.Context, req resource.UpdateRequest
515436
)
516437
return
517438
}
518-
plan.S3Access = fwtypes.StringEnumValue(odbtypes.AccessDisabled)
519439
}
520440

521441
if plan.ZeroEtlAccess.ValueEnum() == odbtypes.AccessEnabled {
522-
_, err = waitManagedServiceEnabled(ctx, conn, plan.OdbNetworkId.ValueString(), managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
442+
updatedOdbNwk, err = waitManagedServiceEnabled(ctx, conn, plan.OdbNetworkId.ValueString(), managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
523443
return managedService.ZeroEtlAccess.Status
524444
})
525445
if err != nil {
@@ -529,10 +449,9 @@ func (r *resourceNetwork) Update(ctx context.Context, req resource.UpdateRequest
529449
)
530450
return
531451
}
532-
plan.ZeroEtlAccess = fwtypes.StringEnumValue(odbtypes.AccessEnabled)
533452

534453
} else if plan.ZeroEtlAccess.ValueEnum() == odbtypes.AccessDisabled {
535-
_, err = waitManagedServiceDisabled(ctx, conn, plan.OdbNetworkId.ValueString(), managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
454+
updatedOdbNwk, err = waitManagedServiceDisabled(ctx, conn, plan.OdbNetworkId.ValueString(), managedServiceTimeout, func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus {
536455
return managedService.ZeroEtlAccess.Status
537456
})
538457
if err != nil {
@@ -542,18 +461,13 @@ func (r *resourceNetwork) Update(ctx context.Context, req resource.UpdateRequest
542461
)
543462
return
544463
}
545-
plan.ZeroEtlAccess = fwtypes.StringEnumValue(odbtypes.AccessDisabled)
546464
}
547-
plan.S3PolicyDocument = types.StringPointerValue(updatedOdbNwk.ManagedServices.S3Access.S3PolicyDocument)
548-
plan.CreatedAt = types.StringValue(updatedOdbNwk.CreatedAt.Format(time.RFC3339))
549-
550465
resp.Diagnostics.Append(flex.Flatten(ctx, updatedOdbNwk, &plan)...)
551466
resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...)
552467
}
553468

554469
func (r *resourceNetwork) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) {
555470
conn := r.Meta().ODBClient(ctx)
556-
557471
var state odbNetworkResourceModel
558472
resp.Diagnostics.Append(req.State.Get(ctx, &state)...)
559473
if resp.Diagnostics.HasError() {
@@ -611,16 +525,6 @@ func waitNetworkCreated(ctx context.Context, conn *odb.Client, id string, timeou
611525
return nil, err
612526
}
613527

614-
func managedServiceStatusToAccessStatus(mangedStatus odbtypes.ManagedResourceStatus) (odbtypes.Access, error) {
615-
if mangedStatus == odbtypes.ManagedResourceStatusDisabled {
616-
return odbtypes.AccessDisabled, nil
617-
}
618-
if mangedStatus == odbtypes.ManagedResourceStatusEnabled {
619-
return odbtypes.AccessEnabled, nil
620-
}
621-
return "", errors.New("can not convert managed status to access status")
622-
}
623-
624528
func waitManagedServiceEnabled(ctx context.Context, conn *odb.Client, id string, timeout time.Duration, managedResourceStatus func(managedService *odbtypes.ManagedServices) odbtypes.ManagedResourceStatus) (*odbtypes.OdbNetwork, error) {
625529
stateConf := &retry.StateChangeConf{
626530
Pending: enum.Slice(odbtypes.ManagedResourceStatusEnabling),
@@ -786,8 +690,8 @@ type odbNetworkResourceModel struct {
786690
Status fwtypes.StringEnum[odbtypes.ResourceStatus] `tfsdk:"status"`
787691
StatusReason types.String `tfsdk:"status_reason"`
788692
Timeouts timeouts.Value `tfsdk:"timeouts"`
789-
ManagedServices fwtypes.ObjectValueOf[odbNetworkManagedServicesResourceModel] `tfsdk:"managed_services"`
790-
CreatedAt types.String `tfsdk:"created_at" autoflex:",noflatten"`
693+
ManagedServices fwtypes.ListNestedObjectValueOf[odbNetworkManagedServicesResourceModel] `tfsdk:"managed_services"`
694+
CreatedAt timetypes.RFC3339 `tfsdk:"created_at"`
791695
Tags tftags.Map `tfsdk:"tags"`
792696
TagsAll tftags.Map `tfsdk:"tags_all"`
793697
}

0 commit comments

Comments
 (0)