Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(rdb): private network update from ipam service #2068

Merged
merged 8 commits into from
Jul 27, 2023
11 changes: 3 additions & 8 deletions scaleway/resource_rdb_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -611,16 +611,11 @@ func resourceScalewayRdbInstanceUpdate(ctx context.Context, d *schema.ResourceDa
return diag.FromErr(err)
}

// get endpoints to detach. It will handle only private networks
endPointsToRemove, err := endpointsToRemove(res.Endpoints, d.Get("private_network"))
if err != nil {
diag.FromErr(err)
}
for endPointID, remove := range endPointsToRemove {
if remove {
for _, e := range res.Endpoints {
if e.PrivateNetwork != nil {
err := rdbAPI.DeleteEndpoint(
&rdb.DeleteEndpointRequest{
EndpointID: endPointID, Region: region,
EndpointID: e.ID, Region: region,
},
scw.WithContext(ctx))
if err != nil {
Expand Down
82 changes: 82 additions & 0 deletions scaleway/resource_rdb_instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,88 @@ func TestAccScalewayRdbInstance_PrivateNetwork(t *testing.T) {
})
}

func TestAccScalewayRdbInstance_PrivateNetworkUpdate(t *testing.T) {
tt := NewTestTools(t)
defer tt.Cleanup()
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: tt.ProviderFactories,
CheckDestroy: testAccCheckScalewayRdbInstanceDestroy(tt),
Steps: []resource.TestStep{
{
Config: `
resource scaleway_vpc_private_network pn01 {
name = "my_private_network"
}
`,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("scaleway_vpc_private_network.pn01", "name", "my_private_network"),
),
},
{
Config: `
resource scaleway_vpc_private_network pn01 {
name = "my_private_network"
}

resource scaleway_rdb_instance main {
name = "test-rdb"
node_type = "db-dev-s"
engine = "PostgreSQL-11"
is_ha_cluster = false
disable_backup = true
user_name = "my_initial_user"
password = "thiZ_is_v&ry_s3cret"
tags = [ "terraform-test", "scaleway_rdb_instance", "volume", "rdb_pn" ]
volume_type = "bssd"
volume_size_in_gb = 10
private_network {
pn_id = "${scaleway_vpc_private_network.pn01.id}"
}
}
`,
Check: resource.ComposeTestCheckFunc(
testAccCheckScalewayRdbExists(tt, "scaleway_rdb_instance.main"),
resource.TestCheckResourceAttr("scaleway_rdb_instance.main", "private_network.#", "1"),
),
},
{
Config: `
resource scaleway_vpc_private_network pn01 {
name = "my_private_network"
}

locals {
ip_address = cidrhost(scaleway_vpc_private_network.pn01.ipv4_subnet.0.subnet, 4)
cidr_prefix = split("/", scaleway_vpc_private_network.pn01.ipv4_subnet.0.subnet)[1]
}

resource scaleway_rdb_instance main {
name = "test-rdb"
node_type = "db-dev-s"
engine = "PostgreSQL-11"
is_ha_cluster = false
disable_backup = true
user_name = "my_initial_user"
password = "thiZ_is_v&ry_s3cret"
tags = [ "terraform-test", "scaleway_rdb_instance", "volume", "rdb_pn" ]
volume_type = "bssd"
volume_size_in_gb = 10
private_network {
ip_net = format("%s/%s", local.ip_address, local.cidr_prefix)
pn_id = scaleway_vpc_private_network.pn01.id
}
}
`,
Check: resource.ComposeTestCheckFunc(
testAccCheckScalewayRdbExists(tt, "scaleway_rdb_instance.main"),
resource.TestCheckResourceAttr("scaleway_rdb_instance.main", "private_network.#", "1"),
),
},
},
})
}

func TestAccScalewayRdbInstance_PrivateNetwork_DHCP(t *testing.T) {
tt := NewTestTools(t)
defer tt.Cleanup()
Expand Down
Loading