@@ -5,25 +5,26 @@ package odb
55import (
66 "context"
77 "errors"
8- "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes"
9- "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
10- "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier"
11- "github.com/hashicorp/terraform-plugin-framework/schema/validator"
128 "strings"
139 "time"
1410
1511 "github.com/aws/aws-sdk-go-v2/aws"
1612 "github.com/aws/aws-sdk-go-v2/service/odb"
1713 odbtypes "github.com/aws/aws-sdk-go-v2/service/odb/types"
1814 "github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts"
15+ "github.com/hashicorp/terraform-plugin-framework-timetypes/timetypes"
16+ "github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
17+ "github.com/hashicorp/terraform-plugin-framework/path"
1918 "github.com/hashicorp/terraform-plugin-framework/resource"
2019 "github.com/hashicorp/terraform-plugin-framework/resource/schema"
2120 "github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier"
2221 "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier"
2322 "github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier"
23+ "github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier"
2424 "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
2525 "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier"
2626 "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
27+ "github.com/hashicorp/terraform-plugin-framework/schema/validator"
2728 "github.com/hashicorp/terraform-plugin-framework/types"
2829 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
2930 "github.com/hashicorp/terraform-provider-aws/internal/create"
@@ -59,6 +60,7 @@ var ResourceCloudVmCluster = newResourceCloudVmCluster
5960type resourceCloudVmCluster struct {
6061 framework.ResourceWithModel [cloudVmClusterResourceModel ]
6162 framework.WithTimeouts
63+ framework.WithImportByID
6264}
6365
6466func (r * resourceCloudVmCluster ) Schema (ctx context.Context , req resource.SchemaRequest , resp * resource.SchemaResponse ) {
@@ -391,6 +393,7 @@ func (r *resourceCloudVmCluster) Create(ctx context.Context, req resource.Create
391393
392394 createTimeout := r .CreateTimeout (ctx , plan .Timeouts )
393395 createdVmCluster , err := waitCloudVmClusterCreated (ctx , conn , * out .CloudVmClusterId , createTimeout )
396+ resp .Diagnostics .Append (resp .State .SetAttribute (ctx , path .Root (names .AttrID ), aws .ToString (out .CloudVmClusterId ))... )
394397 if err != nil {
395398 resp .Diagnostics .AddError (
396399 create .ProblemStandardMessage (names .ODB , create .ErrActionWaitingForCreation , ResNameCloudVmCluster , plan .DisplayName .ValueString (), err ),
@@ -401,6 +404,8 @@ func (r *resourceCloudVmCluster) Create(ctx context.Context, req resource.Create
401404 hostnamePrefix := strings .Split (* input .Hostname , "-" )[0 ]
402405 plan .HostnamePrefix = types .StringValue (hostnamePrefix )
403406 plan .HostnamePrefixComputed = types .StringValue (* createdVmCluster .Hostname )
407+ //scan listener port not returned by API directly
408+ plan .ScanListenerPortTcp = types .Int32PointerValue (createdVmCluster .ListenerPort )
404409 resp .Diagnostics .Append (flex .Flatten (ctx , createdVmCluster , & plan )... )
405410 if resp .Diagnostics .HasError () {
406411 return
@@ -432,8 +437,10 @@ func (r *resourceCloudVmCluster) Read(ctx context.Context, req resource.ReadRequ
432437 hostnamePrefix := strings .Split (* out .Hostname , "-" )[0 ]
433438 state .HostnamePrefix = types .StringValue (hostnamePrefix )
434439 state .HostnamePrefixComputed = types .StringValue (* out .Hostname )
435- resp .Diagnostics .Append (flex .Flatten (ctx , out , & state )... )
440+ //scan listener port not returned by API directly
441+ state .ScanListenerPortTcp = types .Int32PointerValue (out .ListenerPort )
436442
443+ resp .Diagnostics .Append (flex .Flatten (ctx , out , & state )... )
437444 if resp .Diagnostics .HasError () {
438445 return
439446 }
@@ -492,24 +499,6 @@ func waitCloudVmClusterCreated(ctx context.Context, conn *odb.Client, id string,
492499 return nil , err
493500}
494501
495- func waitCloudVmClusterUpdated (ctx context.Context , conn * odb.Client , id string , timeout time.Duration ) (* odbtypes.CloudVmCluster , error ) {
496- stateConf := & retry.StateChangeConf {
497- Pending : enum .Slice (odbtypes .ResourceStatusUpdating ),
498- Target : enum .Slice (odbtypes .ResourceStatusAvailable , odbtypes .ResourceStatusFailed ),
499- Refresh : statusCloudVmCluster (ctx , conn , id ),
500- Timeout : timeout ,
501- NotFoundChecks : 20 ,
502- ContinuousTargetOccurence : 2 ,
503- }
504-
505- outputRaw , err := stateConf .WaitForStateContext (ctx )
506- if out , ok := outputRaw .(* odbtypes.CloudVmCluster ); ok {
507- return out , err
508- }
509-
510- return nil , err
511- }
512-
513502func waitCloudVmClusterDeleted (ctx context.Context , conn * odb.Client , id string , timeout time.Duration ) (* odbtypes.CloudVmCluster , error ) {
514503 stateConf := & retry.StateChangeConf {
515504 Pending : enum .Slice (odbtypes .ResourceStatusTerminating ),
@@ -545,7 +534,6 @@ func FindCloudVmClusterForResourceByID(ctx context.Context, conn *odb.Client, id
545534 input := odb.GetCloudVmClusterInput {
546535 CloudVmClusterId : aws .String (id ),
547536 }
548-
549537 out , err := conn .GetCloudVmCluster (ctx , & input )
550538 if err != nil {
551539 if errs.IsA [* odbtypes.ResourceNotFoundException ](err ) {
@@ -554,7 +542,6 @@ func FindCloudVmClusterForResourceByID(ctx context.Context, conn *odb.Client, id
554542 LastRequest : & input ,
555543 }
556544 }
557-
558545 return nil , err
559546 }
560547
@@ -608,7 +595,7 @@ type cloudVmClusterResourceModel struct {
608595 VipIds fwtypes.ListValueOf [types.String ] `tfsdk:"vip_ids"`
609596 CreatedAt timetypes.RFC3339 `tfsdk:"created_at"`
610597 ComputeModel fwtypes.StringEnum [odbtypes.ComputeModel ] `tfsdk:"compute_model"`
611- ScanListenerPortTcp types.Int32 `tfsdk:"scan_listener_port_tcp"`
598+ ScanListenerPortTcp types.Int32 `tfsdk:"scan_listener_port_tcp" autoflex:",noflatten" `
612599 Tags tftags.Map `tfsdk:"tags"`
613600 TagsAll tftags.Map `tfsdk:"tags_all"`
614601}
0 commit comments