Skip to content

Commit 3cb22e7

Browse files
authored
fix(rdb): integrate PN provisioning_mode to remove dependency with IPAM (scaleway#2572)
* fix(rdb): integrate PN provisioning_mode to remove dependency with IPAM * record ipam rdb cassette
1 parent 1a5f824 commit 3cb22e7

39 files changed

+16043
-20152
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ require (
2323
github.com/nats-io/jwt/v2 v2.5.6
2424
github.com/nats-io/nats.go v1.34.1
2525
github.com/robfig/cron/v3 v3.0.1
26-
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.26.0.20240416090022-eaa650293b32
26+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.26.0.20240503144623-358f61d22470
2727
github.com/stretchr/testify v1.9.0
2828
golang.org/x/crypto v0.22.0
2929
gopkg.in/dnaeon/go-vcr.v3 v3.2.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,8 @@ github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXq
246246
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
247247
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
248248
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
249-
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.26.0.20240416090022-eaa650293b32 h1:VaTPo4ij4NRWcRRtxpYo+JlB3nwgAjIIUAePKVU2zaI=
250-
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.26.0.20240416090022-eaa650293b32/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg=
249+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.26.0.20240503144623-358f61d22470 h1:jOsaUs0Mpg/2UCEcB/z3YpyG1UtgsjOPSKCRaOdMntg=
250+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.26.0.20240503144623-358f61d22470/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg=
251251
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
252252
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
253253
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=

internal/services/ipam/testdata/data-source-ipamiprdb.cassette.yaml

Lines changed: 1374 additions & 930 deletions
Large diffs are not rendered by default.

internal/services/rdb/helpers.go

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@ package rdb
33
import (
44
"context"
55
"errors"
6-
"fmt"
76
"strings"
87
"time"
98

109
"github.com/hashicorp/go-cty/cty"
1110
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
12-
"github.com/scaleway/scaleway-sdk-go/api/ipam/v1"
1311
"github.com/scaleway/scaleway-sdk-go/api/rdb/v1"
1412
"github.com/scaleway/scaleway-sdk-go/scw"
1513
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
@@ -102,46 +100,3 @@ func getIPConfigUpdate(d *schema.ResourceData, ipFieldName string) (ipamConfig *
102100
}
103101
return ipamConfig, staticConfig
104102
}
105-
106-
func getIPAMConfigRead(resource interface{}, m interface{}) (bool, error) {
107-
ipamAPI := ipam.NewAPI(meta.ExtractScwClient(m))
108-
request := &ipam.ListIPsRequest{
109-
ResourceType: "rdb_instance",
110-
IsIPv6: scw.BoolPtr(false),
111-
}
112-
var privateEndpoint *rdb.EndpointPrivateNetworkDetails
113-
114-
switch res := resource.(type) {
115-
case *rdb.Instance:
116-
request.Region = res.Region
117-
request.ResourceID = &res.ID
118-
for _, e := range res.Endpoints {
119-
if e.PrivateNetwork != nil {
120-
privateEndpoint = e.PrivateNetwork
121-
}
122-
}
123-
case *rdb.ReadReplica:
124-
request.Region = res.Region
125-
request.ResourceID = &res.InstanceID
126-
for _, e := range res.Endpoints {
127-
if e.PrivateNetwork != nil {
128-
privateEndpoint = e.PrivateNetwork
129-
}
130-
}
131-
}
132-
if privateEndpoint == nil {
133-
return false, nil
134-
}
135-
136-
ips, err := ipamAPI.ListIPs(request, scw.WithAllPages())
137-
if err != nil {
138-
return false, fmt.Errorf("could not list IPs: %w", err)
139-
}
140-
141-
for _, ip := range ips.IPs {
142-
if ip.Address.String() == privateEndpoint.ServiceIP.String() {
143-
return true, nil
144-
}
145-
}
146-
return false, nil
147-
}

internal/services/rdb/instance.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -511,11 +511,7 @@ func ResourceRdbInstanceRead(ctx context.Context, d *schema.ResourceData, m inte
511511
_ = d.Set("logs_policy", flattenInstanceLogsPolicy(res.LogsPolicy))
512512

513513
// set endpoints
514-
enableIpam, err := getIPAMConfigRead(res, m)
515-
if err != nil {
516-
return diag.FromErr(err)
517-
}
518-
if pnI, pnExist := flattenPrivateNetwork(res.Endpoints, enableIpam); pnExist {
514+
if pnI, pnExist := flattenPrivateNetwork(res.Endpoints); pnExist {
519515
_ = d.Set("private_network", pnI)
520516
}
521517
if lbI, lbExists := flattenLoadBalancer(res.Endpoints); lbExists {

internal/services/rdb/read_replica.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ func ResourceRdbReadReplicaCreate(ctx context.Context, d *schema.ResourceData, m
167167
}
168168

169169
ipamConfig, staticConfig := getIPConfigCreate(d, "service_ip")
170-
if pn, diags := expandReadReplicaEndpointsSpecPrivateNetwork(d.Get("private_network"), ipamConfig, staticConfig); err != nil || pn != nil {
170+
if pn, diags := expandReadReplicaEndpointsSpecPrivateNetwork(d.Get("private_network"), ipamConfig, staticConfig); len(diags) > 0 || pn != nil {
171171
if diags.HasError() {
172172
return diags
173173
}
@@ -212,11 +212,7 @@ func ResourceRdbReadReplicaRead(ctx context.Context, d *schema.ResourceData, m i
212212
return diag.FromErr(err)
213213
}
214214

215-
enableIpam, err := getIPAMConfigRead(rr, m)
216-
if err != nil {
217-
return diag.FromErr(err)
218-
}
219-
directAccess, privateNetwork := flattenReadReplicaEndpoints(rr.Endpoints, enableIpam)
215+
directAccess, privateNetwork := flattenReadReplicaEndpoints(rr.Endpoints)
220216
_ = d.Set("direct_access", directAccess)
221217
_ = d.Set("private_network", privateNetwork)
222218

0 commit comments

Comments
 (0)