Skip to content

Commit 517d7aa

Browse files
authored
Merge branch 'master' into baremetal-partition
2 parents 099bc7a + ad60c88 commit 517d7aa

File tree

6 files changed

+2055
-19
lines changed

6 files changed

+2055
-19
lines changed

.github/workflows/coverage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ jobs:
2626
SCW_ACCESS_KEY: "SCWXXXXXXXXXXXXXFAKE"
2727
SCW_SECRET_KEY: "11111111-1111-1111-1111-111111111111"
2828
- name: Upload coverage to Codecov
29-
uses: codecov/codecov-action@v4
29+
uses: codecov/codecov-action@v5

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ require (
2424
github.com/nats-io/nats.go v1.37.0
2525
github.com/robfig/cron/v3 v3.0.1
2626
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30.0.20241028153617-2a48843b5fcb
27-
github.com/stretchr/testify v1.9.0
28-
golang.org/x/crypto v0.28.0
27+
github.com/stretchr/testify v1.10.0
28+
golang.org/x/crypto v0.29.0
2929
gopkg.in/dnaeon/go-vcr.v3 v3.2.0
3030
)
3131

@@ -108,9 +108,9 @@ require (
108108
go.opentelemetry.io/otel/trace v1.22.0 // indirect
109109
golang.org/x/mod v0.21.0 // indirect
110110
golang.org/x/net v0.28.0 // indirect
111-
golang.org/x/sync v0.8.0 // indirect
112-
golang.org/x/sys v0.26.0 // indirect
113-
golang.org/x/text v0.19.0 // indirect
111+
golang.org/x/sync v0.9.0 // indirect
112+
golang.org/x/sys v0.27.0 // indirect
113+
golang.org/x/text v0.20.0 // indirect
114114
golang.org/x/time v0.3.0 // indirect
115115
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
116116
google.golang.org/appengine v1.6.8 // indirect

go.sum

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,8 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
261261
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
262262
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
263263
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
264-
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
265-
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
264+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
265+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
266266
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
267267
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
268268
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
@@ -306,8 +306,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
306306
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
307307
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
308308
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
309-
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
310-
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
309+
golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
310+
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
311311
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
312312
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
313313
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -330,8 +330,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
330330
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
331331
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
332332
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
333-
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
334-
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
333+
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
334+
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
335335
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
336336
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
337337
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -348,21 +348,21 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
348348
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
349349
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
350350
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
351-
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
352-
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
351+
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
352+
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
353353
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
354354
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
355355
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
356-
golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
357-
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
356+
golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU=
357+
golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E=
358358
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
359359
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
360360
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
361361
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
362362
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
363363
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
364-
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
365-
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
364+
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
365+
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
366366
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
367367
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
368368
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

internal/services/rdb/instance.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,6 @@ func ResourceInstance() *schema.Resource {
307307
"encryption_at_rest": {
308308
Type: schema.TypeBool,
309309
Optional: true,
310-
ForceNew: true,
311310
Description: "Enable or disable encryption at rest for the database instance",
312311
},
313312
// Common
@@ -662,6 +661,21 @@ func ResourceRdbInstanceUpdate(ctx context.Context, d *schema.ResourceData, m in
662661
}
663662
}
664663

664+
if d.HasChange("encryption_at_rest") {
665+
oldValue, newValue := d.GetChange("encryption_at_rest")
666+
667+
if oldValue.(bool) && !newValue.(bool) {
668+
return diag.FromErr(errors.New("disabling encryption_at_rest is not supported once it has been enabled"))
669+
}
670+
671+
upgradeInstanceRequests = append(upgradeInstanceRequests,
672+
rdb.UpgradeInstanceRequest{
673+
Region: region,
674+
InstanceID: ID,
675+
EnableEncryption: scw.BoolPtr(newValue.(bool)),
676+
})
677+
}
678+
665679
// Carry out the upgrades
666680
for i := range upgradeInstanceRequests {
667681
_, err = waitForRDBInstance(ctx, rdbAPI, region, ID, d.Timeout(schema.TimeoutUpdate))

internal/services/rdb/instance_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1328,6 +1328,61 @@ func TestAccInstance_EncryptionAtRestFalse(t *testing.T) {
13281328
})
13291329
}
13301330

1331+
func TestAccInstance_UpdateEncryptionAtRest(t *testing.T) {
1332+
tt := acctest.NewTestTools(t)
1333+
defer tt.Cleanup()
1334+
1335+
latestEngineVersion := rdbchecks.GetLatestEngineVersion(tt, postgreSQLEngineName)
1336+
1337+
resource.ParallelTest(t, resource.TestCase{
1338+
PreCheck: func() { acctest.PreCheck(t) },
1339+
ProviderFactories: tt.ProviderFactories,
1340+
CheckDestroy: rdbchecks.IsInstanceDestroyed(tt),
1341+
Steps: []resource.TestStep{
1342+
// Step 1: Create without encryption
1343+
{
1344+
Config: fmt.Sprintf(`
1345+
resource scaleway_rdb_instance main {
1346+
name = "test-rdb-update-encryption"
1347+
node_type = "db-dev-s"
1348+
engine = %q
1349+
is_ha_cluster = false
1350+
disable_backup = true
1351+
user_name = "user_no_enc"
1352+
password = "thiZ_is_v&ry_s3cret"
1353+
encryption_at_rest = false
1354+
tags = [ "terraform-test", "no-encryption" ]
1355+
}
1356+
`, latestEngineVersion),
1357+
Check: resource.ComposeTestCheckFunc(
1358+
isInstancePresent(tt, "scaleway_rdb_instance.main"),
1359+
resource.TestCheckResourceAttr("scaleway_rdb_instance.main", "encryption_at_rest", "false"),
1360+
),
1361+
},
1362+
// Step 2: Update encryption to true
1363+
{
1364+
Config: fmt.Sprintf(`
1365+
resource scaleway_rdb_instance main {
1366+
name = "test-rdb-update-encryption"
1367+
node_type = "db-dev-s"
1368+
engine = %q
1369+
is_ha_cluster = false
1370+
disable_backup = true
1371+
user_name = "user_enc"
1372+
password = "thiZ_is_v&ry_s3cret"
1373+
encryption_at_rest = true
1374+
tags = [ "terraform-test", "with-encryption" ]
1375+
}
1376+
`, latestEngineVersion),
1377+
Check: resource.ComposeTestCheckFunc(
1378+
isInstancePresent(tt, "scaleway_rdb_instance.main"),
1379+
resource.TestCheckResourceAttr("scaleway_rdb_instance.main", "encryption_at_rest", "true"),
1380+
),
1381+
},
1382+
},
1383+
})
1384+
}
1385+
13311386
func isInstancePresent(tt *acctest.TestTools, n string) resource.TestCheckFunc {
13321387
return func(s *terraform.State) error {
13331388
rs, ok := s.RootModule().Resources[n]

internal/services/rdb/testdata/instance-update-encryption-at-rest.cassette.yaml

Lines changed: 1967 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)