@@ -189,6 +189,13 @@ func (d *{{$.ResourceName}}FWResource) Schema(ctx context.Context, _ resource.Sc
189189 stringplanmodifier.UseStateForUnknown (),
190190 },
191191 },
192+ " timeouts" : timeouts.Block (ctx, timeouts.Opts {
193+ Create: true,
194+ {{- if or $ .Updatable $ .RootLabels }}
195+ Update: true,
196+ {{- end }}
197+ Delete: true,
198+ }),
192199 },
193200 }
194201}
@@ -262,9 +269,7 @@ func (r *{{$.ResourceName}}FWResource) Create(ctx context.Context, req resource.
262269 obj[" {{ $prop.ApiName -}}" ] = {{ $prop .ApiName -}}Prop
263270{{- end }}
264271
265-
266- {{/* TODO default timeouts */ }}
267- createTimeout, diags := data.Timeouts.Create (ctx, 20*time.Minute )
272+ createTimeout, diags := data.Timeouts.Create (ctx, {{ $ .Timeouts.InsertMinutes }}*time.Minute )
268273 resp.Diagnostics.Append (diags... )
269274 if resp.Diagnostics.HasError () {
270275 return
@@ -480,8 +485,7 @@ func (r *{{$.ResourceName}}FWResource) Update(ctx context.Context, req resource.
480485 }
481486{{- end }}
482487
483- {{/* TODO default timeouts */ }}
484- updateTimeout, diags := data.Timeouts.Update (ctx, 20*time.Minute )
488+ updateTimeout, diags := data.Timeouts.Update (ctx, {{ $ .Timeouts.UpdateMinutes }}*time.Minute )
485489 resp.Diagnostics.Append (diags... )
486490 if resp.Diagnostics.HasError () {
487491 return
@@ -622,7 +626,7 @@ func (r *{{$.ResourceName}}FWResource) Delete(ctx context.Context, req resource.
622626
623627 obj := make(map[string]interface{})
624628
625- deleteTimeout, diags := data.Timeouts.Delete (ctx, 20 *time.Minute )
629+ deleteTimeout, diags := data.Timeouts.Delete (ctx, {{ $ .Timeouts.DeleteMinutes }} *time.Minute )
626630 resp.Diagnostics.Append (diags... )
627631 if resp.Diagnostics.HasError () {
628632 return
@@ -697,7 +701,28 @@ func (r *{{$.ResourceName}}FWResource) Delete(ctx context.Context, req resource.
697701}
698702
699703func (r *{{$ .ResourceName }}FWResource) ImportState(ctx context.Context , req resource.ImportStateRequest , resp *resource.ImportStateResponse ) {
700- resource.ImportStatePassthroughID (ctx, path.Root (" id" ), req, resp)
704+ patterns := []string{
705+ {{- range $id := $ .ImportIdFormatsFromResource }}
706+ " ^{{ format2regex $id }}$" ,
707+ {{- end }}
708+ }
709+
710+ var resourceSchemaResp resource.SchemaResponse
711+ r.Schema (ctx, resource.SchemaRequest {}, &resourceSchemaResp)
712+ if resourceSchemaResp.Diagnostics.HasError () {
713+ resp.Diagnostics.Append (resourceSchemaResp.Diagnostics... )
714+ return
715+ }
716+
717+ parsed, diags := fwresource.ParseImportId (ctx, req, resourceSchemaResp.Schema , r.providerConfig , patterns)
718+ resp.Diagnostics.Append (diags... )
719+ if resp.Diagnostics.HasError () {
720+ return
721+ }
722+
723+ for name, value := range parsed {
724+ resp.Diagnostics.Append (resp.State.SetAttribute (ctx, path.Root (name), value)... )
725+ }
701726}
702727
703728func (r *{{$ .ResourceName }}FWResource) {{$ .ResourceName }}FWRefresh(ctx context.Context , data *{{$ .ResourceName }}FWModel, state *tfsdk.State , req interface{}, diag *diag.Diagnostics ) {
0 commit comments