66
77 "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
88 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+ ipamAPI "github.com/scaleway/scaleway-sdk-go/api/ipam/v1"
910 "github.com/scaleway/scaleway-sdk-go/api/vpcgw/v1"
1011 v2 "github.com/scaleway/scaleway-sdk-go/api/vpcgw/v2"
1112 "github.com/scaleway/scaleway-sdk-go/scw"
@@ -14,6 +15,7 @@ import (
1415 "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/zonal"
1516 "github.com/scaleway/terraform-provider-scaleway/v2/internal/meta"
1617 "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/instance"
18+ "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/ipam"
1719 "github.com/scaleway/terraform-provider-scaleway/v2/internal/types"
1820)
1921
@@ -301,6 +303,56 @@ func readVPCGWNetworkResourceDataV2(d *schema.ResourceData, gatewayNetwork *v2.G
301303 return nil
302304}
303305
306+ func getPrivateIPsV1 (ctx context.Context , gn * vpcgw.GatewayNetwork , m interface {}) interface {} {
307+ var privateIPs []map [string ]interface {}
308+
309+ resourceID := gn .ID
310+
311+ region , err := gn .Zone .Region ()
312+ if err != nil {
313+ return diag .FromErr (err )
314+ }
315+
316+ resourceType := ipamAPI .ResourceTypeVpcGatewayNetwork
317+ opts := & ipam.GetResourcePrivateIPsOptions {
318+ ResourceID : & resourceID ,
319+ ResourceType : & resourceType ,
320+ PrivateNetworkID : & gn .PrivateNetworkID ,
321+ }
322+
323+ privateIPs , err = ipam .GetResourcePrivateIPs (ctx , m , region , opts )
324+ if err != nil {
325+ return diag .FromErr (err )
326+ }
327+
328+ return privateIPs
329+ }
330+
331+ func getPrivateIPsV2 (ctx context.Context , gn * v2.GatewayNetwork , m interface {}) interface {} {
332+ var privateIPs []map [string ]interface {}
333+
334+ resourceID := gn .ID
335+
336+ region , err := gn .Zone .Region ()
337+ if err != nil {
338+ return diag .FromErr (err )
339+ }
340+
341+ resourceType := ipamAPI .ResourceTypeVpcGatewayNetwork
342+ opts := & ipam.GetResourcePrivateIPsOptions {
343+ ResourceID : & resourceID ,
344+ ResourceType : & resourceType ,
345+ PrivateNetworkID : & gn .PrivateNetworkID ,
346+ }
347+
348+ privateIPs , err = ipam .GetResourcePrivateIPs (ctx , m , region , opts )
349+ if err != nil {
350+ return diag .FromErr (err )
351+ }
352+
353+ return privateIPs
354+ }
355+
304356// updateGatewayV1 performs the update of the public gateway using the v1 API
305357func updateGatewayV1 (ctx context.Context , d * schema.ResourceData , apiV1 * vpcgw.API , zone scw.Zone , id string ) error {
306358 v1UpdateRequest := & vpcgw.UpdateGatewayRequest {
0 commit comments