Skip to content

Commit bdebb1b

Browse files
committed
add test
1 parent 16a92c5 commit bdebb1b

File tree

3 files changed

+102
-14
lines changed

3 files changed

+102
-14
lines changed

internal/services/lb/lb.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ func ResourceLb() *schema.Resource {
109109
"private_network": {
110110
Type: schema.TypeSet,
111111
Optional: true,
112+
Computed: true,
112113
MaxItems: 8,
113114
Set: lbPrivateNetworkSetHash,
114115
Description: "List of private network to connect with your load balancer",

internal/services/lb/private_network.go

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
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-
164177
func 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
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package lb_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
8+
lbchecks "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/lb/testfuncs"
9+
)
10+
11+
func TestAccLBPrivateNetwork_Basic(t *testing.T) {
12+
tt := acctest.NewTestTools(t)
13+
defer tt.Cleanup()
14+
resource.ParallelTest(t, resource.TestCase{
15+
PreCheck: func() { acctest.PreCheck(t) },
16+
ProviderFactories: tt.ProviderFactories,
17+
CheckDestroy: lbchecks.IsIPDestroyed(tt),
18+
Steps: []resource.TestStep{
19+
{
20+
Config: `
21+
resource "scaleway_vpc" "vpc01" {
22+
name = "my vpc"
23+
}
24+
25+
resource "scaleway_vpc_private_network" "pn01" {
26+
vpc_id = scaleway_vpc.vpc01.id
27+
ipv4_subnet {
28+
subnet = "172.16.32.0/22"
29+
}
30+
}
31+
32+
resource "scaleway_ipam_ip" "ip01" {
33+
address = "172.16.32.7"
34+
source {
35+
private_network_id = scaleway_vpc_private_network.pn01.id
36+
}
37+
}
38+
39+
resource "scaleway_lb" "lb01" {
40+
name = "test-lb-private-network"
41+
type = "LB-S"
42+
}
43+
44+
resource "scaleway_lb_private_network" "lbpn01" {
45+
lb_id = scaleway_lb.lb01.id
46+
private_network_id = scaleway_vpc_private_network.pn01.id
47+
ipam_ip_ids = [scaleway_ipam_ip.ip01.id]
48+
}
49+
`,
50+
Check: resource.ComposeTestCheckFunc(
51+
resource.TestCheckResourceAttrPair(
52+
"scaleway_lb.lb01", "id",
53+
"scaleway_lb_private_network.lbpn01", "lb_id"),
54+
resource.TestCheckResourceAttrPair(
55+
"scaleway_vpc_private_network.pn01", "id",
56+
"scaleway_lb_private_network.lbpn01", "private_network_id"),
57+
resource.TestCheckResourceAttrPair(
58+
"scaleway_ipam_ip.ip01", "id",
59+
"scaleway_lb_private_network.lbpn01", "ipam_ip_ids.0"),
60+
),
61+
},
62+
},
63+
})
64+
}

0 commit comments

Comments
 (0)