99 "github.com/scaleway/scaleway-sdk-go/scw"
1010 "github.com/scaleway/terraform-provider-scaleway/v2/internal/cdf"
1111 "github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
12+ "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality"
1213 "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
1314 "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/zonal"
1415 "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account"
@@ -19,7 +20,6 @@ func ResourcePrivateNetwork() *schema.Resource {
1920 return & schema.Resource {
2021 CreateContext : resourceLbPrivateNetworkCreate ,
2122 ReadContext : resourceLbPrivateNetworkRead ,
22- UpdateContext : resourceLbPrivateNetworkUpdate ,
2323 DeleteContext : resourceLbPrivateNetworkDelete ,
2424 Importer : & schema.ResourceImporter {
2525 StateContext : schema .ImportStatePassthroughContext ,
@@ -84,21 +84,33 @@ func resourceLbPrivateNetworkCreate(ctx context.Context, d *schema.ResourceData,
8484 return diag .FromErr (err )
8585 }
8686
87- _ , err = waitForLB (ctx , lbAPI , zone , zonal .ExpandID (d .Get ("lb_id" ).(string )).ID , d .Timeout (schema .TimeoutCreate ))
87+ lbID := zonal .ExpandID (d .Get ("lb_id" ).(string )).ID
88+
89+ _ , err = waitForLB (ctx , lbAPI , zone , lbID , d .Timeout (schema .TimeoutCreate ))
8890 if err != nil {
8991 return diag .FromErr (err )
9092 }
9193
9294 attach , err := lbAPI .AttachPrivateNetwork (& lb.ZonedAPIAttachPrivateNetworkRequest {
9395 Zone : zone ,
94- LBID : zonal . ExpandID ( d . Get ( "lb_id" ).( string )). ID ,
96+ LBID : lbID ,
9597 PrivateNetworkID : regional .ExpandID (d .Get ("private_network_id" ).(string )).ID ,
96- IpamIDs : types . ExpandStrings (d .Get ("ipam_ip_ids" )),
98+ IpamIDs : locality . ExpandIDs (d .Get ("ipam_ip_ids" )),
9799 }, scw .WithContext (ctx ))
98100 if err != nil {
99101 return diag .FromErr (err )
100102 }
101103
104+ _ , err = waitForLB (ctx , lbAPI , zone , lbID , d .Timeout (schema .TimeoutUpdate ))
105+ if err != nil && ! httperrors .Is404 (err ) {
106+ return diag .FromErr (err )
107+ }
108+
109+ _ , err = waitForPrivateNetworks (ctx , lbAPI , zone , lbID , d .Timeout (schema .TimeoutUpdate ))
110+ if err != nil && ! httperrors .Is404 (err ) {
111+ return diag .FromErr (err )
112+ }
113+
102114 d .SetId (
103115 zonal .NewNestedIDString (
104116 zone ,
@@ -145,22 +157,23 @@ func resourceLbPrivateNetworkRead(ctx context.Context, d *schema.ResourceData, m
145157 return nil
146158 }
147159
148- _ = d .Set ("private_network_id" , foundPN .PrivateNetworkID )
149- _ = d .Set ("lb_id" , foundPN .LB .ID )
150- _ = d .Set ("ipam_ip_ids" , foundPN .IpamIDs )
151- _ = d .Set ("status" , foundPN .Status )
152- _ = d .Set ("created_at" , foundPN .CreatedAt )
153- _ = d .Set ("updated_at" , foundPN .UpdatedAt )
160+ region , err := zone .Region ()
161+ if err != nil {
162+ return diag .FromErr (err )
163+ }
164+
165+ _ = d .Set ("private_network_id" , regional .NewIDString (region , foundPN .PrivateNetworkID ))
166+ _ = d .Set ("lb_id" , zonal .NewIDString (zone , foundPN .LB .ID ))
167+ _ = d .Set ("ipam_ip_ids" , regional .NewRegionalIDs (region , foundPN .IpamIDs ))
168+ _ = d .Set ("status" , foundPN .Status .String ())
169+ _ = d .Set ("created_at" , types .FlattenTime (foundPN .CreatedAt ))
170+ _ = d .Set ("updated_at" , types .FlattenTime (foundPN .UpdatedAt ))
154171 _ = d .Set ("zone" , zone )
155172 _ = d .Set ("project_id" , foundPN .LB .ProjectID )
156173
157174 return nil
158175}
159176
160- func resourceLbPrivateNetworkUpdate (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
161- return resourceLbPrivateNetworkRead (ctx , d , m )
162- }
163-
164177func resourceLbPrivateNetworkDelete (ctx context.Context , d * schema.ResourceData , m interface {}) diag.Diagnostics {
165178 lbAPI , zone , err := lbAPIWithZone (d , m )
166179 if err != nil {
@@ -181,5 +194,15 @@ func resourceLbPrivateNetworkDelete(ctx context.Context, d *schema.ResourceData,
181194 return diag .FromErr (err )
182195 }
183196
197+ _ , err = waitForLB (ctx , lbAPI , zone , LBID , d .Timeout (schema .TimeoutUpdate ))
198+ if err != nil && ! httperrors .Is404 (err ) {
199+ return diag .FromErr (err )
200+ }
201+
202+ _ , err = waitForPrivateNetworks (ctx , lbAPI , zone , LBID , d .Timeout (schema .TimeoutUpdate ))
203+ if err != nil && ! httperrors .Is404 (err ) {
204+ return diag .FromErr (err )
205+ }
206+
184207 return nil
185208}
0 commit comments