@@ -2,8 +2,6 @@ package vpc
22
33import (
44 "context"
5- "errors"
6- "fmt"
75
86 "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
97 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -12,7 +10,6 @@ import (
1210 "github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
1311 "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality"
1412 "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
15- "github.com/scaleway/terraform-provider-scaleway/v2/internal/meta"
1613 "github.com/scaleway/terraform-provider-scaleway/v2/internal/verify"
1714)
1815
@@ -23,40 +20,7 @@ func ResourceACL() *schema.Resource {
2320 UpdateContext : ResourceVPCACLUpdate ,
2421 DeleteContext : ResourceVPCACLDelete ,
2522 Importer : & schema.ResourceImporter {
26- StateContext : func (
27- ctx context.Context ,
28- d * schema.ResourceData ,
29- m interface {},
30- ) ([]* schema.ResourceData , error ) {
31- // If importing by ID (e.g. "fr-par/8cef…"), we just set the ID field to state, allowing the read to fill in the rest of the data
32- if d .Id () != "" {
33- return []* schema.ResourceData {d }, nil
34- }
35-
36- // Otherwise, we're importing by identity “identity = { id = ..., region = ... }”
37- identity , err := d .Identity ()
38- if err != nil {
39- return nil , fmt .Errorf ("error retrieving identity: %w" , err )
40- }
41-
42- rawID := identity .Get ("id" ).(string )
43-
44- regionVal := identity .Get ("region" ).(string )
45- if regionVal == "" {
46- region , err := meta .ExtractRegion (d , m )
47- if err != nil {
48- return nil , errors .New ("identity.region was not set" )
49- }
50-
51- regionVal = region .String ()
52- }
53-
54- localizedID := fmt .Sprintf ("%s/%s" , regionVal , rawID )
55-
56- d .SetId (localizedID )
57-
58- return []* schema.ResourceData {d }, nil
59- },
23+ StateContext : schema .ImportStatePassthroughWithIdentity ("id" ),
6024 },
6125 Identity : & schema.ResourceIdentity {
6226 Version : 0 ,
@@ -186,11 +150,23 @@ func ResourceVPCACLCreate(ctx context.Context, d *schema.ResourceData, m any) di
186150
187151 d .SetId (regional .NewIDString (region , regional .ExpandID (d .Get ("vpc_id" ).(string )).ID ))
188152
153+ identity , err := d .Identity ()
154+ if err != nil {
155+ return diag .FromErr (err )
156+ }
157+
158+ if err = identity .Set ("id" , regional .ExpandID (d .Get ("vpc_id" ).(string )).ID ); err != nil {
159+ return diag .FromErr (err )
160+ }
161+ if err = identity .Set ("region" , region ); err != nil {
162+ return diag .FromErr (err )
163+ }
164+
189165 return ResourceVPCACLRead (ctx , d , m )
190166}
191167
192168func ResourceVPCACLRead (ctx context.Context , d * schema.ResourceData , m any ) diag.Diagnostics {
193- vpcAPI , region , ID , err := NewAPIWithRegionAndID (m , d . Id () )
169+ vpcAPI , region , ID , err := NewAPIWithRegionAndIDFromState (m , d )
194170 if err != nil {
195171 return diag .FromErr (err )
196172 }
@@ -217,7 +193,7 @@ func ResourceVPCACLRead(ctx context.Context, d *schema.ResourceData, m any) diag
217193}
218194
219195func ResourceVPCACLUpdate (ctx context.Context , d * schema.ResourceData , m any ) diag.Diagnostics {
220- vpcAPI , region , ID , err := NewAPIWithRegionAndID (m , d . Id () )
196+ vpcAPI , region , ID , err := NewAPIWithRegionAndIDFromState (m , d )
221197 if err != nil {
222198 return diag .FromErr (err )
223199 }
@@ -247,7 +223,7 @@ func ResourceVPCACLUpdate(ctx context.Context, d *schema.ResourceData, m any) di
247223}
248224
249225func ResourceVPCACLDelete (ctx context.Context , d * schema.ResourceData , m any ) diag.Diagnostics {
250- vpcAPI , region , ID , err := NewAPIWithRegionAndID (m , d . Id () )
226+ vpcAPI , region , ID , err := NewAPIWithRegionAndIDFromState (m , d )
251227 if err != nil {
252228 return diag .FromErr (err )
253229 }
0 commit comments