Skip to content

Commit 9b47f8f

Browse files
authored
fix(DHCP-reservation) update static ip and add test for update case (#1222)
1 parent 5f99e2a commit 9b47f8f

3 files changed

+2343
-748
lines changed

scaleway/resource_vpc_public_gateway_dhcp_reservation.go

+19-1
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,21 @@ func resourceScalewayVPCPublicGatewayDHCPReservationUpdate(ctx context.Context,
150150
return diag.FromErr(err)
151151
}
152152

153-
if d.HasChangesExcept("ip_address") {
153+
if d.HasChanges("ip_address") {
154154
ip := net.ParseIP(d.Get("ip_address").(string))
155155
if ip == nil {
156156
return diag.FromErr(fmt.Errorf("could not parse ip_address"))
157157
}
158+
159+
gatewayNetworkID := expandID(d.Get("gateway_network_id"))
160+
_, err = vpcgwAPI.WaitForGatewayNetwork(&vpcgw.WaitForGatewayNetworkRequest{
161+
GatewayNetworkID: gatewayNetworkID,
162+
Zone: zone,
163+
}, scw.WithContext(ctx))
164+
if err != nil {
165+
return diag.FromErr(err)
166+
}
167+
158168
req := &vpcgw.UpdateDHCPEntryRequest{
159169
DHCPEntryID: ID,
160170
Zone: zone,
@@ -165,6 +175,14 @@ func resourceScalewayVPCPublicGatewayDHCPReservationUpdate(ctx context.Context,
165175
if err != nil {
166176
return diag.FromErr(err)
167177
}
178+
179+
_, err = vpcgwAPI.WaitForGatewayNetwork(&vpcgw.WaitForGatewayNetworkRequest{
180+
GatewayNetworkID: gatewayNetworkID,
181+
Zone: zone,
182+
}, scw.WithContext(ctx))
183+
if err != nil {
184+
return diag.FromErr(err)
185+
}
168186
}
169187

170188
return resourceScalewayVPCPublicGatewayDHCPReservationRead(ctx, d, meta)

scaleway/resource_vpc_public_gateway_dhcp_reservation_test.go

+56
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,62 @@ func TestAccScalewayVPCPublicGatewayDHCPEntry_Basic(t *testing.T) {
7474
resource.TestCheckResourceAttrSet("scaleway_vpc_public_gateway_dhcp_reservation.main", "type"),
7575
),
7676
},
77+
{
78+
Config: `
79+
resource scaleway_vpc_private_network main {
80+
name = "pn_test_network"
81+
}
82+
83+
resource "scaleway_instance_server" "main" {
84+
image = "ubuntu_focal"
85+
type = "DEV1-S"
86+
zone = "fr-par-1"
87+
88+
private_network {
89+
pn_id = scaleway_vpc_private_network.main.id
90+
}
91+
}
92+
93+
resource scaleway_vpc_public_gateway_ip main {
94+
}
95+
96+
resource scaleway_vpc_public_gateway_dhcp main {
97+
subnet = "192.168.1.0/24"
98+
}
99+
100+
resource scaleway_vpc_public_gateway main {
101+
name = "foobar"
102+
type = "VPC-GW-S"
103+
ip_id = scaleway_vpc_public_gateway_ip.main.id
104+
}
105+
106+
resource scaleway_vpc_gateway_network main {
107+
gateway_id = scaleway_vpc_public_gateway.main.id
108+
private_network_id = scaleway_vpc_private_network.main.id
109+
dhcp_id = scaleway_vpc_public_gateway_dhcp.main.id
110+
cleanup_dhcp = true
111+
enable_masquerade = true
112+
depends_on = [scaleway_vpc_public_gateway_ip.main, scaleway_vpc_private_network.main]
113+
}
114+
115+
resource scaleway_vpc_public_gateway_dhcp_reservation main {
116+
gateway_network_id = scaleway_vpc_gateway_network.main.id
117+
mac_address = scaleway_instance_server.main.private_network.0.mac_address
118+
ip_address = "192.168.1.2"
119+
}
120+
`,
121+
Check: resource.ComposeTestCheckFunc(
122+
testAccCheckScalewayVPCPublicGatewayDHCPReservationExists(tt, "scaleway_vpc_public_gateway_dhcp_reservation.main"),
123+
resource.TestCheckResourceAttrPair("scaleway_vpc_public_gateway_dhcp_reservation.main",
124+
"mac_address", "scaleway_instance_server.main", "private_network.0.mac_address"),
125+
resource.TestCheckResourceAttrPair("scaleway_vpc_public_gateway_dhcp_reservation.main", "gateway_network_id",
126+
"scaleway_vpc_gateway_network.main", "id"),
127+
resource.TestCheckResourceAttr("scaleway_vpc_public_gateway_dhcp_reservation.main", "ip_address", "192.168.1.2"),
128+
resource.TestCheckResourceAttrSet("scaleway_vpc_public_gateway_dhcp_reservation.main", "created_at"),
129+
resource.TestCheckResourceAttrSet("scaleway_vpc_public_gateway_dhcp_reservation.main", "updated_at"),
130+
resource.TestCheckResourceAttrSet("scaleway_vpc_public_gateway_dhcp_reservation.main", "type"),
131+
),
132+
},
77133
},
78134
})
79135
}

0 commit comments

Comments
 (0)