@@ -176,17 +176,15 @@ func (r *DedicatedVpcPeeringResource) Create(ctx context.Context, req resource.C
176176 return
177177 }
178178
179- VpcPeeringId := * VpcPeering .VpcPeeringId
180- data .VpcPeeringId = types .StringValue (VpcPeeringId )
181- tflog .Info (ctx , "wait dedicated vpc peering ready" )
182- VpcPeering , err = WaitDedicatedVpcPeeringReady (ctx , clusterCreateTimeout , clusterCreateInterval , VpcPeeringId , r .provider .DedicatedClient )
179+ VpcPeering , err = WaitDedicatedVpcPeeringReady (ctx , clusterCreateTimeout , clusterCreateInterval , * VpcPeering .VpcPeeringId , r .provider .DedicatedClient )
183180 if err != nil {
184181 resp .Diagnostics .AddError (
185182 "Dedicated vpc peering creation failed" ,
186- fmt .Sprintf ("Dedicated vpc peering is not ready, get error: %s" , err ),
183+ fmt .Sprintf ("aws_vpc_peering_connection_id is not ready, get error: %s" , err ),
187184 )
188185 return
189186 }
187+
190188 refreshDedicatedVpcPeeringResourceData (ctx , VpcPeering , & data )
191189
192190 // save into the Terraform state.
@@ -272,6 +270,8 @@ func refreshDedicatedVpcPeeringResourceData(ctx context.Context, vpcPeering *ded
272270 data .CustomerVpcCidr = types .StringValue (vpcPeering .CustomerVpcCidr )
273271 if vpcPeering .AwsVpcPeeringConnectionId .IsSet () {
274272 data .AWSVpcPeeringConnectionId = types .StringValue (* vpcPeering .AwsVpcPeeringConnectionId .Get ())
273+ } else {
274+ data .AWSVpcPeeringConnectionId = types .StringNull ()
275275 }
276276 labels , diag := types .MapValueFrom (ctx , types .StringType , * vpcPeering .Labels )
277277 if diag .HasError () {
@@ -284,11 +284,10 @@ func WaitDedicatedVpcPeeringReady(ctx context.Context, timeout time.Duration, in
284284 client tidbcloud.TiDBCloudDedicatedClient ) (* dedicated.Dedicatedv1beta1VpcPeering , error ) {
285285 stateConf := & retry.StateChangeConf {
286286 Pending : []string {
287- string ( dedicated . DEDICATEDV1BETA1VPCPEERINGSTATE_PENDING ) ,
287+ "pending" ,
288288 },
289289 Target : []string {
290- string (dedicated .DEDICATEDV1BETA1VPCPEERINGSTATE_FAILED ),
291- string (dedicated .DEDICATEDV1BETA1VPCPEERINGSTATE_ACTIVE ),
290+ "ready" ,
292291 },
293292 Timeout : timeout ,
294293 MinTimeout : 500 * time .Millisecond ,
@@ -307,11 +306,17 @@ func WaitDedicatedVpcPeeringReady(ctx context.Context, timeout time.Duration, in
307306func dedicatedVpcPeeringStateRefreshFunc (ctx context.Context , VpcPeeringId string ,
308307 client tidbcloud.TiDBCloudDedicatedClient ) retry.StateRefreshFunc {
309308 return func () (interface {}, string , error ) {
310- tflog .Trace (ctx , "Waiting for dedicated vpc peering ready " )
309+ tflog .Trace (ctx , "Waiting for aws_vpc_peering_connection_id " )
311310 VpcPeering , err := client .GetVPCPeering (ctx , VpcPeeringId )
312311 if err != nil {
313312 return nil , "" , err
314313 }
315- return VpcPeering , string (* VpcPeering .State ), nil
314+ if VpcPeering .State != nil && * VpcPeering .State == dedicated .DEDICATEDV1BETA1VPCPEERINGSTATE_FAILED {
315+ return VpcPeering , "failed" , fmt .Errorf ("dedicated vpc peering is in FAILED state" )
316+ }
317+ if VpcPeering .AwsVpcPeeringConnectionId .IsSet () {
318+ return VpcPeering , "ready" , nil
319+ }
320+ return VpcPeering , "pending" , nil
316321 }
317322}
0 commit comments