From b9f9c11f3edcde7d03e59bd1d295db5367162ffd Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Mon, 13 Oct 2025 15:01:53 +0200 Subject: [PATCH 01/10] feat(keymanager): add algorithm field to allow custom key algorithms --- internal/services/keymanager/helpers.go | 31 +++++++++++++++++++- internal/services/keymanager/key_resource.go | 10 ++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/internal/services/keymanager/helpers.go b/internal/services/keymanager/helpers.go index b1d8e3e2f2..fc1c3d0d70 100644 --- a/internal/services/keymanager/helpers.go +++ b/internal/services/keymanager/helpers.go @@ -55,18 +55,27 @@ func NewKeyManagerAPIWithRegionAndID(m any, id string) (*key_manager.API, scw.Re return client, region, keyID, nil } -func ExpandKeyUsage(usage string) *key_manager.KeyUsage { +func ExpandKeyUsage(usage string, algorithm string) *key_manager.KeyUsage { switch usage { case "symmetric_encryption": alg := key_manager.KeyAlgorithmSymmetricEncryptionAes256Gcm + if algorithm != "" { + alg = key_manager.KeyAlgorithmSymmetricEncryption(algorithm) + } return &key_manager.KeyUsage{SymmetricEncryption: &alg} case "asymmetric_encryption": alg := key_manager.KeyAlgorithmAsymmetricEncryptionRsaOaep3072Sha256 + if algorithm != "" { + alg = key_manager.KeyAlgorithmAsymmetricEncryption(algorithm) + } return &key_manager.KeyUsage{AsymmetricEncryption: &alg} case "asymmetric_signing": alg := key_manager.KeyAlgorithmAsymmetricSigningEcP256Sha256 + if algorithm != "" { + alg = key_manager.KeyAlgorithmAsymmetricSigning(algorithm) + } return &key_manager.KeyUsage{AsymmetricSigning: &alg} default: @@ -74,6 +83,26 @@ func ExpandKeyUsage(usage string) *key_manager.KeyUsage { } } +func AlgorithmFromKeyUsage(u *key_manager.KeyUsage) string { + if u == nil { + return "" + } + + if u.SymmetricEncryption != nil { + return string(*u.SymmetricEncryption) + } + + if u.AsymmetricEncryption != nil { + return string(*u.AsymmetricEncryption) + } + + if u.AsymmetricSigning != nil { + return string(*u.AsymmetricSigning) + } + + return "" +} + func ExpandKeyRotationPolicy(v any) (*key_manager.KeyRotationPolicy, error) { list, ok := v.([]any) if !ok || len(list) == 0 { diff --git a/internal/services/keymanager/key_resource.go b/internal/services/keymanager/key_resource.go index 086dde96c3..9d98f996f9 100644 --- a/internal/services/keymanager/key_resource.go +++ b/internal/services/keymanager/key_resource.go @@ -35,6 +35,12 @@ func ResourceKeyManagerKey() *schema.Resource { }, false), Description: "Key usage. Keys with a usage set to 'symmetric_encryption' can encrypt and decrypt data using the AES-256-GCM key algorithm. Possible values: symmetric_encryption, asymmetric_encryption, asymmetric_signing.", }, + "algorithm": { + Type: schema.TypeString, + Optional: true, + Computed: true, + Description: "Algorithm for the key. If not specified, a default algorithm is chosen based on usage. See Key Manager documentation for supported algorithms.", + }, "description": { Type: schema.TypeString, Optional: true, @@ -116,7 +122,8 @@ func resourceKeyManagerKeyCreate(ctx context.Context, d *schema.ResourceData, m createReq.Origin = key_manager.KeyOrigin(v.(string)) } - createReq.Usage = ExpandKeyUsage(d.Get("usage").(string)) + algorithm := d.Get("algorithm").(string) + createReq.Usage = ExpandKeyUsage(d.Get("usage").(string), algorithm) key, err := api.CreateKey(createReq) if err != nil { @@ -146,6 +153,7 @@ func resourceKeyManagerKeyRead(ctx context.Context, d *schema.ResourceData, m an _ = d.Set("project_id", key.ProjectID) _ = d.Set("region", key.Region.String()) _ = d.Set("usage", UsageToString(key.Usage)) + _ = d.Set("algorithm", AlgorithmFromKeyUsage(key.Usage)) _ = d.Set("description", key.Description) _ = d.Set("tags", key.Tags) _ = d.Set("rotation_count", int(key.RotationCount)) From f4084d51bd958cdea027e3227b5fb11788078594 Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Mon, 13 Oct 2025 15:03:26 +0200 Subject: [PATCH 02/10] docs(keymanager): document algorithm parameter with examples --- templates/resources/key_manager_key.md.tmpl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/templates/resources/key_manager_key.md.tmpl b/templates/resources/key_manager_key.md.tmpl index d5b0c4f583..8b8722371a 100644 --- a/templates/resources/key_manager_key.md.tmpl +++ b/templates/resources/key_manager_key.md.tmpl @@ -25,6 +25,19 @@ resource "scaleway_key_manager_key" "main" { } ``` +### Example: Asymmetric Key with Custom Algorithm + +```terraform +resource "scaleway_key_manager_key" "rsa_4096" { + name = "rsa-4096-key" + region = "fr-par" + usage = "asymmetric_encryption" + algorithm = "rsa_oaep_4096_sha256" # Specify RSA-4096 instead of default RSA-3072 + description = "Key for encrypting large files with RSA-4096" + unprotected = true +} +``` + ## Argument Reference The following arguments are supported: @@ -36,6 +49,11 @@ The following arguments are supported: - `symmetric_encryption` - `asymmetric_encryption` - `asymmetric_signing` +- `algorithm` (String, Optional) – The algorithm to use for the key. If not specified, a default algorithm is chosen based on the `usage`: + - For `symmetric_encryption`: defaults to `aes_256_gcm` + - For `asymmetric_encryption`: defaults to `rsa_oaep_3072_sha256`. Other options include `rsa_oaep_2048_sha256`, `rsa_oaep_4096_sha256` + - For `asymmetric_signing`: defaults to `ec_p256_sha256`. Other options include `rsa_pss_2048_sha256`, etc. + - See [Scaleway Key Manager documentation](https://www.scaleway.com/en/docs/key-manager/concepts/) for the full list of supported algorithms. - `description` (String, Optional) – A description for the key. - `tags` (List of String, Optional) – A list of tags to assign to the key. - `unprotected` (Boolean, Optional) – If `true`, the key can be deleted. Defaults to `false` (protected). @@ -50,6 +68,7 @@ The following arguments are supported: In addition to all arguments above, the following attributes are exported: - `id` – The ID of the key. +- `algorithm` – The algorithm used by the key (computed if not specified). - `state` – The state of the key (e.g., `enabled`). - `created_at` – The date and time when the key was created. - `updated_at` – The date and time when the key was last updated. From 44689b7e2df289cbbdbd95fc6ea9fd516bff99bb Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Mon, 13 Oct 2025 15:10:13 +0200 Subject: [PATCH 03/10] test(keymanager): add tests and cassettes for algorithm parameter --- .../services/keymanager/key_resource_test.go | 62 +++++ ...anager-key-default-algorithm.cassette.yaml | 248 ++++++++++++++++++ 2 files changed, 310 insertions(+) create mode 100644 internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml diff --git a/internal/services/keymanager/key_resource_test.go b/internal/services/keymanager/key_resource_test.go index a820fdffab..d562ab6dce 100644 --- a/internal/services/keymanager/key_resource_test.go +++ b/internal/services/keymanager/key_resource_test.go @@ -158,3 +158,65 @@ func TestAccKeyManagerKey_WithRotationPolicy(t *testing.T) { }, }) } + +func TestAccKeyManagerKey_WithCustomAlgorithm(t *testing.T) { + tt := acctest.NewTestTools(t) + defer tt.Cleanup() + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(t) }, + ProtoV6ProviderFactories: tt.ProviderFactories, + CheckDestroy: IsKeyManagerKeyDestroyed(tt), + Steps: []resource.TestStep{ + { + Config: ` + resource "scaleway_key_manager_key" "rsa_4096" { + name = "tf-test-kms-key-rsa4096" + region = "fr-par" + usage = "asymmetric_encryption" + algorithm = "rsa_oaep_4096_sha256" + description = "Test key with RSA-4096 algorithm" + unprotected = true + } + `, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "name", "tf-test-kms-key-rsa4096"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "usage", "asymmetric_encryption"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "algorithm", "rsa_oaep_4096_sha256"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "description", "Test key with RSA-4096 algorithm"), + ), + }, + }, + }) +} + +func TestAccKeyManagerKey_DefaultAlgorithm(t *testing.T) { + tt := acctest.NewTestTools(t) + defer tt.Cleanup() + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(t) }, + ProtoV6ProviderFactories: tt.ProviderFactories, + CheckDestroy: IsKeyManagerKeyDestroyed(tt), + Steps: []resource.TestStep{ + { + Config: ` + resource "scaleway_key_manager_key" "default_alg" { + name = "tf-test-kms-key-default-alg" + region = "fr-par" + usage = "asymmetric_encryption" + description = "Test key with default algorithm" + unprotected = true + } + `, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "name", "tf-test-kms-key-default-alg"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "usage", "asymmetric_encryption"), + // Verify default algorithm is set (RSA-OAEP-3072-SHA256) + resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "algorithm", "rsa_oaep_3072_sha256"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "description", "Test key with default algorithm"), + ), + }, + }, + }) +} diff --git a/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml new file mode 100644 index 0000000000..f326dfebf1 --- /dev/null +++ b/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml @@ -0,0 +1,248 @@ +--- +version: 2 +interactions: + - id: 0 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 252 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: '{"project_id":"105bdce1-64c0-48ab-899d-868455867ecf","name":"tf-test-kms-key-default-alg","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"},"description":"Test key with default algorithm","tags":null,"unprotected":true,"origin":"unknown_origin"}' + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys + method: POST + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 558 + uncompressed: false + body: '{"created_at":"2025-10-13T13:07:50.991520Z","deletion_requested_at":null,"description":"Test key with default algorithm","id":"baf818b5-31fd-4c47-a46a-b7c94235f846","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:07:51.237551Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:07:51.237551Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + headers: + Content-Length: + - "558" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:07:51 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge01) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - bcb9f4c9-05da-42ae-8e7d-c5d88f22227b + status: 200 OK + code: 200 + duration: 689.005709ms + - id: 1 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/baf818b5-31fd-4c47-a46a-b7c94235f846 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 558 + uncompressed: false + body: '{"created_at":"2025-10-13T13:07:50.991520Z","deletion_requested_at":null,"description":"Test key with default algorithm","id":"baf818b5-31fd-4c47-a46a-b7c94235f846","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:07:51.237551Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:07:51.237551Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + headers: + Content-Length: + - "558" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:07:51 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge01) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - fc423909-73b9-429c-ab7d-c4e6be6d34c1 + status: 200 OK + code: 200 + duration: 114.879833ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/baf818b5-31fd-4c47-a46a-b7c94235f846 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 558 + uncompressed: false + body: '{"created_at":"2025-10-13T13:07:50.991520Z","deletion_requested_at":null,"description":"Test key with default algorithm","id":"baf818b5-31fd-4c47-a46a-b7c94235f846","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:07:51.237551Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:07:51.237551Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + headers: + Content-Length: + - "558" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:07:52 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge01) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - 70fe484e-eacc-4ca8-8d94-8dc2f32b6619 + status: 200 OK + code: 200 + duration: 80.017334ms + - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/baf818b5-31fd-4c47-a46a-b7c94235f846 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:07:53 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge01) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - de543f3b-0dbc-41f0-97da-b5ae01530ad8 + status: 204 No Content + code: 204 + duration: 116.667042ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/baf818b5-31fd-4c47-a46a-b7c94235f846 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 598 + uncompressed: false + body: '{"created_at":"2025-10-13T13:07:50.991520Z","deletion_requested_at":"2025-10-13T13:07:53.439157Z","description":"Test key with default algorithm","id":"baf818b5-31fd-4c47-a46a-b7c94235f846","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:07:51.237551Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-13T13:07:51.237551Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + headers: + Content-Length: + - "598" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:07:53 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge01) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - 08bc6c01-e929-405d-a08d-a7481cf014ef + status: 200 OK + code: 200 + duration: 25.58425ms From 92ec1843f9cb963d0a8e021fa4a6b6956724654c Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Mon, 13 Oct 2025 15:16:16 +0200 Subject: [PATCH 04/10] test(keymanager): add cassette for custom algorithm test --- ...er-key-with-custom-algorithm.cassette.yaml | 248 ++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml diff --git a/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml new file mode 100644 index 0000000000..27173ea0bf --- /dev/null +++ b/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml @@ -0,0 +1,248 @@ +--- +version: 2 +interactions: + - id: 0 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 249 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: '{"project_id":"105bdce1-64c0-48ab-899d-868455867ecf","name":"tf-test-kms-key-rsa4096","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"},"description":"Test key with RSA-4096 algorithm","tags":null,"unprotected":true,"origin":"unknown_origin"}' + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys + method: POST + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 555 + uncompressed: false + body: '{"created_at":"2025-10-13T13:13:20.314934Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"23ba19e7-9139-402f-a1a5-34da98f78086","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:13:21.284139Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:13:21.284139Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + headers: + Content-Length: + - "555" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:13:21 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge02) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - 880dffe2-1c90-45d8-85dd-4c2eeaff96e9 + status: 200 OK + code: 200 + duration: 2.033870417s + - id: 1 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/23ba19e7-9139-402f-a1a5-34da98f78086 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 555 + uncompressed: false + body: '{"created_at":"2025-10-13T13:13:20.314934Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"23ba19e7-9139-402f-a1a5-34da98f78086","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:13:21.284139Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:13:21.284139Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + headers: + Content-Length: + - "555" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:13:21 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge02) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - 56cc0845-d803-426a-b792-c3942211c189 + status: 200 OK + code: 200 + duration: 97.99975ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/23ba19e7-9139-402f-a1a5-34da98f78086 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 555 + uncompressed: false + body: '{"created_at":"2025-10-13T13:13:20.314934Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"23ba19e7-9139-402f-a1a5-34da98f78086","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:13:21.284139Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:13:21.284139Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + headers: + Content-Length: + - "555" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:13:22 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge02) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - 035ab31c-3fde-4611-a0c9-7a444c989069 + status: 200 OK + code: 200 + duration: 99.693834ms + - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/23ba19e7-9139-402f-a1a5-34da98f78086 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:13:23 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge02) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - 651f4a02-7e4e-4226-a87b-7410b0e11a4f + status: 204 No Content + code: 204 + duration: 189.475375ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/23ba19e7-9139-402f-a1a5-34da98f78086 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 595 + uncompressed: false + body: '{"created_at":"2025-10-13T13:13:20.314934Z","deletion_requested_at":"2025-10-13T13:13:23.783654Z","description":"Test key with RSA-4096 algorithm","id":"23ba19e7-9139-402f-a1a5-34da98f78086","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:13:21.284139Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-13T13:13:21.284139Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + headers: + Content-Length: + - "595" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Mon, 13 Oct 2025 13:13:23 GMT + Server: + - Scaleway API Gateway (fr-par-1;edge02) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - e9851381-947e-45e8-8e16-4f7332aae0a3 + status: 200 OK + code: 200 + duration: 144.586875ms From 68f288ed5e3f62fe4c29e9bd342e1c9f58c95f47 Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Tue, 14 Oct 2025 06:52:27 +0200 Subject: [PATCH 05/10] feat: allow explicit algorithm selection in Key Manager keys --- internal/services/keymanager/helpers.go | 38 ++- internal/services/keymanager/key_resource.go | 86 +++++- .../services/keymanager/key_resource_test.go | 107 +++++--- .../key-manager-key-basic.cassette.yaml | 82 +++--- ...anager-key-default-algorithm.cassette.yaml | 86 +++--- ...key-manager-key-legacy-usage.cassette.yaml | 248 ++++++++++++++++++ .../key-manager-key-update.cassette.yaml | 154 +++++------ ...er-key-with-custom-algorithm.cassette.yaml | 56 ++-- ...ger-key-with-rotation-policy.cassette.yaml | 82 +++--- templates/resources/key_manager_key.md.tmpl | 122 ++++++--- 10 files changed, 733 insertions(+), 328 deletions(-) create mode 100644 internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml diff --git a/internal/services/keymanager/helpers.go b/internal/services/keymanager/helpers.go index fc1c3d0d70..c62c72f954 100644 --- a/internal/services/keymanager/helpers.go +++ b/internal/services/keymanager/helpers.go @@ -55,28 +55,39 @@ func NewKeyManagerAPIWithRegionAndID(m any, id string) (*key_manager.API, scw.Re return client, region, keyID, nil } -func ExpandKeyUsage(usage string, algorithm string) *key_manager.KeyUsage { +func ExpandKeyUsageFromFields(d *schema.ResourceData) *key_manager.KeyUsage { + if v, ok := d.GetOk("usage_symmetric_encryption"); ok { + alg := key_manager.KeyAlgorithmSymmetricEncryption(v.(string)) + return &key_manager.KeyUsage{SymmetricEncryption: &alg} + } + + if v, ok := d.GetOk("usage_asymmetric_encryption"); ok { + alg := key_manager.KeyAlgorithmAsymmetricEncryption(v.(string)) + return &key_manager.KeyUsage{AsymmetricEncryption: &alg} + } + + if v, ok := d.GetOk("usage_asymmetric_signing"); ok { + alg := key_manager.KeyAlgorithmAsymmetricSigning(v.(string)) + return &key_manager.KeyUsage{AsymmetricSigning: &alg} + } + + if v, ok := d.GetOk("usage"); ok { + return ExpandKeyUsageLegacy(v.(string)) + } + + return nil +} + +func ExpandKeyUsageLegacy(usage string) *key_manager.KeyUsage { switch usage { case "symmetric_encryption": alg := key_manager.KeyAlgorithmSymmetricEncryptionAes256Gcm - if algorithm != "" { - alg = key_manager.KeyAlgorithmSymmetricEncryption(algorithm) - } - return &key_manager.KeyUsage{SymmetricEncryption: &alg} case "asymmetric_encryption": alg := key_manager.KeyAlgorithmAsymmetricEncryptionRsaOaep3072Sha256 - if algorithm != "" { - alg = key_manager.KeyAlgorithmAsymmetricEncryption(algorithm) - } - return &key_manager.KeyUsage{AsymmetricEncryption: &alg} case "asymmetric_signing": alg := key_manager.KeyAlgorithmAsymmetricSigningEcP256Sha256 - if algorithm != "" { - alg = key_manager.KeyAlgorithmAsymmetricSigning(algorithm) - } - return &key_manager.KeyUsage{AsymmetricSigning: &alg} default: return nil @@ -128,7 +139,6 @@ func ExpandKeyRotationPolicy(v any) (*key_manager.KeyRotationPolicy, error) { RotationPeriod: scw.NewDurationFromTimeDuration(period), } - // Handle next_rotation_at if provided if nextRotationStr, ok := m["next_rotation_at"].(string); ok && nextRotationStr != "" { nextRotation, err := time.Parse(time.RFC3339, nextRotationStr) if err != nil { diff --git a/internal/services/keymanager/key_resource.go b/internal/services/keymanager/key_resource.go index 9d98f996f9..0b54019e2b 100644 --- a/internal/services/keymanager/key_resource.go +++ b/internal/services/keymanager/key_resource.go @@ -29,17 +29,65 @@ func ResourceKeyManagerKey() *schema.Resource { "region": regional.Schema(), "usage": { Type: schema.TypeString, - Required: true, + Optional: true, + Computed: true, ValidateFunc: validation.StringInSlice([]string{ "symmetric_encryption", "asymmetric_encryption", "asymmetric_signing", }, false), - Description: "Key usage. Keys with a usage set to 'symmetric_encryption' can encrypt and decrypt data using the AES-256-GCM key algorithm. Possible values: symmetric_encryption, asymmetric_encryption, asymmetric_signing.", + Deprecated: "Use usage_symmetric_encryption, usage_asymmetric_encryption, or usage_asymmetric_signing instead", + Description: "DEPRECATED: Use usage_symmetric_encryption, usage_asymmetric_encryption, or usage_asymmetric_signing instead. Key usage. Possible values: symmetric_encryption, asymmetric_encryption, asymmetric_signing.", + ExactlyOneOf: []string{ + "usage", + "usage_symmetric_encryption", + "usage_asymmetric_encryption", + "usage_asymmetric_signing", + }, }, - "algorithm": { - Type: schema.TypeString, - Optional: true, - Computed: true, - Description: "Algorithm for the key. If not specified, a default algorithm is chosen based on usage. See Key Manager documentation for supported algorithms.", + "usage_symmetric_encryption": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice([]string{ + "aes_256_gcm", + }, false), + Description: "Algorithm for symmetric encryption. Possible values: aes_256_gcm", + ExactlyOneOf: []string{ + "usage", + "usage_symmetric_encryption", + "usage_asymmetric_encryption", + "usage_asymmetric_signing", + }, + }, + "usage_asymmetric_encryption": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice([]string{ + "rsa_oaep_2048_sha256", + "rsa_oaep_3072_sha256", + "rsa_oaep_4096_sha256", + }, false), + Description: "Algorithm for asymmetric encryption. Possible values: rsa_oaep_2048_sha256, rsa_oaep_3072_sha256, rsa_oaep_4096_sha256", + ExactlyOneOf: []string{ + "usage", + "usage_symmetric_encryption", + "usage_asymmetric_encryption", + "usage_asymmetric_signing", + }, + }, + "usage_asymmetric_signing": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice([]string{ + "ec_p256_sha256", + "rsa_pss_2048_sha256", + "rsa_pkcs1_2048_sha256", + }, false), + Description: "Algorithm for asymmetric signing. Possible values: ec_p256_sha256, rsa_pss_2048_sha256, rsa_pkcs1_2048_sha256", + ExactlyOneOf: []string{ + "usage", + "usage_symmetric_encryption", + "usage_asymmetric_encryption", + "usage_asymmetric_signing", + }, }, "description": { Type: schema.TypeString, @@ -122,8 +170,7 @@ func resourceKeyManagerKeyCreate(ctx context.Context, d *schema.ResourceData, m createReq.Origin = key_manager.KeyOrigin(v.(string)) } - algorithm := d.Get("algorithm").(string) - createReq.Usage = ExpandKeyUsage(d.Get("usage").(string), algorithm) + createReq.Usage = ExpandKeyUsageFromFields(d) key, err := api.CreateKey(createReq) if err != nil { @@ -152,8 +199,25 @@ func resourceKeyManagerKeyRead(ctx context.Context, d *schema.ResourceData, m an _ = d.Set("name", key.Name) _ = d.Set("project_id", key.ProjectID) _ = d.Set("region", key.Region.String()) - _ = d.Set("usage", UsageToString(key.Usage)) - _ = d.Set("algorithm", AlgorithmFromKeyUsage(key.Usage)) + + usageType := UsageToString(key.Usage) + algorithm := AlgorithmFromKeyUsage(key.Usage) + + _ = d.Set("usage", usageType) + + _, usesLegacy := d.GetOk("usage") + + if !usesLegacy { + switch usageType { + case "symmetric_encryption": + _ = d.Set("usage_symmetric_encryption", algorithm) + case "asymmetric_encryption": + _ = d.Set("usage_asymmetric_encryption", algorithm) + case "asymmetric_signing": + _ = d.Set("usage_asymmetric_signing", algorithm) + } + } + _ = d.Set("description", key.Description) _ = d.Set("tags", key.Tags) _ = d.Set("rotation_count", int(key.RotationCount)) diff --git a/internal/services/keymanager/key_resource_test.go b/internal/services/keymanager/key_resource_test.go index d562ab6dce..f33fefbdc3 100644 --- a/internal/services/keymanager/key_resource_test.go +++ b/internal/services/keymanager/key_resource_test.go @@ -24,18 +24,19 @@ func TestAccKeyManagerKey_Basic(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "main" { - name = "tf-test-kms-key-unprotected-a" - region = "fr-par" - usage = "symmetric_encryption" - description = "Test key" - tags = ["tf", "test"] - unprotected = true + name = "tf-test-kms-key-unprotected-a" + region = "fr-par" + usage_symmetric_encryption = "aes_256_gcm" + description = "Test key" + tags = ["tf", "test"] + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "name", "tf-test-kms-key-unprotected-a"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "region", "fr-par"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage", "symmetric_encryption"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage_symmetric_encryption", "aes_256_gcm"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "description", "Test key"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "tags.0", "tf"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "tags.1", "test"), @@ -57,34 +58,36 @@ func TestAccKeyManagerKey_Update(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "main" { - name = "tf-test-kms-key-update" - region = "fr-par" - usage = "symmetric_encryption" - description = "Test key" - tags = ["tf", "test"] - unprotected = true + name = "tf-test-kms-key-update" + region = "fr-par" + usage_symmetric_encryption = "aes_256_gcm" + description = "Test key" + tags = ["tf", "test"] + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "name", "tf-test-kms-key-update"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "description", "Test key"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage_symmetric_encryption", "aes_256_gcm"), ), }, { Config: ` resource "scaleway_key_manager_key" "main" { - name = "tf-test-kms-key-updated" - region = "fr-par" - usage = "symmetric_encryption" - description = "Test key updated" - tags = ["tf", "updated"] - unprotected = true + name = "tf-test-kms-key-updated" + region = "fr-par" + usage_symmetric_encryption = "aes_256_gcm" + description = "Test key updated" + tags = ["tf", "updated"] + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "name", "tf-test-kms-key-updated"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "description", "Test key updated"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "tags.1", "updated"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage_symmetric_encryption", "aes_256_gcm"), ), }, }, @@ -136,11 +139,11 @@ func TestAccKeyManagerKey_WithRotationPolicy(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "main" { - name = "tf-test-kms-key-rotation" - region = "fr-par" - usage = "symmetric_encryption" - description = "Test key with rotation policy" - unprotected = true + name = "tf-test-kms-key-rotation" + region = "fr-par" + usage_symmetric_encryption = "aes_256_gcm" + description = "Test key with rotation policy" + unprotected = true rotation_policy { rotation_period = "720h" @@ -151,6 +154,7 @@ func TestAccKeyManagerKey_WithRotationPolicy(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "name", "tf-test-kms-key-rotation"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage", "symmetric_encryption"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage_symmetric_encryption", "aes_256_gcm"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "description", "Test key with rotation policy"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "rotation_policy.0.rotation_period", "720h0m0s"), ), @@ -171,18 +175,17 @@ func TestAccKeyManagerKey_WithCustomAlgorithm(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "rsa_4096" { - name = "tf-test-kms-key-rsa4096" - region = "fr-par" - usage = "asymmetric_encryption" - algorithm = "rsa_oaep_4096_sha256" - description = "Test key with RSA-4096 algorithm" - unprotected = true + name = "tf-test-kms-key-rsa4096" + region = "fr-par" + usage_asymmetric_encryption = "rsa_oaep_4096_sha256" + description = "Test key with RSA-4096 algorithm" + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "name", "tf-test-kms-key-rsa4096"), resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "usage", "asymmetric_encryption"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "algorithm", "rsa_oaep_4096_sha256"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "usage_asymmetric_encryption", "rsa_oaep_4096_sha256"), resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "description", "Test key with RSA-4096 algorithm"), ), }, @@ -202,19 +205,47 @@ func TestAccKeyManagerKey_DefaultAlgorithm(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "default_alg" { - name = "tf-test-kms-key-default-alg" - region = "fr-par" - usage = "asymmetric_encryption" - description = "Test key with default algorithm" - unprotected = true + name = "tf-test-kms-key-default-alg" + region = "fr-par" + usage_asymmetric_encryption = "rsa_oaep_3072_sha256" + description = "Test key with RSA-3072 algorithm" + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "name", "tf-test-kms-key-default-alg"), resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "usage", "asymmetric_encryption"), - // Verify default algorithm is set (RSA-OAEP-3072-SHA256) - resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "algorithm", "rsa_oaep_3072_sha256"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "description", "Test key with default algorithm"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "usage_asymmetric_encryption", "rsa_oaep_3072_sha256"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "description", "Test key with RSA-3072 algorithm"), + ), + }, + }, + }) +} + +func TestAccKeyManagerKey_LegacyUsage(t *testing.T) { + tt := acctest.NewTestTools(t) + defer tt.Cleanup() + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(t) }, + ProtoV6ProviderFactories: tt.ProviderFactories, + CheckDestroy: IsKeyManagerKeyDestroyed(tt), + Steps: []resource.TestStep{ + { + Config: ` + resource "scaleway_key_manager_key" "legacy" { + name = "tf-test-kms-key-legacy" + region = "fr-par" + usage = "symmetric_encryption" + description = "Test key with deprecated usage field" + unprotected = true + } + `, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("scaleway_key_manager_key.legacy", "name", "tf-test-kms-key-legacy"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.legacy", "usage", "symmetric_encryption"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.legacy", "description", "Test key with deprecated usage field"), ), }, }, diff --git a/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml index 8cf0119cc5..2e0afba70d 100644 --- a/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml @@ -18,7 +18,7 @@ interactions: Content-Type: - application/json User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys method: POST response: @@ -27,20 +27,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 522 + content_length: 539 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:20.817469Z","deletion_requested_at":null,"description":"Test key","id":"2b83cb06-a9ed-4470-8373-f1c49e16a3c0","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:20.822761Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-07-09T09:35:20.822761Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:00.962761Z","deletion_requested_at":null,"description":"Test key","id":"0ce23363-cf10-414b-b4c9-08f4d0b40d2e","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.969638Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:00.969638Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "522" + - "539" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:20 GMT + - Tue, 14 Oct 2025 04:45:01 GMT Server: - - Scaleway API Gateway (fr-par-3;edge03) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - c7ba6837-b9c3-451d-9590-38ffdc9ddde5 + - f16da29d-8a2e-4b43-b7b0-2b4bf5172527 status: 200 OK code: 200 - duration: 422.550041ms + duration: 3.335419708s - id: 1 request: proto: HTTP/1.1 @@ -67,8 +67,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/2b83cb06-a9ed-4470-8373-f1c49e16a3c0 + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/0ce23363-cf10-414b-b4c9-08f4d0b40d2e method: GET response: proto: HTTP/2.0 @@ -76,20 +76,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 522 + content_length: 539 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:20.817469Z","deletion_requested_at":null,"description":"Test key","id":"2b83cb06-a9ed-4470-8373-f1c49e16a3c0","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:20.822761Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-07-09T09:35:20.822761Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:00.962761Z","deletion_requested_at":null,"description":"Test key","id":"0ce23363-cf10-414b-b4c9-08f4d0b40d2e","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.969638Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:00.969638Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "522" + - "539" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:20 GMT + - Tue, 14 Oct 2025 04:45:01 GMT Server: - - Scaleway API Gateway (fr-par-3;edge03) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 3eb75847-5c1a-403f-90a0-f23e06decc1e + - 4952fd82-6d47-431c-8344-7d90977c12cb status: 200 OK code: 200 - duration: 112.297084ms + duration: 498.529791ms - id: 2 request: proto: HTTP/1.1 @@ -116,8 +116,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/2b83cb06-a9ed-4470-8373-f1c49e16a3c0 + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/0ce23363-cf10-414b-b4c9-08f4d0b40d2e method: GET response: proto: HTTP/2.0 @@ -125,20 +125,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 522 + content_length: 539 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:20.817469Z","deletion_requested_at":null,"description":"Test key","id":"2b83cb06-a9ed-4470-8373-f1c49e16a3c0","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:20.822761Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-07-09T09:35:20.822761Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:00.962761Z","deletion_requested_at":null,"description":"Test key","id":"0ce23363-cf10-414b-b4c9-08f4d0b40d2e","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.969638Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:00.969638Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "522" + - "539" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:21 GMT + - Tue, 14 Oct 2025 04:45:06 GMT Server: - - Scaleway API Gateway (fr-par-3;edge03) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 36525a48-a1d4-4ab7-a971-dfe88d8b6383 + - 5a077bf4-eb93-4b18-bafc-4138665f7a60 status: 200 OK code: 200 - duration: 112.372792ms + duration: 146.527584ms - id: 3 request: proto: HTTP/1.1 @@ -165,8 +165,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/2b83cb06-a9ed-4470-8373-f1c49e16a3c0 + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/0ce23363-cf10-414b-b4c9-08f4d0b40d2e method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:22 GMT + - Tue, 14 Oct 2025 04:45:08 GMT Server: - - Scaleway API Gateway (fr-par-3;edge03) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 1cd8b3c4-c4f3-47fd-a01a-b502def826df + - e013d158-603b-4f0c-bcf3-80c5efbc84ce status: 204 No Content code: 204 - duration: 133.9035ms + duration: 177.873709ms - id: 4 request: proto: HTTP/1.1 @@ -212,8 +212,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/2b83cb06-a9ed-4470-8373-f1c49e16a3c0 + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/0ce23363-cf10-414b-b4c9-08f4d0b40d2e method: GET response: proto: HTTP/2.0 @@ -221,20 +221,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 547 + content_length: 579 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:20.817469Z","deletion_requested_at":"2025-07-09T09:35:22.767315Z","description":"Test key","id":"2b83cb06-a9ed-4470-8373-f1c49e16a3c0","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:20.822761Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-07-09T09:35:20.822761Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:00.962761Z","deletion_requested_at":"2025-10-14T04:45:08.761714Z","description":"Test key","id":"0ce23363-cf10-414b-b4c9-08f4d0b40d2e","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.969638Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","test"],"updated_at":"2025-10-14T04:45:00.969638Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "547" + - "579" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:22 GMT + - Tue, 14 Oct 2025 04:45:08 GMT Server: - - Scaleway API Gateway (fr-par-3;edge03) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 7b64ce80-a1ac-4ddc-a874-3714414eed1f + - 1ecc13fa-2d75-4431-a4d9-06b172f80fcc status: 200 OK code: 200 - duration: 165.161125ms + duration: 99.950458ms diff --git a/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml index f326dfebf1..2f2d002937 100644 --- a/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml @@ -6,19 +6,19 @@ interactions: proto: HTTP/1.1 proto_major: 1 proto_minor: 1 - content_length: 252 + content_length: 253 transfer_encoding: [] trailer: {} host: api.scaleway.com remote_addr: "" request_uri: "" - body: '{"project_id":"105bdce1-64c0-48ab-899d-868455867ecf","name":"tf-test-kms-key-default-alg","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"},"description":"Test key with default algorithm","tags":null,"unprotected":true,"origin":"unknown_origin"}' + body: '{"project_id":"105bdce1-64c0-48ab-899d-868455867ecf","name":"tf-test-kms-key-default-alg","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"},"description":"Test key with RSA-3072 algorithm","tags":null,"unprotected":true,"origin":"unknown_origin"}' form: {} headers: Content-Type: - application/json User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys method: POST response: @@ -27,20 +27,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 558 + content_length: 559 uncompressed: false - body: '{"created_at":"2025-10-13T13:07:50.991520Z","deletion_requested_at":null,"description":"Test key with default algorithm","id":"baf818b5-31fd-4c47-a46a-b7c94235f846","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:07:51.237551Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:07:51.237551Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T04:45:00.539212Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"6395a49d-2808-4e12-8852-53ab1e299a02","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.767906Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.767906Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - - "558" + - "559" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:07:51 GMT + - Tue, 14 Oct 2025 04:45:00 GMT Server: - - Scaleway API Gateway (fr-par-1;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - bcb9f4c9-05da-42ae-8e7d-c5d88f22227b + - 14ad9bfe-16c3-4f71-8a3c-d8b403024375 status: 200 OK code: 200 - duration: 689.005709ms + duration: 3.969688708s - id: 1 request: proto: HTTP/1.1 @@ -67,8 +67,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/baf818b5-31fd-4c47-a46a-b7c94235f846 + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/6395a49d-2808-4e12-8852-53ab1e299a02 method: GET response: proto: HTTP/2.0 @@ -76,20 +76,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 558 + content_length: 559 uncompressed: false - body: '{"created_at":"2025-10-13T13:07:50.991520Z","deletion_requested_at":null,"description":"Test key with default algorithm","id":"baf818b5-31fd-4c47-a46a-b7c94235f846","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:07:51.237551Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:07:51.237551Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T04:45:00.539212Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"6395a49d-2808-4e12-8852-53ab1e299a02","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.767906Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.767906Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - - "558" + - "559" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:07:51 GMT + - Tue, 14 Oct 2025 04:45:01 GMT Server: - - Scaleway API Gateway (fr-par-1;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - fc423909-73b9-429c-ab7d-c4e6be6d34c1 + - a299263f-f275-44bb-9e89-b8a14fafbdf3 status: 200 OK code: 200 - duration: 114.879833ms + duration: 693.984625ms - id: 2 request: proto: HTTP/1.1 @@ -116,8 +116,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/baf818b5-31fd-4c47-a46a-b7c94235f846 + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/6395a49d-2808-4e12-8852-53ab1e299a02 method: GET response: proto: HTTP/2.0 @@ -125,20 +125,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 558 + content_length: 559 uncompressed: false - body: '{"created_at":"2025-10-13T13:07:50.991520Z","deletion_requested_at":null,"description":"Test key with default algorithm","id":"baf818b5-31fd-4c47-a46a-b7c94235f846","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:07:51.237551Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:07:51.237551Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T04:45:00.539212Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"6395a49d-2808-4e12-8852-53ab1e299a02","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.767906Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.767906Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - - "558" + - "559" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:07:52 GMT + - Tue, 14 Oct 2025 04:45:06 GMT Server: - - Scaleway API Gateway (fr-par-1;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 70fe484e-eacc-4ca8-8d94-8dc2f32b6619 + - 95657606-30e6-48a7-80fe-9b43f5e6ac2e status: 200 OK code: 200 - duration: 80.017334ms + duration: 203.161125ms - id: 3 request: proto: HTTP/1.1 @@ -165,8 +165,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/baf818b5-31fd-4c47-a46a-b7c94235f846 + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/6395a49d-2808-4e12-8852-53ab1e299a02 method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:07:53 GMT + - Tue, 14 Oct 2025 04:45:08 GMT Server: - - Scaleway API Gateway (fr-par-1;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - de543f3b-0dbc-41f0-97da-b5ae01530ad8 + - 1fa39813-952a-46ca-b45f-eaf719a38e6a status: 204 No Content code: 204 - duration: 116.667042ms + duration: 118.074417ms - id: 4 request: proto: HTTP/1.1 @@ -212,8 +212,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/baf818b5-31fd-4c47-a46a-b7c94235f846 + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/6395a49d-2808-4e12-8852-53ab1e299a02 method: GET response: proto: HTTP/2.0 @@ -221,20 +221,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 598 + content_length: 599 uncompressed: false - body: '{"created_at":"2025-10-13T13:07:50.991520Z","deletion_requested_at":"2025-10-13T13:07:53.439157Z","description":"Test key with default algorithm","id":"baf818b5-31fd-4c47-a46a-b7c94235f846","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:07:51.237551Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-13T13:07:51.237551Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T04:45:00.539212Z","deletion_requested_at":"2025-10-14T04:45:08.939806Z","description":"Test key with RSA-3072 algorithm","id":"6395a49d-2808-4e12-8852-53ab1e299a02","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.767906Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T04:45:00.767906Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - - "598" + - "599" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:07:53 GMT + - Tue, 14 Oct 2025 04:45:09 GMT Server: - - Scaleway API Gateway (fr-par-1;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 08bc6c01-e929-405d-a08d-a7481cf014ef + - 3694c8b9-82c3-4276-8a22-f188c7ba2286 status: 200 OK code: 200 - duration: 25.58425ms + duration: 100.581416ms diff --git a/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml new file mode 100644 index 0000000000..ab4d1659a2 --- /dev/null +++ b/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml @@ -0,0 +1,248 @@ +--- +version: 2 +interactions: + - id: 0 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 242 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: '{"project_id":"105bdce1-64c0-48ab-899d-868455867ecf","name":"tf-test-kms-key-legacy","usage":{"symmetric_encryption":"aes_256_gcm"},"description":"Test key with deprecated usage field","tags":null,"unprotected":true,"origin":"unknown_origin"}' + form: {} + headers: + Content-Type: + - application/json + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys + method: POST + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 548 + uncompressed: false + body: '{"created_at":"2025-10-14T04:45:01.147929Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"d43b1bd9-3d26-4ad4-a86e-571d09325eb6","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.156743Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:01.156743Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + headers: + Content-Length: + - "548" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Tue, 14 Oct 2025 04:45:01 GMT + Server: + - Scaleway API Gateway (fr-par-2;edge03) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - 61ef5f2f-13ae-43e2-8b65-d1ba73432d18 + status: 200 OK + code: 200 + duration: 3.526677333s + - id: 1 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/d43b1bd9-3d26-4ad4-a86e-571d09325eb6 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 548 + uncompressed: false + body: '{"created_at":"2025-10-14T04:45:01.147929Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"d43b1bd9-3d26-4ad4-a86e-571d09325eb6","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.156743Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:01.156743Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + headers: + Content-Length: + - "548" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Tue, 14 Oct 2025 04:45:01 GMT + Server: + - Scaleway API Gateway (fr-par-2;edge03) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - 20925fed-a1bc-454d-8765-11d8ecbd06d6 + status: 200 OK + code: 200 + duration: 408.858125ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/d43b1bd9-3d26-4ad4-a86e-571d09325eb6 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 548 + uncompressed: false + body: '{"created_at":"2025-10-14T04:45:01.147929Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"d43b1bd9-3d26-4ad4-a86e-571d09325eb6","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.156743Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:01.156743Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + headers: + Content-Length: + - "548" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Tue, 14 Oct 2025 04:45:06 GMT + Server: + - Scaleway API Gateway (fr-par-2;edge03) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - 890f8f4a-319e-4543-848d-fcf92ed6e9e0 + status: 200 OK + code: 200 + duration: 119.368459ms + - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/d43b1bd9-3d26-4ad4-a86e-571d09325eb6 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Tue, 14 Oct 2025 04:45:09 GMT + Server: + - Scaleway API Gateway (fr-par-2;edge03) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - b6df18be-eeb0-4a7d-9bea-177c87d06300 + status: 204 No Content + code: 204 + duration: 121.675417ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: api.scaleway.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + User-Agent: + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/d43b1bd9-3d26-4ad4-a86e-571d09325eb6 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 588 + uncompressed: false + body: '{"created_at":"2025-10-14T04:45:01.147929Z","deletion_requested_at":"2025-10-14T04:45:08.981582Z","description":"Test key with deprecated usage field","id":"d43b1bd9-3d26-4ad4-a86e-571d09325eb6","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.156743Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T04:45:01.156743Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + headers: + Content-Length: + - "588" + Content-Security-Policy: + - default-src 'none'; frame-ancestors 'none' + Content-Type: + - application/json + Date: + - Tue, 14 Oct 2025 04:45:09 GMT + Server: + - Scaleway API Gateway (fr-par-2;edge03) + Strict-Transport-Security: + - max-age=63072000 + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - DENY + X-Request-Id: + - e9154b88-d823-47ce-b73a-eb3e1c827408 + status: 200 OK + code: 200 + duration: 79.909958ms diff --git a/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml index a9398c5ba6..c7b486028c 100644 --- a/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml @@ -18,7 +18,7 @@ interactions: Content-Type: - application/json User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys method: POST response: @@ -27,20 +27,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 515 + content_length: 532 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:30.170991Z","deletion_requested_at":null,"description":"Test key","id":"9187cb2c-30e3-4e00-b35a-8c289f389e2c","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:30.174818Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-07-09T09:35:30.174818Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:01.061211Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "515" + - "532" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:30 GMT + - Tue, 14 Oct 2025 04:45:01 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 4510b348-2a9c-4983-b6bf-2fd411b362a8 + - 6009099b-d432-4e56-942c-cb8b727451fe status: 200 OK code: 200 - duration: 385.926458ms + duration: 3.199010916s - id: 1 request: proto: HTTP/1.1 @@ -67,8 +67,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/9187cb2c-30e3-4e00-b35a-8c289f389e2c + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a method: GET response: proto: HTTP/2.0 @@ -76,20 +76,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 515 + content_length: 532 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:30.170991Z","deletion_requested_at":null,"description":"Test key","id":"9187cb2c-30e3-4e00-b35a-8c289f389e2c","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:30.174818Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-07-09T09:35:30.174818Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:01.061211Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "515" + - "532" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:30 GMT + - Tue, 14 Oct 2025 04:45:01 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 8f1d4755-3e75-4b88-afbf-99c28e355b9d + - 80915e2e-2721-4d11-a98b-6d2af6051d08 status: 200 OK code: 200 - duration: 120.929042ms + duration: 402.942208ms - id: 2 request: proto: HTTP/1.1 @@ -116,8 +116,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/9187cb2c-30e3-4e00-b35a-8c289f389e2c + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a method: GET response: proto: HTTP/2.0 @@ -125,20 +125,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 515 + content_length: 532 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:30.170991Z","deletion_requested_at":null,"description":"Test key","id":"9187cb2c-30e3-4e00-b35a-8c289f389e2c","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:30.174818Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-07-09T09:35:30.174818Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:01.061211Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "515" + - "532" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:31 GMT + - Tue, 14 Oct 2025 04:45:06 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 10b3d5c6-4ae2-4057-b708-34693696b577 + - 5c3e2012-178c-442a-b231-5846f18e38a6 status: 200 OK code: 200 - duration: 139.53725ms + duration: 140.688375ms - id: 3 request: proto: HTTP/1.1 @@ -165,8 +165,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/9187cb2c-30e3-4e00-b35a-8c289f389e2c + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a method: GET response: proto: HTTP/2.0 @@ -174,20 +174,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 515 + content_length: 532 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:30.170991Z","deletion_requested_at":null,"description":"Test key","id":"9187cb2c-30e3-4e00-b35a-8c289f389e2c","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:30.174818Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-07-09T09:35:30.174818Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:01.061211Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "515" + - "532" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:32 GMT + - Tue, 14 Oct 2025 04:45:08 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -195,10 +195,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - a3719c3c-2172-4088-b283-177b7bf701f1 + - 93869e08-dc13-44a3-baa8-627e754492b9 status: 200 OK code: 200 - duration: 144.34225ms + duration: 193.920667ms - id: 4 request: proto: HTTP/1.1 @@ -216,8 +216,8 @@ interactions: Content-Type: - application/json User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/9187cb2c-30e3-4e00-b35a-8c289f389e2c + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a method: PATCH response: proto: HTTP/2.0 @@ -225,20 +225,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 527 + content_length: 544 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:30.170991Z","deletion_requested_at":null,"description":"Test key updated","id":"9187cb2c-30e3-4e00-b35a-8c289f389e2c","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:30.174818Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-07-09T09:35:32.949117Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key updated","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T04:45:09.643908Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "527" + - "544" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:32 GMT + - Tue, 14 Oct 2025 04:45:09 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -246,10 +246,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 69a08da8-19d7-4d26-a998-9cc49ffeb132 + - 6bf3c380-b8e3-4d39-86bc-1a89829c3d1b status: 200 OK code: 200 - duration: 153.157042ms + duration: 164.956417ms - id: 5 request: proto: HTTP/1.1 @@ -265,8 +265,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/9187cb2c-30e3-4e00-b35a-8c289f389e2c + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a method: GET response: proto: HTTP/2.0 @@ -274,20 +274,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 527 + content_length: 544 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:30.170991Z","deletion_requested_at":null,"description":"Test key updated","id":"9187cb2c-30e3-4e00-b35a-8c289f389e2c","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:30.174818Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-07-09T09:35:32.949117Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key updated","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T04:45:09.643908Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "527" + - "544" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:33 GMT + - Tue, 14 Oct 2025 04:45:09 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -295,10 +295,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 0a8668cb-820f-4acc-860a-b7bbe0a1dd51 + - 19a6bf1e-460e-437d-9297-974b6d1ef990 status: 200 OK code: 200 - duration: 141.29925ms + duration: 121.989125ms - id: 6 request: proto: HTTP/1.1 @@ -314,8 +314,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/9187cb2c-30e3-4e00-b35a-8c289f389e2c + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a method: GET response: proto: HTTP/2.0 @@ -323,20 +323,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 527 + content_length: 544 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:30.170991Z","deletion_requested_at":null,"description":"Test key updated","id":"9187cb2c-30e3-4e00-b35a-8c289f389e2c","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:30.174818Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-07-09T09:35:32.949117Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key updated","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T04:45:09.643908Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "527" + - "544" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:33 GMT + - Tue, 14 Oct 2025 04:45:11 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -344,10 +344,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 7da18c74-4479-4409-991e-d5a75b9fc183 + - 3ab290fa-b1d5-42eb-9d9f-0d397c412f82 status: 200 OK code: 200 - duration: 110.767042ms + duration: 154.190542ms - id: 7 request: proto: HTTP/1.1 @@ -363,8 +363,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/9187cb2c-30e3-4e00-b35a-8c289f389e2c + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a method: DELETE response: proto: HTTP/2.0 @@ -381,9 +381,9 @@ interactions: Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:34 GMT + - Tue, 14 Oct 2025 04:45:13 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -391,10 +391,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 6aa8845f-bc7c-426b-bb58-56efd5bda6e7 + - 5cb497d5-90da-4e11-8cb3-24110d8adc76 status: 204 No Content code: 204 - duration: 137.206042ms + duration: 152.792916ms - id: 8 request: proto: HTTP/1.1 @@ -410,8 +410,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/9187cb2c-30e3-4e00-b35a-8c289f389e2c + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a method: GET response: proto: HTTP/2.0 @@ -419,20 +419,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 552 + content_length: 584 uncompressed: false - body: '{"created_at":"2025-07-09T09:35:30.170991Z","deletion_requested_at":"2025-07-09T09:35:34.815199Z","description":"Test key updated","id":"9187cb2c-30e3-4e00-b35a-8c289f389e2c","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-07-09T09:35:30.174818Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-07-09T09:35:32.949117Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":"2025-10-14T04:45:12.977946Z","description":"Test key updated","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","updated"],"updated_at":"2025-10-14T04:45:09.643908Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "552" + - "584" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Wed, 09 Jul 2025 09:35:34 GMT + - Tue, 14 Oct 2025 04:45:13 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -440,7 +440,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 53739f2c-95fc-484c-b235-c4c5c5ca7be7 + - d1ec3523-361b-4e4c-8a4a-b3948264e8ba status: 200 OK code: 200 - duration: 116.598666ms + duration: 133.849833ms diff --git a/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml index 27173ea0bf..2aa801d5ec 100644 --- a/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 555 uncompressed: false - body: '{"created_at":"2025-10-13T13:13:20.314934Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"23ba19e7-9139-402f-a1a5-34da98f78086","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:13:21.284139Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:13:21.284139Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T04:44:58.176871Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"c4568c5b-da01-4024-b02f-c435ed62fd75","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.450262Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.450262Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "555" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:13:21 GMT + - Tue, 14 Oct 2025 04:45:00 GMT Server: - - Scaleway API Gateway (fr-par-1;edge02) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 880dffe2-1c90-45d8-85dd-4c2eeaff96e9 + - 9638bf3c-8134-44ab-91df-4b8bbb68cef2 status: 200 OK code: 200 - duration: 2.033870417s + duration: 3.416856625s - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/23ba19e7-9139-402f-a1a5-34da98f78086 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4568c5b-da01-4024-b02f-c435ed62fd75 method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 555 uncompressed: false - body: '{"created_at":"2025-10-13T13:13:20.314934Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"23ba19e7-9139-402f-a1a5-34da98f78086","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:13:21.284139Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:13:21.284139Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T04:44:58.176871Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"c4568c5b-da01-4024-b02f-c435ed62fd75","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.450262Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.450262Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "555" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:13:21 GMT + - Tue, 14 Oct 2025 04:45:00 GMT Server: - - Scaleway API Gateway (fr-par-1;edge02) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 56cc0845-d803-426a-b792-c3942211c189 + - 59df3544-7d83-44ca-b189-87cb26f65972 status: 200 OK code: 200 - duration: 97.99975ms + duration: 462.847375ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/23ba19e7-9139-402f-a1a5-34da98f78086 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4568c5b-da01-4024-b02f-c435ed62fd75 method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 555 uncompressed: false - body: '{"created_at":"2025-10-13T13:13:20.314934Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"23ba19e7-9139-402f-a1a5-34da98f78086","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:13:21.284139Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-13T13:13:21.284139Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T04:44:58.176871Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"c4568c5b-da01-4024-b02f-c435ed62fd75","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.450262Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.450262Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "555" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:13:22 GMT + - Tue, 14 Oct 2025 04:45:05 GMT Server: - - Scaleway API Gateway (fr-par-1;edge02) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 035ab31c-3fde-4611-a0c9-7a444c989069 + - f3aaf48e-83f9-4929-9cfd-9a1f0289c34b status: 200 OK code: 200 - duration: 99.693834ms + duration: 251.699333ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/23ba19e7-9139-402f-a1a5-34da98f78086 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4568c5b-da01-4024-b02f-c435ed62fd75 method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:13:23 GMT + - Tue, 14 Oct 2025 04:45:07 GMT Server: - - Scaleway API Gateway (fr-par-1;edge02) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 651f4a02-7e4e-4226-a87b-7410b0e11a4f + - 3c4bb3b6-ded0-4f92-8ac7-c8517bfe9528 status: 204 No Content code: 204 - duration: 189.475375ms + duration: 210.401625ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/23ba19e7-9139-402f-a1a5-34da98f78086 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4568c5b-da01-4024-b02f-c435ed62fd75 method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 595 uncompressed: false - body: '{"created_at":"2025-10-13T13:13:20.314934Z","deletion_requested_at":"2025-10-13T13:13:23.783654Z","description":"Test key with RSA-4096 algorithm","id":"23ba19e7-9139-402f-a1a5-34da98f78086","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-13T13:13:21.284139Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-13T13:13:21.284139Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T04:44:58.176871Z","deletion_requested_at":"2025-10-14T04:45:07.870061Z","description":"Test key with RSA-4096 algorithm","id":"c4568c5b-da01-4024-b02f-c435ed62fd75","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.450262Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T04:45:00.450262Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "595" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Mon, 13 Oct 2025 13:13:23 GMT + - Tue, 14 Oct 2025 04:45:08 GMT Server: - - Scaleway API Gateway (fr-par-1;edge02) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - e9851381-947e-45e8-8e16-4f7332aae0a3 + - c2febf3b-f883-4a92-b602-3ef96ebf167e status: 200 OK code: 200 - duration: 144.586875ms + duration: 204.266458ms diff --git a/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml index ab4f235ca5..5c427033a2 100644 --- a/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml @@ -18,7 +18,7 @@ interactions: Content-Type: - application/json User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys method: POST response: @@ -27,20 +27,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 595 + content_length: 612 uncompressed: false - body: '{"created_at":"2025-09-01T14:08:23.132185Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"449ede52-42cd-4692-8ad6-8d3d60b31b1f","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-09-01T14:08:23.140726Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-09-01T14:08:23.140726Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:00.861144Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"63c95638-b9a9-40b7-8848-d96c138f37d7","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.871663Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.871663Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "595" + - "612" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Mon, 01 Sep 2025 14:08:23 GMT + - Tue, 14 Oct 2025 04:45:00 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 26922321-731c-4928-8fec-69e3fb748202 + - c5fdd3bb-b2d1-4650-b062-491e8a25d9a3 status: 200 OK code: 200 - duration: 441.486459ms + duration: 4.091118959s - id: 1 request: proto: HTTP/1.1 @@ -67,8 +67,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/449ede52-42cd-4692-8ad6-8d3d60b31b1f + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/63c95638-b9a9-40b7-8848-d96c138f37d7 method: GET response: proto: HTTP/2.0 @@ -76,20 +76,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 595 + content_length: 612 uncompressed: false - body: '{"created_at":"2025-09-01T14:08:23.132185Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"449ede52-42cd-4692-8ad6-8d3d60b31b1f","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-09-01T14:08:23.140726Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-09-01T14:08:23.140726Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:00.861144Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"63c95638-b9a9-40b7-8848-d96c138f37d7","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.871663Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.871663Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "595" + - "612" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Mon, 01 Sep 2025 14:08:23 GMT + - Tue, 14 Oct 2025 04:45:01 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - a38c873d-0db5-4b18-be3d-6702c5221289 + - ee26c91e-26a2-41a4-a962-862a5986ddf9 status: 200 OK code: 200 - duration: 116.597417ms + duration: 517.108041ms - id: 2 request: proto: HTTP/1.1 @@ -116,8 +116,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/449ede52-42cd-4692-8ad6-8d3d60b31b1f + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/63c95638-b9a9-40b7-8848-d96c138f37d7 method: GET response: proto: HTTP/2.0 @@ -125,20 +125,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 595 + content_length: 612 uncompressed: false - body: '{"created_at":"2025-09-01T14:08:23.132185Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"449ede52-42cd-4692-8ad6-8d3d60b31b1f","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-09-01T14:08:23.140726Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-09-01T14:08:23.140726Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:00.861144Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"63c95638-b9a9-40b7-8848-d96c138f37d7","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.871663Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.871663Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "595" + - "612" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Mon, 01 Sep 2025 14:08:24 GMT + - Tue, 14 Oct 2025 04:45:06 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - c856061a-4f5d-4f30-b213-7a18e9ab9206 + - 6277b162-f3d6-4635-b42b-a279ff3aec26 status: 200 OK code: 200 - duration: 123.934916ms + duration: 151.637584ms - id: 3 request: proto: HTTP/1.1 @@ -165,8 +165,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/449ede52-42cd-4692-8ad6-8d3d60b31b1f + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/63c95638-b9a9-40b7-8848-d96c138f37d7 method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Mon, 01 Sep 2025 14:08:25 GMT + - Tue, 14 Oct 2025 04:45:08 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - dbc7b22c-f2d3-477f-b5ba-9c620a566ed4 + - 3a5c15a2-20b6-499f-9c30-050cee45fc90 status: 204 No Content code: 204 - duration: 139.486584ms + duration: 197.024167ms - id: 4 request: proto: HTTP/1.1 @@ -212,8 +212,8 @@ interactions: form: {} headers: User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.24.0; darwin; arm64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/449ede52-42cd-4692-8ad6-8d3d60b31b1f + - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/63c95638-b9a9-40b7-8848-d96c138f37d7 method: GET response: proto: HTTP/2.0 @@ -221,20 +221,20 @@ interactions: proto_minor: 0 transfer_encoding: [] trailer: {} - content_length: 635 + content_length: 652 uncompressed: false - body: '{"created_at":"2025-09-01T14:08:23.132185Z","deletion_requested_at":"2025-09-01T14:08:25.319098Z","description":"Test key with rotation policy","id":"449ede52-42cd-4692-8ad6-8d3d60b31b1f","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-09-01T14:08:23.140726Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-09-01T14:08:23.140726Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T04:45:00.861144Z","deletion_requested_at":"2025-10-14T04:45:08.748650Z","description":"Test key with rotation policy","id":"63c95638-b9a9-40b7-8848-d96c138f37d7","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.871663Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T04:45:00.871663Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - - "635" + - "652" Content-Security-Policy: - default-src 'none'; frame-ancestors 'none' Content-Type: - application/json Date: - - Mon, 01 Sep 2025 14:08:25 GMT + - Tue, 14 Oct 2025 04:45:08 GMT Server: - - Scaleway API Gateway (fr-par-3;edge01) + - Scaleway API Gateway (fr-par-2;edge03) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 9e3d94eb-96df-4b75-83aa-48814dba6768 + - e63946f1-4d3f-486f-a10b-2d4128c13dcf status: 200 OK code: 200 - duration: 108.039625ms + duration: 87.677708ms diff --git a/templates/resources/key_manager_key.md.tmpl b/templates/resources/key_manager_key.md.tmpl index 8b8722371a..b441d6e8f9 100644 --- a/templates/resources/key_manager_key.md.tmpl +++ b/templates/resources/key_manager_key.md.tmpl @@ -9,15 +9,17 @@ This resource allows you to create and manage cryptographic keys in Scaleway Key ## Example Usage +### Symmetric Encryption Key + ```terraform -resource "scaleway_key_manager_key" "main" { - name = "my-kms-key" - region = "fr-par" - project_id = "your-project-id" # optional, will use provider default if omitted - usage = "symmetric_encryption" - description = "Key for encrypting secrets" - tags = ["env:prod", "kms"] - unprotected = true +resource "scaleway_key_manager_key" "symmetric" { + name = "my-kms-key" + region = "fr-par" + project_id = "your-project-id" # optional, will use provider default if omitted + usage_symmetric_encryption = "aes_256_gcm" + description = "Key for encrypting secrets" + tags = ["env:prod", "kms"] + unprotected = true rotation_policy { rotation_period = "720h" # 30 days @@ -25,16 +27,27 @@ resource "scaleway_key_manager_key" "main" { } ``` -### Example: Asymmetric Key with Custom Algorithm +### Asymmetric Encryption Key with RSA-4096 ```terraform resource "scaleway_key_manager_key" "rsa_4096" { - name = "rsa-4096-key" - region = "fr-par" - usage = "asymmetric_encryption" - algorithm = "rsa_oaep_4096_sha256" # Specify RSA-4096 instead of default RSA-3072 - description = "Key for encrypting large files with RSA-4096" - unprotected = true + name = "rsa-4096-key" + region = "fr-par" + usage_asymmetric_encryption = "rsa_oaep_4096_sha256" + description = "Key for encrypting large files with RSA-4096" + unprotected = true +} +``` + +### Asymmetric Signing Key + +```terraform +resource "scaleway_key_manager_key" "signing" { + name = "signing-key" + region = "fr-par" + usage_asymmetric_signing = "rsa_pss_2048_sha256" + description = "Key for signing documents" + unprotected = true } ``` @@ -44,16 +57,24 @@ The following arguments are supported: - `name` (String) – The name of the key. - `region` (String) – The region in which to create the key (e.g., `fr-par`). -- `project_id` (String, Optional) – The ID of the project the key belongs to. -- `usage` (String, **Required**) – The usage of the key. Valid values are: - - `symmetric_encryption` - - `asymmetric_encryption` - - `asymmetric_signing` -- `algorithm` (String, Optional) – The algorithm to use for the key. If not specified, a default algorithm is chosen based on the `usage`: - - For `symmetric_encryption`: defaults to `aes_256_gcm` - - For `asymmetric_encryption`: defaults to `rsa_oaep_3072_sha256`. Other options include `rsa_oaep_2048_sha256`, `rsa_oaep_4096_sha256` - - For `asymmetric_signing`: defaults to `ec_p256_sha256`. Other options include `rsa_pss_2048_sha256`, etc. - - See [Scaleway Key Manager documentation](https://www.scaleway.com/en/docs/key-manager/concepts/) for the full list of supported algorithms. +- `project_id` (String, Optional) – The ID of the project the key belongs to. + +**Key Usage and Algorithm (choose ONE of the following):** + +- `usage_symmetric_encryption` (String, Optional) – Algorithm for symmetric encryption. Possible values: + - `aes_256_gcm` +- `usage_asymmetric_encryption` (String, Optional) – Algorithm for asymmetric encryption. Possible values: + - `rsa_oaep_2048_sha256` + - `rsa_oaep_3072_sha256` + - `rsa_oaep_4096_sha256` +- `usage_asymmetric_signing` (String, Optional) – Algorithm for asymmetric signing. Possible values: + - `ec_p256_sha256` + - `rsa_pss_2048_sha256` + - `rsa_pkcs1_2048_sha256` +- `usage` (String, **DEPRECATED**) – Legacy field. Use `usage_*` fields instead. Valid values: `symmetric_encryption`, `asymmetric_encryption`, `asymmetric_signing`. When using this field, algorithms are hardcoded to defaults. + +**Other arguments:** + - `description` (String, Optional) – A description for the key. - `tags` (List of String, Optional) – A list of tags to assign to the key. - `unprotected` (Boolean, Optional) – If `true`, the key can be deleted. Defaults to `false` (protected). @@ -68,7 +89,7 @@ The following arguments are supported: In addition to all arguments above, the following attributes are exported: - `id` – The ID of the key. -- `algorithm` – The algorithm used by the key (computed if not specified). +- `usage` – The usage type of the key (e.g., `symmetric_encryption`, `asymmetric_encryption`, `asymmetric_signing`). - `state` – The state of the key (e.g., `enabled`). - `created_at` – The date and time when the key was created. - `updated_at` – The date and time when the key was last updated. @@ -76,8 +97,6 @@ In addition to all arguments above, the following attributes are exported: - `protected` – Whether the key is protected from deletion. - `locked` – Whether the key is locked. - `rotated_at` – The date and time when the key was last rotated. -- `origin_read` – The origin of the key as returned by the API. -- `region_read` – The region of the key as returned by the API. - `rotation_policy` (Block) - `rotation_period` – The period between key rotations. - `next_rotation_at` – The date and time of the next scheduled rotation. @@ -90,21 +109,54 @@ You can import a key using its ID and region: terraform import scaleway_key_manager_key.main fr-par/11111111-2222-3333-4444-555555555555 ``` +## Migration from v1.x to v2.x + +⚠️ **Deprecation Notice**: The `usage` field is now deprecated in favor of `usage_*` fields. + +**Old syntax (deprecated, but still supported):** +```terraform +resource "scaleway_key_manager_key" "main" { + usage = "asymmetric_encryption" # hardcoded to rsa_oaep_3072_sha256 +} +``` + +**New syntax (recommended):** +```terraform +resource "scaleway_key_manager_key" "main" { + usage_asymmetric_encryption = "rsa_oaep_4096_sha256" # explicit algorithm selection +} +``` + +**What changed:** +- The generic `usage` field is now deprecated +- You should now use specific `usage_*` fields (`usage_symmetric_encryption`, `usage_asymmetric_encryption`, `usage_asymmetric_signing`) +- You can now explicitly choose the cryptographic algorithm (RSA-2048, RSA-3072, RSA-4096, EC-P256, etc.) + +**Migration steps:** +1. Replace `usage = "symmetric_encryption"` with `usage_symmetric_encryption = "aes_256_gcm"` +2. Replace `usage = "asymmetric_encryption"` with `usage_asymmetric_encryption = "rsa_oaep_3072_sha256"` (or your preferred algorithm) +3. Replace `usage = "asymmetric_signing"` with `usage_asymmetric_signing = "ec_p256_sha256"` (or your preferred algorithm) + +The old `usage` field still works but will show deprecation warnings. + ## Notes - **Protection**: By default, keys are protected and cannot be deleted. To allow deletion, set `unprotected = true` when creating the key. - **Rotation Policy**: The `rotation_policy` block allows you to set automatic rotation for your key. - **Origin**: The `origin` argument is optional and defaults to `scaleway_kms`. Use `external` if you want to import an external key (see Scaleway documentation for details). - **Project and Region**: If not specified, `project_id` and `region` will default to the provider configuration. +- **Algorithm Selection**: With the new `usage_*` fields, you can now specify exactly which algorithm to use for your keys, aligning with the flexibility provided by the Scaleway API. +- **Deprecation**: The `usage` field is deprecated. Please migrate to `usage_*` fields to explicitly select algorithms. -## Example: Asymmetric Key +## Additional Example: Asymmetric Signing Key ```terraform -resource "scaleway_key_manager_key" "asym" { - name = "asymmetric-key" - region = "fr-par" - usage = "asymmetric_signing" - description = "Key for signing documents" - unprotected = true +resource "scaleway_key_manager_key" "signing" { + name = "signing-key" + region = "fr-par" + usage_asymmetric_signing = "ec_p256_sha256" + description = "Key for signing documents" + unprotected = true } ``` + From 837951bad930f02db8913b135fcb1ee883a1381a Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Tue, 14 Oct 2025 07:14:04 +0200 Subject: [PATCH 06/10] fix: lint issues in Key Manager implementation --- internal/services/keymanager/helpers.go | 24 +++++++++++++++----- internal/services/keymanager/key_resource.go | 6 ++--- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/internal/services/keymanager/helpers.go b/internal/services/keymanager/helpers.go index c62c72f954..2e6d8be05a 100644 --- a/internal/services/keymanager/helpers.go +++ b/internal/services/keymanager/helpers.go @@ -13,21 +13,27 @@ import ( "github.com/scaleway/terraform-provider-scaleway/v2/internal/types" ) +const ( + usageSymmetricEncryption = "symmetric_encryption" + usageAsymmetricEncryption = "asymmetric_encryption" + usageAsymmetricSigning = "asymmetric_signing" +) + func UsageToString(u *key_manager.KeyUsage) string { if u == nil { return "" } if u.SymmetricEncryption != nil { - return "symmetric_encryption" + return usageSymmetricEncryption } if u.AsymmetricEncryption != nil { - return "asymmetric_encryption" + return usageAsymmetricEncryption } if u.AsymmetricSigning != nil { - return "asymmetric_signing" + return usageAsymmetricSigning } return "" @@ -58,16 +64,19 @@ func NewKeyManagerAPIWithRegionAndID(m any, id string) (*key_manager.API, scw.Re func ExpandKeyUsageFromFields(d *schema.ResourceData) *key_manager.KeyUsage { if v, ok := d.GetOk("usage_symmetric_encryption"); ok { alg := key_manager.KeyAlgorithmSymmetricEncryption(v.(string)) + return &key_manager.KeyUsage{SymmetricEncryption: &alg} } if v, ok := d.GetOk("usage_asymmetric_encryption"); ok { alg := key_manager.KeyAlgorithmAsymmetricEncryption(v.(string)) + return &key_manager.KeyUsage{AsymmetricEncryption: &alg} } if v, ok := d.GetOk("usage_asymmetric_signing"); ok { alg := key_manager.KeyAlgorithmAsymmetricSigning(v.(string)) + return &key_manager.KeyUsage{AsymmetricSigning: &alg} } @@ -80,14 +89,17 @@ func ExpandKeyUsageFromFields(d *schema.ResourceData) *key_manager.KeyUsage { func ExpandKeyUsageLegacy(usage string) *key_manager.KeyUsage { switch usage { - case "symmetric_encryption": + case usageSymmetricEncryption: alg := key_manager.KeyAlgorithmSymmetricEncryptionAes256Gcm + return &key_manager.KeyUsage{SymmetricEncryption: &alg} - case "asymmetric_encryption": + case usageAsymmetricEncryption: alg := key_manager.KeyAlgorithmAsymmetricEncryptionRsaOaep3072Sha256 + return &key_manager.KeyUsage{AsymmetricEncryption: &alg} - case "asymmetric_signing": + case usageAsymmetricSigning: alg := key_manager.KeyAlgorithmAsymmetricSigningEcP256Sha256 + return &key_manager.KeyUsage{AsymmetricSigning: &alg} default: return nil diff --git a/internal/services/keymanager/key_resource.go b/internal/services/keymanager/key_resource.go index 0b54019e2b..cc08464c0e 100644 --- a/internal/services/keymanager/key_resource.go +++ b/internal/services/keymanager/key_resource.go @@ -209,11 +209,11 @@ func resourceKeyManagerKeyRead(ctx context.Context, d *schema.ResourceData, m an if !usesLegacy { switch usageType { - case "symmetric_encryption": + case usageSymmetricEncryption: _ = d.Set("usage_symmetric_encryption", algorithm) - case "asymmetric_encryption": + case usageAsymmetricEncryption: _ = d.Set("usage_asymmetric_encryption", algorithm) - case "asymmetric_signing": + case usageAsymmetricSigning: _ = d.Set("usage_asymmetric_signing", algorithm) } } From b21dcfa9fe9322d4d50c88faa1e0a8e2f65a6e22 Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Tue, 14 Oct 2025 11:33:25 +0200 Subject: [PATCH 07/10] feat: use SDK enums for Key Manager algorithm validation --- go.sum | 57 ++++++++++ internal/services/keymanager/key_resource.go | 35 +++--- .../key-manager-key-basic.cassette.yaml | 56 +++++----- ...anager-key-default-algorithm.cassette.yaml | 56 +++++----- ...key-manager-key-legacy-usage.cassette.yaml | 56 +++++----- .../key-manager-key-update.cassette.yaml | 104 +++++++++--------- ...er-key-with-custom-algorithm.cassette.yaml | 56 +++++----- ...ger-key-with-rotation-policy.cassette.yaml | 56 +++++----- 8 files changed, 262 insertions(+), 214 deletions(-) diff --git a/go.sum b/go.sum index 5bc6e92965..c7b7c96e48 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -17,14 +18,18 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -44,6 +49,7 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= github.com/Kunde21/markdownfmt/v3 v3.1.0 h1:KiZu9LKs+wFFBQKhrZJrFZwtLnCCWJahL+S+E/3VnM0= github.com/Kunde21/markdownfmt/v3 v3.1.0/go.mod h1:tPXN1RTyOzJwhfHoon9wUr4HGYmWgVxSQN6VBJDkrVc= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -63,8 +69,10 @@ github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki github.com/alexedwards/argon2id v1.0.0 h1:wJzDx66hqWX7siL/SRUmgz3F8YMrd/nfX/xHHcQQP0w= github.com/alexedwards/argon2id v1.0.0/go.mod h1:tYKkqIjzXvZdzPvADMWOEZ+l6+BD6CtBXMj5fnJppiw= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -89,10 +97,13 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.7 h1:BszAktdUo2xlzmYHjWMq70DqJ7cROM8iBd3f6hrpuMQ= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.7/go.mod h1:XJ1yHki/P7ZPuG4fd3f0Pg/dSGA2cTQBCLw82MH2H48= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.50.1/go.mod h1:fe3UQAYwylCQRlGnihsqU/tTQkrc2nrW/IhWYwlW9vg= +github.com/aws/aws-sdk-go-v2/service/iam v1.47.3/go.mod h1:5q4IwllQ9vIoq7bk8dPvPbT3LQCky+4NgV7vKwAbaEs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.7 h1:zmZ8qvtE9chfhBPuKB2aQFxW5F/rpwXUgmcVCgQzqRw= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.7/go.mod h1:vVYfbpd2l+pKqlSIDIOgouxNsGu5il9uDp0ooWb0jys= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.6/go.mod h1:sXXWh1G9LKKkNbuR0f0ZPd/IvDXlMGiag40opt4XEgY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9 h1:5r34CgVOD4WZudeEKZ9/iKpiT6cM1JyEROpXjOcdWv8= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9/go.mod h1:dB12CEbNWPbzO2uC6QSWHteqOg4JfBVJOojbAoAUb5I= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.7 h1:u3VbDKUCWarWiU+aIUK4gjTr/wQFXV17y3hgNno9fcA= @@ -128,9 +139,11 @@ github.com/bmatcuk/doublestar/v4 v4.9.1 h1:X8jg9rRZmJd4yRy7ZeNDRnM+T3ZfHv15JiBJ/ github.com/bmatcuk/doublestar/v4 v4.9.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -140,12 +153,16 @@ github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/containerd/typeurl/v2 v2.2.0/go.mod h1:8XOOxnyatxSWuG8OfsZXVnAF4iZfedjS/8UHSPJnX4g= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= @@ -173,7 +190,11 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= +github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= @@ -193,6 +214,7 @@ github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -203,7 +225,9 @@ github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -271,6 +295,7 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.5.1 h1:Vjg2VEcdHpwq+oY63s/ksHrgJYCTo0bwWvmmYWdE9fQ= github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM= @@ -284,6 +309,7 @@ github.com/hashicorp/awspolicyequivalence v1.7.0 h1:HxwPEw2/31BqQa73PinGciTfG2uJ github.com/hashicorp/awspolicyequivalence v1.7.0/go.mod h1:+oCTxQEYt+GcRalqrqTCBcJf100SQYiWQ4aENNYxYe0= github.com/hashicorp/cli v1.1.7 h1:/fZJ+hNdwfTSfsxMBa9WWMlfjUZbX8/LnUxgAd7lCVU= github.com/hashicorp/cli v1.1.7/go.mod h1:e6Mfpga9OCT1vqzFuoGZiiF/KaG9CbUfO5s3ghU3YgU= +github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -296,6 +322,7 @@ github.com/hashicorp/go-cty v1.5.0 h1:EkQ/v+dDNUqnuVpmS5fPqyY71NXVgT5gf32+57xY8g github.com/hashicorp/go-cty v1.5.0/go.mod h1:lFUCG5kd8exDobgSfyj4ONE/dc822kiYMguVKdHGMLM= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= @@ -303,6 +330,7 @@ github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshf github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48= github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -310,6 +338,7 @@ github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKe github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hc-install v0.9.2 h1:v80EtNX4fCVHqzL9Lg/2xkp62bbvQMnvPQ0G+OmtO24= github.com/hashicorp/hc-install v0.9.2/go.mod h1:XUqBQNnuT4RsxoxiM9ZaUk0NX8hi2h+Lb6/c0OZnC/I= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -318,6 +347,7 @@ github.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQx github.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/terraform-exec v0.23.1 h1:diK5NSSDXDKqHEOIQefBMu9ny+FhzwlwV0xgUTB7VTo= github.com/hashicorp/terraform-exec v0.23.1/go.mod h1:e4ZEg9BJDRaSalGm2z8vvrPONt0XWG0/tXpmzYTf+dM= github.com/hashicorp/terraform-json v0.27.1 h1:zWhEracxJW6lcjt/JvximOYyc12pS/gaKSy/wzzE7nY= @@ -349,6 +379,7 @@ github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -356,6 +387,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/katbyte/andreyvit-diff v0.0.2 h1:uQGxP2z57bTUGn3SCFzYKgtIKLeuYE+k9dxq1u9Js7U= @@ -416,6 +449,8 @@ github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7z github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/nats-io/jwt/v2 v2.8.0 h1:K7uzyz50+yGZDO5o772eRE7atlcSEENpL7P+b74JV1g= @@ -438,10 +473,12 @@ github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -455,8 +492,10 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35.0.20250929150437-c65b49480cff h1:1XC8rVPK4hr2lHdHajSurEV2Orp8eMGQ42vqh4hVX7M= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35.0.20250929150437-c65b49480cff/go.mod h1:DVB9HV7nK7TdTRqlpdxw6T0Wxg+aB9xPBEpO3aM2iqQ= +github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -480,7 +519,9 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= +github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= @@ -516,16 +557,24 @@ github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0 github.com/zclconf/go-cty v1.17.0/go.mod h1:wqFzcImaLTI6A5HfsRwB0nj5n0MRZFwmey8YoFPPs3U= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= +github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= go.abhg.dev/goldmark/frontmatter v0.2.0 h1:P8kPG0YkL12+aYk2yU3xHv4tcXzeVnN+gU0tJ5JnxRw= go.abhg.dev/goldmark/frontmatter v0.2.0/go.mod h1:XqrEkZuM57djk7zrlRUB02x8I5J0px76YjkOzhB4YlU= +go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= +go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= +go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.63.0/go.mod h1:wIvTiRUU7Pbfqas/5JVjGZcftBeSAGSYVMOHWzWG0qE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= @@ -544,6 +593,9 @@ go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJr go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -641,6 +693,7 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -704,6 +757,7 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053/go.mod h1:+nZKN+XVh4LCiA9DV3ywrzN4gumyCnKjau3NGb9SGoE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -785,6 +839,7 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -806,6 +861,7 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -851,6 +907,7 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= diff --git a/internal/services/keymanager/key_resource.go b/internal/services/keymanager/key_resource.go index cc08464c0e..19d0eec6b5 100644 --- a/internal/services/keymanager/key_resource.go +++ b/internal/services/keymanager/key_resource.go @@ -11,6 +11,7 @@ import ( "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional" "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account" "github.com/scaleway/terraform-provider-scaleway/v2/internal/types" + "github.com/scaleway/terraform-provider-scaleway/v2/internal/verify" ) func ResourceKeyManagerKey() *schema.Resource { @@ -44,12 +45,10 @@ func ResourceKeyManagerKey() *schema.Resource { }, }, "usage_symmetric_encryption": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validation.StringInSlice([]string{ - "aes_256_gcm", - }, false), - Description: "Algorithm for symmetric encryption. Possible values: aes_256_gcm", + Type: schema.TypeString, + Optional: true, + ValidateDiagFunc: verify.ValidateEnum[key_manager.KeyAlgorithmSymmetricEncryption](), + Description: "Algorithm for symmetric encryption", ExactlyOneOf: []string{ "usage", "usage_symmetric_encryption", @@ -58,14 +57,10 @@ func ResourceKeyManagerKey() *schema.Resource { }, }, "usage_asymmetric_encryption": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validation.StringInSlice([]string{ - "rsa_oaep_2048_sha256", - "rsa_oaep_3072_sha256", - "rsa_oaep_4096_sha256", - }, false), - Description: "Algorithm for asymmetric encryption. Possible values: rsa_oaep_2048_sha256, rsa_oaep_3072_sha256, rsa_oaep_4096_sha256", + Type: schema.TypeString, + Optional: true, + ValidateDiagFunc: verify.ValidateEnum[key_manager.KeyAlgorithmAsymmetricEncryption](), + Description: "Algorithm for asymmetric encryption", ExactlyOneOf: []string{ "usage", "usage_symmetric_encryption", @@ -74,14 +69,10 @@ func ResourceKeyManagerKey() *schema.Resource { }, }, "usage_asymmetric_signing": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validation.StringInSlice([]string{ - "ec_p256_sha256", - "rsa_pss_2048_sha256", - "rsa_pkcs1_2048_sha256", - }, false), - Description: "Algorithm for asymmetric signing. Possible values: ec_p256_sha256, rsa_pss_2048_sha256, rsa_pkcs1_2048_sha256", + Type: schema.TypeString, + Optional: true, + ValidateDiagFunc: verify.ValidateEnum[key_manager.KeyAlgorithmAsymmetricSigning](), + Description: "Algorithm for asymmetric signing", ExactlyOneOf: []string{ "usage", "usage_symmetric_encryption", diff --git a/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml index 2e0afba70d..99c6d0d397 100644 --- a/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 539 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.962761Z","deletion_requested_at":null,"description":"Test key","id":"0ce23363-cf10-414b-b4c9-08f4d0b40d2e","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.969638Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:00.969638Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.916318Z","deletion_requested_at":null,"description":"Test key","id":"5223fe51-8439-48df-bd65-5aa810acf37b","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.926894Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.926894Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "539" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:01 GMT + - Tue, 14 Oct 2025 09:00:16 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - f16da29d-8a2e-4b43-b7b0-2b4bf5172527 + - 879bf0ec-c7b5-4432-b7bd-22de327bba3a status: 200 OK code: 200 - duration: 3.335419708s + duration: 2.032888917s - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/0ce23363-cf10-414b-b4c9-08f4d0b40d2e + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/5223fe51-8439-48df-bd65-5aa810acf37b method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 539 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.962761Z","deletion_requested_at":null,"description":"Test key","id":"0ce23363-cf10-414b-b4c9-08f4d0b40d2e","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.969638Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:00.969638Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.916318Z","deletion_requested_at":null,"description":"Test key","id":"5223fe51-8439-48df-bd65-5aa810acf37b","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.926894Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.926894Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "539" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:01 GMT + - Tue, 14 Oct 2025 09:00:17 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 4952fd82-6d47-431c-8344-7d90977c12cb + - 79e663d8-3439-4c84-a5c4-a1cbb7fb93f7 status: 200 OK code: 200 - duration: 498.529791ms + duration: 137.603541ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/0ce23363-cf10-414b-b4c9-08f4d0b40d2e + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/5223fe51-8439-48df-bd65-5aa810acf37b method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 539 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.962761Z","deletion_requested_at":null,"description":"Test key","id":"0ce23363-cf10-414b-b4c9-08f4d0b40d2e","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.969638Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:00.969638Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.916318Z","deletion_requested_at":null,"description":"Test key","id":"5223fe51-8439-48df-bd65-5aa810acf37b","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.926894Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.926894Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "539" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:06 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 5a077bf4-eb93-4b18-bafc-4138665f7a60 + - 17e80009-011e-4f56-aa3c-0c25e1d09c0e status: 200 OK code: 200 - duration: 146.527584ms + duration: 97.353041ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/0ce23363-cf10-414b-b4c9-08f4d0b40d2e + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/5223fe51-8439-48df-bd65-5aa810acf37b method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:08 GMT + - Tue, 14 Oct 2025 09:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - e013d158-603b-4f0c-bcf3-80c5efbc84ce + - 7aafefe1-78a2-4db4-a063-e365f0e1b96a status: 204 No Content code: 204 - duration: 177.873709ms + duration: 131.248792ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/0ce23363-cf10-414b-b4c9-08f4d0b40d2e + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/5223fe51-8439-48df-bd65-5aa810acf37b method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 579 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.962761Z","deletion_requested_at":"2025-10-14T04:45:08.761714Z","description":"Test key","id":"0ce23363-cf10-414b-b4c9-08f4d0b40d2e","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.969638Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","test"],"updated_at":"2025-10-14T04:45:00.969638Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.916318Z","deletion_requested_at":"2025-10-14T09:00:19.050508Z","description":"Test key","id":"5223fe51-8439-48df-bd65-5aa810acf37b","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.926894Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.926894Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "579" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:08 GMT + - Tue, 14 Oct 2025 09:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 1ecc13fa-2d75-4431-a4d9-06b172f80fcc + - ef5b7c15-9b65-48ae-8eb1-401052680eee status: 200 OK code: 200 - duration: 99.950458ms + duration: 119.225042ms diff --git a/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml index 2f2d002937..fcc26a555b 100644 --- a/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 559 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.539212Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"6395a49d-2808-4e12-8852-53ab1e299a02","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.767906Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.767906Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T09:00:15.919093Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"4846608d-7813-4099-b03f-f733f9277c98","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.204244Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.204244Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - "559" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:00 GMT + - Tue, 14 Oct 2025 09:00:16 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 14ad9bfe-16c3-4f71-8a3c-d8b403024375 + - 64af7117-68a9-4da2-b56b-f8312a5dbada status: 200 OK code: 200 - duration: 3.969688708s + duration: 1.226075875s - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/6395a49d-2808-4e12-8852-53ab1e299a02 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/4846608d-7813-4099-b03f-f733f9277c98 method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 559 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.539212Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"6395a49d-2808-4e12-8852-53ab1e299a02","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.767906Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.767906Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T09:00:15.919093Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"4846608d-7813-4099-b03f-f733f9277c98","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.204244Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.204244Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - "559" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:01 GMT + - Tue, 14 Oct 2025 09:00:16 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - a299263f-f275-44bb-9e89-b8a14fafbdf3 + - 93e2e2ee-2739-4d9b-a855-d669352ac5e8 status: 200 OK code: 200 - duration: 693.984625ms + duration: 199.366333ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/6395a49d-2808-4e12-8852-53ab1e299a02 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/4846608d-7813-4099-b03f-f733f9277c98 method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 559 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.539212Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"6395a49d-2808-4e12-8852-53ab1e299a02","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.767906Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.767906Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T09:00:15.919093Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"4846608d-7813-4099-b03f-f733f9277c98","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.204244Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.204244Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - "559" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:06 GMT + - Tue, 14 Oct 2025 09:00:17 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 95657606-30e6-48a7-80fe-9b43f5e6ac2e + - 64570d98-ea93-4802-99f5-9400e7c96764 status: 200 OK code: 200 - duration: 203.161125ms + duration: 140.180833ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/6395a49d-2808-4e12-8852-53ab1e299a02 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/4846608d-7813-4099-b03f-f733f9277c98 method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:08 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 1fa39813-952a-46ca-b45f-eaf719a38e6a + - 992efc3b-115e-4fba-b214-5ec901b2ebc6 status: 204 No Content code: 204 - duration: 118.074417ms + duration: 114.680292ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/6395a49d-2808-4e12-8852-53ab1e299a02 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/4846608d-7813-4099-b03f-f733f9277c98 method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 599 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.539212Z","deletion_requested_at":"2025-10-14T04:45:08.939806Z","description":"Test key with RSA-3072 algorithm","id":"6395a49d-2808-4e12-8852-53ab1e299a02","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.767906Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T04:45:00.767906Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T09:00:15.919093Z","deletion_requested_at":"2025-10-14T09:00:18.388027Z","description":"Test key with RSA-3072 algorithm","id":"4846608d-7813-4099-b03f-f733f9277c98","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.204244Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T09:00:16.204244Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - "599" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:09 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 3694c8b9-82c3-4276-8a22-f188c7ba2286 + - aa242c78-b86b-43dd-af89-5825d74cbf3a status: 200 OK code: 200 - duration: 100.581416ms + duration: 100.585958ms diff --git a/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml index ab4d1659a2..387ee44928 100644 --- a/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 548 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.147929Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"d43b1bd9-3d26-4ad4-a86e-571d09325eb6","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.156743Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:01.156743Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:15.706646Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"73524db4-4168-4567-934d-5a95e0b1d06c","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.720129Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.720129Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "548" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:01 GMT + - Tue, 14 Oct 2025 09:00:15 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 61ef5f2f-13ae-43e2-8b65-d1ba73432d18 + - 6288e35a-42a2-48cf-962b-30614e3e1081 status: 200 OK code: 200 - duration: 3.526677333s + duration: 825.862125ms - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/d43b1bd9-3d26-4ad4-a86e-571d09325eb6 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/73524db4-4168-4567-934d-5a95e0b1d06c method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 548 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.147929Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"d43b1bd9-3d26-4ad4-a86e-571d09325eb6","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.156743Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:01.156743Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:15.706646Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"73524db4-4168-4567-934d-5a95e0b1d06c","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.720129Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.720129Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "548" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:01 GMT + - Tue, 14 Oct 2025 09:00:15 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 20925fed-a1bc-454d-8765-11d8ecbd06d6 + - 44dad671-b249-46ba-99f7-87824c8d23fc status: 200 OK code: 200 - duration: 408.858125ms + duration: 112.239125ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/d43b1bd9-3d26-4ad4-a86e-571d09325eb6 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/73524db4-4168-4567-934d-5a95e0b1d06c method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 548 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.147929Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"d43b1bd9-3d26-4ad4-a86e-571d09325eb6","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.156743Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:01.156743Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:15.706646Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"73524db4-4168-4567-934d-5a95e0b1d06c","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.720129Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.720129Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "548" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:06 GMT + - Tue, 14 Oct 2025 09:00:17 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 890f8f4a-319e-4543-848d-fcf92ed6e9e0 + - a02c702a-6ce3-474f-a1d0-38b103417e1f status: 200 OK code: 200 - duration: 119.368459ms + duration: 142.132083ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/d43b1bd9-3d26-4ad4-a86e-571d09325eb6 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/73524db4-4168-4567-934d-5a95e0b1d06c method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:09 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - b6df18be-eeb0-4a7d-9bea-177c87d06300 + - c7892a17-6c93-4a22-9e0f-95bc6a59a669 status: 204 No Content code: 204 - duration: 121.675417ms + duration: 160.898625ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/d43b1bd9-3d26-4ad4-a86e-571d09325eb6 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/73524db4-4168-4567-934d-5a95e0b1d06c method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 588 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.147929Z","deletion_requested_at":"2025-10-14T04:45:08.981582Z","description":"Test key with deprecated usage field","id":"d43b1bd9-3d26-4ad4-a86e-571d09325eb6","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.156743Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T04:45:01.156743Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:15.706646Z","deletion_requested_at":"2025-10-14T09:00:18.058558Z","description":"Test key with deprecated usage field","id":"73524db4-4168-4567-934d-5a95e0b1d06c","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.720129Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T09:00:15.720129Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "588" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:09 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - e9154b88-d823-47ce-b73a-eb3e1c827408 + - 663fd9a8-c47b-433f-9773-f630f1b44d46 status: 200 OK code: 200 - duration: 79.909958ms + duration: 104.759625ms diff --git a/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml index c7b486028c..23f80d9155 100644 --- a/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 532 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:01.061211Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.815782Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "532" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:01 GMT + - Tue, 14 Oct 2025 09:00:16 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 6009099b-d432-4e56-942c-cb8b727451fe + - 6d722224-8252-42bf-b8a8-92bed5572159 status: 200 OK code: 200 - duration: 3.199010916s + duration: 1.847214375s - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 532 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:01.061211Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.815782Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "532" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:01 GMT + - Tue, 14 Oct 2025 09:00:17 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 80915e2e-2721-4d11-a98b-6d2af6051d08 + - ace107ec-96a8-48fb-82c9-d9b70e8790b8 status: 200 OK code: 200 - duration: 402.942208ms + duration: 147.08075ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 532 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:01.061211Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.815782Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "532" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:06 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 5c3e2012-178c-442a-b231-5846f18e38a6 + - ee2fdd44-8253-47c3-91a9-bf3150372842 status: 200 OK code: 200 - duration: 140.688375ms + duration: 81.54125ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca method: GET response: proto: HTTP/2.0 @@ -176,7 +176,7 @@ interactions: trailer: {} content_length: 532 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T04:45:01.061211Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.815782Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "532" @@ -185,9 +185,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:08 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -195,10 +195,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 93869e08-dc13-44a3-baa8-627e754492b9 + - 0111ec7d-25f5-443b-a3d2-8a7d8123c01d status: 200 OK code: 200 - duration: 193.920667ms + duration: 24.22575ms - id: 4 request: proto: HTTP/1.1 @@ -217,7 +217,7 @@ interactions: - application/json User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca method: PATCH response: proto: HTTP/2.0 @@ -227,7 +227,7 @@ interactions: trailer: {} content_length: 544 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key updated","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T04:45:09.643908Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key updated","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T09:00:19.245124Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "544" @@ -236,9 +236,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:09 GMT + - Tue, 14 Oct 2025 09:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -246,10 +246,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 6bf3c380-b8e3-4d39-86bc-1a89829c3d1b + - b9a485ba-d225-4629-bbc2-f52ce34c7448 status: 200 OK code: 200 - duration: 164.956417ms + duration: 120.332459ms - id: 5 request: proto: HTTP/1.1 @@ -266,7 +266,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca method: GET response: proto: HTTP/2.0 @@ -276,7 +276,7 @@ interactions: trailer: {} content_length: 544 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key updated","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T04:45:09.643908Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key updated","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T09:00:19.245124Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "544" @@ -285,9 +285,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:09 GMT + - Tue, 14 Oct 2025 09:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -295,10 +295,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 19a6bf1e-460e-437d-9297-974b6d1ef990 + - f52734fa-7a77-43a8-a586-d7ce7c092616 status: 200 OK code: 200 - duration: 121.989125ms + duration: 75.776417ms - id: 6 request: proto: HTTP/1.1 @@ -315,7 +315,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca method: GET response: proto: HTTP/2.0 @@ -325,7 +325,7 @@ interactions: trailer: {} content_length: 544 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":null,"description":"Test key updated","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T04:45:09.643908Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key updated","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T09:00:19.245124Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "544" @@ -334,9 +334,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:11 GMT + - Tue, 14 Oct 2025 09:00:20 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -344,10 +344,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 3ab290fa-b1d5-42eb-9d9f-0d397c412f82 + - e9e7af64-43c6-4f86-bf50-be8dea985edd status: 200 OK code: 200 - duration: 154.190542ms + duration: 22.158541ms - id: 7 request: proto: HTTP/1.1 @@ -364,7 +364,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca method: DELETE response: proto: HTTP/2.0 @@ -381,9 +381,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:13 GMT + - Tue, 14 Oct 2025 09:00:20 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -391,10 +391,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 5cb497d5-90da-4e11-8cb3-24110d8adc76 + - 62f35bc9-1847-4fb9-82e7-6e4e33583a0d status: 204 No Content code: 204 - duration: 152.792916ms + duration: 146.758542ms - id: 8 request: proto: HTTP/1.1 @@ -411,7 +411,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca method: GET response: proto: HTTP/2.0 @@ -421,7 +421,7 @@ interactions: trailer: {} content_length: 584 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:01.053597Z","deletion_requested_at":"2025-10-14T04:45:12.977946Z","description":"Test key updated","id":"ec4c6ff5-6cac-46bd-9f79-1f71aec60e4a","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:01.061211Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","updated"],"updated_at":"2025-10-14T04:45:09.643908Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":"2025-10-14T09:00:20.975343Z","description":"Test key updated","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","updated"],"updated_at":"2025-10-14T09:00:19.245124Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "584" @@ -430,9 +430,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:13 GMT + - Tue, 14 Oct 2025 09:00:21 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -440,7 +440,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - d1ec3523-361b-4e4c-8a4a-b3948264e8ba + - a456e7fd-8c67-43b6-87b3-3e4657368c67 status: 200 OK code: 200 - duration: 133.849833ms + duration: 106.084875ms diff --git a/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml index 2aa801d5ec..d2737d22ec 100644 --- a/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 555 uncompressed: false - body: '{"created_at":"2025-10-14T04:44:58.176871Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"c4568c5b-da01-4024-b02f-c435ed62fd75","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.450262Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.450262Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T09:00:16.305592Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"fa94aa66-4926-4247-a227-8f14adfe200a","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.696739Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.696739Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "555" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:00 GMT + - Tue, 14 Oct 2025 09:00:16 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 9638bf3c-8134-44ab-91df-4b8bbb68cef2 + - aa6eedeb-8148-4213-9527-265aad1f7757 status: 200 OK code: 200 - duration: 3.416856625s + duration: 1.731178958s - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4568c5b-da01-4024-b02f-c435ed62fd75 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/fa94aa66-4926-4247-a227-8f14adfe200a method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 555 uncompressed: false - body: '{"created_at":"2025-10-14T04:44:58.176871Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"c4568c5b-da01-4024-b02f-c435ed62fd75","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.450262Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.450262Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T09:00:16.305592Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"fa94aa66-4926-4247-a227-8f14adfe200a","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.696739Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.696739Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "555" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:00 GMT + - Tue, 14 Oct 2025 09:00:16 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 59df3544-7d83-44ca-b189-87cb26f65972 + - e16611c8-c0ef-4681-8030-10db1ee51918 status: 200 OK code: 200 - duration: 462.847375ms + duration: 132.830417ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4568c5b-da01-4024-b02f-c435ed62fd75 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/fa94aa66-4926-4247-a227-8f14adfe200a method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 555 uncompressed: false - body: '{"created_at":"2025-10-14T04:44:58.176871Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"c4568c5b-da01-4024-b02f-c435ed62fd75","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.450262Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.450262Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T09:00:16.305592Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"fa94aa66-4926-4247-a227-8f14adfe200a","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.696739Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.696739Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "555" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:05 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - f3aaf48e-83f9-4929-9cfd-9a1f0289c34b + - c89062b0-4bcf-4002-8a26-1950b9658935 status: 200 OK code: 200 - duration: 251.699333ms + duration: 121.456125ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4568c5b-da01-4024-b02f-c435ed62fd75 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/fa94aa66-4926-4247-a227-8f14adfe200a method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:07 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 3c4bb3b6-ded0-4f92-8ac7-c8517bfe9528 + - d53d6a3b-1eae-4384-be52-1f67d953f58b status: 204 No Content code: 204 - duration: 210.401625ms + duration: 142.927667ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4568c5b-da01-4024-b02f-c435ed62fd75 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/fa94aa66-4926-4247-a227-8f14adfe200a method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 595 uncompressed: false - body: '{"created_at":"2025-10-14T04:44:58.176871Z","deletion_requested_at":"2025-10-14T04:45:07.870061Z","description":"Test key with RSA-4096 algorithm","id":"c4568c5b-da01-4024-b02f-c435ed62fd75","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.450262Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T04:45:00.450262Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T09:00:16.305592Z","deletion_requested_at":"2025-10-14T09:00:18.918510Z","description":"Test key with RSA-4096 algorithm","id":"fa94aa66-4926-4247-a227-8f14adfe200a","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.696739Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T09:00:16.696739Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "595" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:08 GMT + - Tue, 14 Oct 2025 09:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - c2febf3b-f883-4a92-b602-3ef96ebf167e + - e33e9421-cc0d-4f2a-9c88-472b7dcc27f8 status: 200 OK code: 200 - duration: 204.266458ms + duration: 109.79575ms diff --git a/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml index 5c427033a2..cc5d334642 100644 --- a/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 612 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.861144Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"63c95638-b9a9-40b7-8848-d96c138f37d7","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.871663Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.871663Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:15.810396Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"09637bcf-ea14-46c8-acd6-c52e8074b1fc","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.822278Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.822278Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "612" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:00 GMT + - Tue, 14 Oct 2025 09:00:15 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - c5fdd3bb-b2d1-4650-b062-491e8a25d9a3 + - e4e109df-2981-4bcb-93fb-62584d0ac358 status: 200 OK code: 200 - duration: 4.091118959s + duration: 823.193833ms - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/63c95638-b9a9-40b7-8848-d96c138f37d7 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/09637bcf-ea14-46c8-acd6-c52e8074b1fc method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 612 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.861144Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"63c95638-b9a9-40b7-8848-d96c138f37d7","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.871663Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.871663Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:15.810396Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"09637bcf-ea14-46c8-acd6-c52e8074b1fc","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.822278Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.822278Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "612" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:01 GMT + - Tue, 14 Oct 2025 09:00:15 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - ee26c91e-26a2-41a4-a962-862a5986ddf9 + - 832089aa-31a2-453f-8485-c45a28f9dcf4 status: 200 OK code: 200 - duration: 517.108041ms + duration: 147.188291ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/63c95638-b9a9-40b7-8848-d96c138f37d7 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/09637bcf-ea14-46c8-acd6-c52e8074b1fc method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 612 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.861144Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"63c95638-b9a9-40b7-8848-d96c138f37d7","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.871663Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T04:45:00.871663Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:15.810396Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"09637bcf-ea14-46c8-acd6-c52e8074b1fc","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.822278Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.822278Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "612" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:06 GMT + - Tue, 14 Oct 2025 09:00:17 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 6277b162-f3d6-4635-b42b-a279ff3aec26 + - 78c79d25-2295-405a-9b86-e2190f4cdc90 status: 200 OK code: 200 - duration: 151.637584ms + duration: 167.643875ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/63c95638-b9a9-40b7-8848-d96c138f37d7 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/09637bcf-ea14-46c8-acd6-c52e8074b1fc method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:08 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 3a5c15a2-20b6-499f-9c30-050cee45fc90 + - e2875308-d4ef-4cd0-b75b-a36e09f25b8d status: 204 No Content code: 204 - duration: 197.024167ms + duration: 139.780125ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/63c95638-b9a9-40b7-8848-d96c138f37d7 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/09637bcf-ea14-46c8-acd6-c52e8074b1fc method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 652 uncompressed: false - body: '{"created_at":"2025-10-14T04:45:00.861144Z","deletion_requested_at":"2025-10-14T04:45:08.748650Z","description":"Test key with rotation policy","id":"63c95638-b9a9-40b7-8848-d96c138f37d7","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T04:45:00.871663Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T04:45:00.871663Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T09:00:15.810396Z","deletion_requested_at":"2025-10-14T09:00:18.148700Z","description":"Test key with rotation policy","id":"09637bcf-ea14-46c8-acd6-c52e8074b1fc","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.822278Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T09:00:15.822278Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "652" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 04:45:08 GMT + - Tue, 14 Oct 2025 09:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge03) + - Scaleway API Gateway (fr-par-2;edge01) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - e63946f1-4d3f-486f-a10b-2d4128c13dcf + - 795e00ad-cddf-4604-96c1-4e2d18569b4c status: 200 OK code: 200 - duration: 87.677708ms + duration: 121.802083ms From 209596d511d2e210d6591787450af87f5ba75642 Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Tue, 14 Oct 2025 15:12:34 +0200 Subject: [PATCH 08/10] feat: refactor Key Manager to use usage + algorithm (AWS-like approach) --- internal/services/keymanager/key_resource.go | 111 ++++---- .../services/keymanager/key_resource_test.go | 112 ++++---- .../key-manager-key-basic.cassette.yaml | 56 ++-- ...anager-key-default-algorithm.cassette.yaml | 56 ++-- ...key-manager-key-legacy-usage.cassette.yaml | 248 ------------------ .../key-manager-key-update.cassette.yaml | 104 ++++---- ...er-key-with-custom-algorithm.cassette.yaml | 56 ++-- ...ger-key-with-rotation-policy.cassette.yaml | 56 ++-- templates/resources/key_manager_key.md.tmpl | 114 +++----- 9 files changed, 298 insertions(+), 615 deletions(-) delete mode 100644 internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml diff --git a/internal/services/keymanager/key_resource.go b/internal/services/keymanager/key_resource.go index 19d0eec6b5..b2298a442e 100644 --- a/internal/services/keymanager/key_resource.go +++ b/internal/services/keymanager/key_resource.go @@ -2,8 +2,10 @@ package keymanager import ( "context" + "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" key_manager "github.com/scaleway/scaleway-sdk-go/api/key_manager/v1alpha1" @@ -11,7 +13,6 @@ import ( "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional" "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account" "github.com/scaleway/terraform-provider-scaleway/v2/internal/types" - "github.com/scaleway/terraform-provider-scaleway/v2/internal/verify" ) func ResourceKeyManagerKey() *schema.Resource { @@ -20,6 +21,9 @@ func ResourceKeyManagerKey() *schema.Resource { ReadContext: resourceKeyManagerKeyRead, UpdateContext: resourceKeyManagerKeyUpdate, DeleteContext: resourceKeyManagerKeyDelete, + CustomizeDiff: customdiff.All( + validateUsageAlgorithmCombination(), + ), Schema: map[string]*schema.Schema{ "name": { Type: schema.TypeString, @@ -30,56 +34,17 @@ func ResourceKeyManagerKey() *schema.Resource { "region": regional.Schema(), "usage": { Type: schema.TypeString, - Optional: true, - Computed: true, + Required: true, ValidateFunc: validation.StringInSlice([]string{ "symmetric_encryption", "asymmetric_encryption", "asymmetric_signing", }, false), - Deprecated: "Use usage_symmetric_encryption, usage_asymmetric_encryption, or usage_asymmetric_signing instead", - Description: "DEPRECATED: Use usage_symmetric_encryption, usage_asymmetric_encryption, or usage_asymmetric_signing instead. Key usage. Possible values: symmetric_encryption, asymmetric_encryption, asymmetric_signing.", - ExactlyOneOf: []string{ - "usage", - "usage_symmetric_encryption", - "usage_asymmetric_encryption", - "usage_asymmetric_signing", - }, - }, - "usage_symmetric_encryption": { - Type: schema.TypeString, - Optional: true, - ValidateDiagFunc: verify.ValidateEnum[key_manager.KeyAlgorithmSymmetricEncryption](), - Description: "Algorithm for symmetric encryption", - ExactlyOneOf: []string{ - "usage", - "usage_symmetric_encryption", - "usage_asymmetric_encryption", - "usage_asymmetric_signing", - }, - }, - "usage_asymmetric_encryption": { - Type: schema.TypeString, - Optional: true, - ValidateDiagFunc: verify.ValidateEnum[key_manager.KeyAlgorithmAsymmetricEncryption](), - Description: "Algorithm for asymmetric encryption", - ExactlyOneOf: []string{ - "usage", - "usage_symmetric_encryption", - "usage_asymmetric_encryption", - "usage_asymmetric_signing", - }, - }, - "usage_asymmetric_signing": { - Type: schema.TypeString, - Optional: true, - ValidateDiagFunc: verify.ValidateEnum[key_manager.KeyAlgorithmAsymmetricSigning](), - Description: "Algorithm for asymmetric signing", - ExactlyOneOf: []string{ - "usage", - "usage_symmetric_encryption", - "usage_asymmetric_encryption", - "usage_asymmetric_signing", - }, + Description: "Key usage type. Possible values: symmetric_encryption, asymmetric_encryption, asymmetric_signing.", }, + "algorithm": { + Type: schema.TypeString, + Required: true, + Description: "Algorithm to use for the key. The valid algorithms depend on the usage type.", + }, "description": { Type: schema.TypeString, Optional: true, @@ -161,7 +126,13 @@ func resourceKeyManagerKeyCreate(ctx context.Context, d *schema.ResourceData, m createReq.Origin = key_manager.KeyOrigin(v.(string)) } - createReq.Usage = ExpandKeyUsageFromFields(d) + usage := d.Get("usage").(string) + algorithm := d.Get("algorithm").(string) + keyUsage, err := expandUsageAlgorithm(usage, algorithm) + if err != nil { + return diag.FromErr(err) + } + createReq.Usage = keyUsage key, err := api.CreateKey(createReq) if err != nil { @@ -195,19 +166,7 @@ func resourceKeyManagerKeyRead(ctx context.Context, d *schema.ResourceData, m an algorithm := AlgorithmFromKeyUsage(key.Usage) _ = d.Set("usage", usageType) - - _, usesLegacy := d.GetOk("usage") - - if !usesLegacy { - switch usageType { - case usageSymmetricEncryption: - _ = d.Set("usage_symmetric_encryption", algorithm) - case usageAsymmetricEncryption: - _ = d.Set("usage_asymmetric_encryption", algorithm) - case usageAsymmetricSigning: - _ = d.Set("usage_asymmetric_signing", algorithm) - } - } + _ = d.Set("algorithm", algorithm) _ = d.Set("description", key.Description) _ = d.Set("tags", key.Tags) @@ -285,3 +244,33 @@ func resourceKeyManagerKeyDelete(ctx context.Context, d *schema.ResourceData, m return nil } + +func validateUsageAlgorithmCombination() schema.CustomizeDiffFunc { + return func(ctx context.Context, diff *schema.ResourceDiff, _ any) error { + // No strict validation here - we let the API validate the algorithm + // This prevents the provider from being a bottleneck when new algorithms are added + return nil + } +} + +func expandUsageAlgorithm(usage, algorithm string) (*key_manager.KeyUsage, error) { + switch usage { + case usageSymmetricEncryption: + // Accept any algorithm for symmetric encryption - let API validate + typedAlgo := key_manager.KeyAlgorithmSymmetricEncryption(algorithm) + return &key_manager.KeyUsage{SymmetricEncryption: &typedAlgo}, nil + + case usageAsymmetricEncryption: + // Accept any algorithm for asymmetric encryption - let API validate + typedAlgo := key_manager.KeyAlgorithmAsymmetricEncryption(algorithm) + return &key_manager.KeyUsage{AsymmetricEncryption: &typedAlgo}, nil + + case usageAsymmetricSigning: + // Accept any algorithm for asymmetric signing - let API validate + typedAlgo := key_manager.KeyAlgorithmAsymmetricSigning(algorithm) + return &key_manager.KeyUsage{AsymmetricSigning: &typedAlgo}, nil + + default: + return nil, fmt.Errorf("unknown usage type: %s", usage) + } +} diff --git a/internal/services/keymanager/key_resource_test.go b/internal/services/keymanager/key_resource_test.go index f33fefbdc3..534b324a0a 100644 --- a/internal/services/keymanager/key_resource_test.go +++ b/internal/services/keymanager/key_resource_test.go @@ -24,19 +24,20 @@ func TestAccKeyManagerKey_Basic(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "main" { - name = "tf-test-kms-key-unprotected-a" - region = "fr-par" - usage_symmetric_encryption = "aes_256_gcm" - description = "Test key" - tags = ["tf", "test"] - unprotected = true + name = "tf-test-kms-key-unprotected-a" + region = "fr-par" + usage = "symmetric_encryption" + algorithm = "aes_256_gcm" + description = "Test key" + tags = ["tf", "test"] + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "name", "tf-test-kms-key-unprotected-a"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "region", "fr-par"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage", "symmetric_encryption"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage_symmetric_encryption", "aes_256_gcm"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "algorithm", "aes_256_gcm"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "description", "Test key"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "tags.0", "tf"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "tags.1", "test"), @@ -58,36 +59,38 @@ func TestAccKeyManagerKey_Update(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "main" { - name = "tf-test-kms-key-update" - region = "fr-par" - usage_symmetric_encryption = "aes_256_gcm" - description = "Test key" - tags = ["tf", "test"] - unprotected = true + name = "tf-test-kms-key-update" + region = "fr-par" + usage = "symmetric_encryption" + algorithm = "aes_256_gcm" + description = "Test key" + tags = ["tf", "test"] + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "name", "tf-test-kms-key-update"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "description", "Test key"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage_symmetric_encryption", "aes_256_gcm"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "algorithm", "aes_256_gcm"), ), }, { Config: ` resource "scaleway_key_manager_key" "main" { - name = "tf-test-kms-key-updated" - region = "fr-par" - usage_symmetric_encryption = "aes_256_gcm" - description = "Test key updated" - tags = ["tf", "updated"] - unprotected = true + name = "tf-test-kms-key-updated" + region = "fr-par" + usage = "symmetric_encryption" + algorithm = "aes_256_gcm" + description = "Test key updated" + tags = ["tf", "updated"] + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "name", "tf-test-kms-key-updated"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "description", "Test key updated"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "tags.1", "updated"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage_symmetric_encryption", "aes_256_gcm"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "algorithm", "aes_256_gcm"), ), }, }, @@ -139,11 +142,12 @@ func TestAccKeyManagerKey_WithRotationPolicy(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "main" { - name = "tf-test-kms-key-rotation" - region = "fr-par" - usage_symmetric_encryption = "aes_256_gcm" - description = "Test key with rotation policy" - unprotected = true + name = "tf-test-kms-key-rotation" + region = "fr-par" + usage = "symmetric_encryption" + algorithm = "aes_256_gcm" + description = "Test key with rotation policy" + unprotected = true rotation_policy { rotation_period = "720h" @@ -154,7 +158,7 @@ func TestAccKeyManagerKey_WithRotationPolicy(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "name", "tf-test-kms-key-rotation"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage", "symmetric_encryption"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "usage_symmetric_encryption", "aes_256_gcm"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "algorithm", "aes_256_gcm"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "description", "Test key with rotation policy"), resource.TestCheckResourceAttr("scaleway_key_manager_key.main", "rotation_policy.0.rotation_period", "720h0m0s"), ), @@ -175,17 +179,18 @@ func TestAccKeyManagerKey_WithCustomAlgorithm(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "rsa_4096" { - name = "tf-test-kms-key-rsa4096" - region = "fr-par" - usage_asymmetric_encryption = "rsa_oaep_4096_sha256" - description = "Test key with RSA-4096 algorithm" - unprotected = true + name = "tf-test-kms-key-rsa4096" + region = "fr-par" + usage = "asymmetric_encryption" + algorithm = "rsa_oaep_4096_sha256" + description = "Test key with RSA-4096 algorithm" + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "name", "tf-test-kms-key-rsa4096"), resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "usage", "asymmetric_encryption"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "usage_asymmetric_encryption", "rsa_oaep_4096_sha256"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "algorithm", "rsa_oaep_4096_sha256"), resource.TestCheckResourceAttr("scaleway_key_manager_key.rsa_4096", "description", "Test key with RSA-4096 algorithm"), ), }, @@ -205,17 +210,18 @@ func TestAccKeyManagerKey_DefaultAlgorithm(t *testing.T) { { Config: ` resource "scaleway_key_manager_key" "default_alg" { - name = "tf-test-kms-key-default-alg" - region = "fr-par" - usage_asymmetric_encryption = "rsa_oaep_3072_sha256" - description = "Test key with RSA-3072 algorithm" - unprotected = true + name = "tf-test-kms-key-default-alg" + region = "fr-par" + usage = "asymmetric_encryption" + algorithm = "rsa_oaep_3072_sha256" + description = "Test key with RSA-3072 algorithm" + unprotected = true } `, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "name", "tf-test-kms-key-default-alg"), resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "usage", "asymmetric_encryption"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "usage_asymmetric_encryption", "rsa_oaep_3072_sha256"), + resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "algorithm", "rsa_oaep_3072_sha256"), resource.TestCheckResourceAttr("scaleway_key_manager_key.default_alg", "description", "Test key with RSA-3072 algorithm"), ), }, @@ -223,31 +229,3 @@ func TestAccKeyManagerKey_DefaultAlgorithm(t *testing.T) { }) } -func TestAccKeyManagerKey_LegacyUsage(t *testing.T) { - tt := acctest.NewTestTools(t) - defer tt.Cleanup() - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ProtoV6ProviderFactories: tt.ProviderFactories, - CheckDestroy: IsKeyManagerKeyDestroyed(tt), - Steps: []resource.TestStep{ - { - Config: ` - resource "scaleway_key_manager_key" "legacy" { - name = "tf-test-kms-key-legacy" - region = "fr-par" - usage = "symmetric_encryption" - description = "Test key with deprecated usage field" - unprotected = true - } - `, - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("scaleway_key_manager_key.legacy", "name", "tf-test-kms-key-legacy"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.legacy", "usage", "symmetric_encryption"), - resource.TestCheckResourceAttr("scaleway_key_manager_key.legacy", "description", "Test key with deprecated usage field"), - ), - }, - }, - }) -} diff --git a/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml index 99c6d0d397..14adb46df4 100644 --- a/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-basic.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 539 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.916318Z","deletion_requested_at":null,"description":"Test key","id":"5223fe51-8439-48df-bd65-5aa810acf37b","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.926894Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.926894Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:19.553670Z","deletion_requested_at":null,"description":"Test key","id":"62575402-a487-4f50-bba8-48892d00711d","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.564741Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T13:00:19.564741Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "539" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:16 GMT + - Tue, 14 Oct 2025 13:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 879bf0ec-c7b5-4432-b7bd-22de327bba3a + - 99508e66-9577-4035-bb44-d5ce99b34e26 status: 200 OK code: 200 - duration: 2.032888917s + duration: 1.911859125s - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/5223fe51-8439-48df-bd65-5aa810acf37b + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/62575402-a487-4f50-bba8-48892d00711d method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 539 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.916318Z","deletion_requested_at":null,"description":"Test key","id":"5223fe51-8439-48df-bd65-5aa810acf37b","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.926894Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.926894Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:19.553670Z","deletion_requested_at":null,"description":"Test key","id":"62575402-a487-4f50-bba8-48892d00711d","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.564741Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T13:00:19.564741Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "539" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:17 GMT + - Tue, 14 Oct 2025 13:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 79e663d8-3439-4c84-a5c4-a1cbb7fb93f7 + - 549e2825-5777-4941-b982-bc5fdc92f7c2 status: 200 OK code: 200 - duration: 137.603541ms + duration: 275.353541ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/5223fe51-8439-48df-bd65-5aa810acf37b + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/62575402-a487-4f50-bba8-48892d00711d method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 539 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.916318Z","deletion_requested_at":null,"description":"Test key","id":"5223fe51-8439-48df-bd65-5aa810acf37b","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.926894Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.926894Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:19.553670Z","deletion_requested_at":null,"description":"Test key","id":"62575402-a487-4f50-bba8-48892d00711d","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.564741Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T13:00:19.564741Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "539" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:18 GMT + - Tue, 14 Oct 2025 13:00:22 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 17e80009-011e-4f56-aa3c-0c25e1d09c0e + - 80b64c42-f7d0-447b-80bb-1b777a39db8b status: 200 OK code: 200 - duration: 97.353041ms + duration: 193.933792ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/5223fe51-8439-48df-bd65-5aa810acf37b + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/62575402-a487-4f50-bba8-48892d00711d method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:19 GMT + - Tue, 14 Oct 2025 13:00:25 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 7aafefe1-78a2-4db4-a063-e365f0e1b96a + - 0cc83217-66ff-46ec-9762-82ee36b2309c status: 204 No Content code: 204 - duration: 131.248792ms + duration: 189.655583ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/5223fe51-8439-48df-bd65-5aa810acf37b + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/62575402-a487-4f50-bba8-48892d00711d method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 579 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.916318Z","deletion_requested_at":"2025-10-14T09:00:19.050508Z","description":"Test key","id":"5223fe51-8439-48df-bd65-5aa810acf37b","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.926894Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.926894Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:19.553670Z","deletion_requested_at":"2025-10-14T13:00:25.124512Z","description":"Test key","id":"62575402-a487-4f50-bba8-48892d00711d","locked":false,"name":"tf-test-kms-key-unprotected-a","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.564741Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","test"],"updated_at":"2025-10-14T13:00:19.564741Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "579" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:19 GMT + - Tue, 14 Oct 2025 13:00:25 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - ef5b7c15-9b65-48ae-8eb1-401052680eee + - 9fe20c3d-d857-4870-92f5-4ab3f00fad0e status: 200 OK code: 200 - duration: 119.225042ms + duration: 112.708292ms diff --git a/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml index fcc26a555b..e185bf19bc 100644 --- a/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-default-algorithm.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 559 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.919093Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"4846608d-7813-4099-b03f-f733f9277c98","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.204244Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.204244Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T13:00:19.132119Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"a069bc1e-bbf0-4f3a-8519-8c4f840e970f","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.463354Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T13:00:19.463354Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - "559" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:16 GMT + - Tue, 14 Oct 2025 13:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 64af7117-68a9-4da2-b56b-f8312a5dbada + - a1c7fac6-1f42-4346-912b-03f54b90fcf6 status: 200 OK code: 200 - duration: 1.226075875s + duration: 1.797741375s - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/4846608d-7813-4099-b03f-f733f9277c98 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/a069bc1e-bbf0-4f3a-8519-8c4f840e970f method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 559 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.919093Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"4846608d-7813-4099-b03f-f733f9277c98","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.204244Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.204244Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T13:00:19.132119Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"a069bc1e-bbf0-4f3a-8519-8c4f840e970f","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.463354Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T13:00:19.463354Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - "559" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:16 GMT + - Tue, 14 Oct 2025 13:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 93e2e2ee-2739-4d9b-a855-d669352ac5e8 + - 7da6daff-bf3d-42b0-adcf-0b77ee4375fd status: 200 OK code: 200 - duration: 199.366333ms + duration: 275.825209ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/4846608d-7813-4099-b03f-f733f9277c98 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/a069bc1e-bbf0-4f3a-8519-8c4f840e970f method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 559 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.919093Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"4846608d-7813-4099-b03f-f733f9277c98","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.204244Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.204244Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T13:00:19.132119Z","deletion_requested_at":null,"description":"Test key with RSA-3072 algorithm","id":"a069bc1e-bbf0-4f3a-8519-8c4f840e970f","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.463354Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T13:00:19.463354Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - "559" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:17 GMT + - Tue, 14 Oct 2025 13:00:23 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 64570d98-ea93-4802-99f5-9400e7c96764 + - 62657e0d-9cfd-4b01-928a-1e2a4b182652 status: 200 OK code: 200 - duration: 140.180833ms + duration: 226.063ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/4846608d-7813-4099-b03f-f733f9277c98 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/a069bc1e-bbf0-4f3a-8519-8c4f840e970f method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:18 GMT + - Tue, 14 Oct 2025 13:00:25 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 992efc3b-115e-4fba-b214-5ec901b2ebc6 + - bab81a1f-b6be-4d9b-b515-cc0d1efb20cf status: 204 No Content code: 204 - duration: 114.680292ms + duration: 195.826166ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/4846608d-7813-4099-b03f-f733f9277c98 + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/a069bc1e-bbf0-4f3a-8519-8c4f840e970f method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 599 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.919093Z","deletion_requested_at":"2025-10-14T09:00:18.388027Z","description":"Test key with RSA-3072 algorithm","id":"4846608d-7813-4099-b03f-f733f9277c98","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.204244Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T09:00:16.204244Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' + body: '{"created_at":"2025-10-14T13:00:19.132119Z","deletion_requested_at":"2025-10-14T13:00:25.193839Z","description":"Test key with RSA-3072 algorithm","id":"a069bc1e-bbf0-4f3a-8519-8c4f840e970f","locked":false,"name":"tf-test-kms-key-default-alg","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.463354Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T13:00:19.463354Z","usage":{"asymmetric_encryption":"rsa_oaep_3072_sha256"}}' headers: Content-Length: - "599" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:18 GMT + - Tue, 14 Oct 2025 13:00:25 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - aa242c78-b86b-43dd-af89-5825d74cbf3a + - 6e4899e1-86a5-4f60-9f25-aec7f3e02d81 status: 200 OK code: 200 - duration: 100.585958ms + duration: 202.117958ms diff --git a/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml deleted file mode 100644 index 387ee44928..0000000000 --- a/internal/services/keymanager/testdata/key-manager-key-legacy-usage.cassette.yaml +++ /dev/null @@ -1,248 +0,0 @@ ---- -version: 2 -interactions: - - id: 0 - request: - proto: HTTP/1.1 - proto_major: 1 - proto_minor: 1 - content_length: 242 - transfer_encoding: [] - trailer: {} - host: api.scaleway.com - remote_addr: "" - request_uri: "" - body: '{"project_id":"105bdce1-64c0-48ab-899d-868455867ecf","name":"tf-test-kms-key-legacy","usage":{"symmetric_encryption":"aes_256_gcm"},"description":"Test key with deprecated usage field","tags":null,"unprotected":true,"origin":"unknown_origin"}' - form: {} - headers: - Content-Type: - - application/json - User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys - method: POST - response: - proto: HTTP/2.0 - proto_major: 2 - proto_minor: 0 - transfer_encoding: [] - trailer: {} - content_length: 548 - uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.706646Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"73524db4-4168-4567-934d-5a95e0b1d06c","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.720129Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.720129Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' - headers: - Content-Length: - - "548" - Content-Security-Policy: - - default-src 'none'; frame-ancestors 'none' - Content-Type: - - application/json - Date: - - Tue, 14 Oct 2025 09:00:15 GMT - Server: - - Scaleway API Gateway (fr-par-2;edge01) - Strict-Transport-Security: - - max-age=63072000 - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - DENY - X-Request-Id: - - 6288e35a-42a2-48cf-962b-30614e3e1081 - status: 200 OK - code: 200 - duration: 825.862125ms - - id: 1 - request: - proto: HTTP/1.1 - proto_major: 1 - proto_minor: 1 - content_length: 0 - transfer_encoding: [] - trailer: {} - host: api.scaleway.com - remote_addr: "" - request_uri: "" - body: "" - form: {} - headers: - User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/73524db4-4168-4567-934d-5a95e0b1d06c - method: GET - response: - proto: HTTP/2.0 - proto_major: 2 - proto_minor: 0 - transfer_encoding: [] - trailer: {} - content_length: 548 - uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.706646Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"73524db4-4168-4567-934d-5a95e0b1d06c","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.720129Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.720129Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' - headers: - Content-Length: - - "548" - Content-Security-Policy: - - default-src 'none'; frame-ancestors 'none' - Content-Type: - - application/json - Date: - - Tue, 14 Oct 2025 09:00:15 GMT - Server: - - Scaleway API Gateway (fr-par-2;edge01) - Strict-Transport-Security: - - max-age=63072000 - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - DENY - X-Request-Id: - - 44dad671-b249-46ba-99f7-87824c8d23fc - status: 200 OK - code: 200 - duration: 112.239125ms - - id: 2 - request: - proto: HTTP/1.1 - proto_major: 1 - proto_minor: 1 - content_length: 0 - transfer_encoding: [] - trailer: {} - host: api.scaleway.com - remote_addr: "" - request_uri: "" - body: "" - form: {} - headers: - User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/73524db4-4168-4567-934d-5a95e0b1d06c - method: GET - response: - proto: HTTP/2.0 - proto_major: 2 - proto_minor: 0 - transfer_encoding: [] - trailer: {} - content_length: 548 - uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.706646Z","deletion_requested_at":null,"description":"Test key with deprecated usage field","id":"73524db4-4168-4567-934d-5a95e0b1d06c","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.720129Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.720129Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' - headers: - Content-Length: - - "548" - Content-Security-Policy: - - default-src 'none'; frame-ancestors 'none' - Content-Type: - - application/json - Date: - - Tue, 14 Oct 2025 09:00:17 GMT - Server: - - Scaleway API Gateway (fr-par-2;edge01) - Strict-Transport-Security: - - max-age=63072000 - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - DENY - X-Request-Id: - - a02c702a-6ce3-474f-a1d0-38b103417e1f - status: 200 OK - code: 200 - duration: 142.132083ms - - id: 3 - request: - proto: HTTP/1.1 - proto_major: 1 - proto_minor: 1 - content_length: 0 - transfer_encoding: [] - trailer: {} - host: api.scaleway.com - remote_addr: "" - request_uri: "" - body: "" - form: {} - headers: - User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/73524db4-4168-4567-934d-5a95e0b1d06c - method: DELETE - response: - proto: HTTP/2.0 - proto_major: 2 - proto_minor: 0 - transfer_encoding: [] - trailer: {} - content_length: 0 - uncompressed: false - body: "" - headers: - Content-Security-Policy: - - default-src 'none'; frame-ancestors 'none' - Content-Type: - - application/json - Date: - - Tue, 14 Oct 2025 09:00:18 GMT - Server: - - Scaleway API Gateway (fr-par-2;edge01) - Strict-Transport-Security: - - max-age=63072000 - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - DENY - X-Request-Id: - - c7892a17-6c93-4a22-9e0f-95bc6a59a669 - status: 204 No Content - code: 204 - duration: 160.898625ms - - id: 4 - request: - proto: HTTP/1.1 - proto_major: 1 - proto_minor: 1 - content_length: 0 - transfer_encoding: [] - trailer: {} - host: api.scaleway.com - remote_addr: "" - request_uri: "" - body: "" - form: {} - headers: - User-Agent: - - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/73524db4-4168-4567-934d-5a95e0b1d06c - method: GET - response: - proto: HTTP/2.0 - proto_major: 2 - proto_minor: 0 - transfer_encoding: [] - trailer: {} - content_length: 588 - uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.706646Z","deletion_requested_at":"2025-10-14T09:00:18.058558Z","description":"Test key with deprecated usage field","id":"73524db4-4168-4567-934d-5a95e0b1d06c","locked":false,"name":"tf-test-kms-key-legacy","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.720129Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T09:00:15.720129Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' - headers: - Content-Length: - - "588" - Content-Security-Policy: - - default-src 'none'; frame-ancestors 'none' - Content-Type: - - application/json - Date: - - Tue, 14 Oct 2025 09:00:18 GMT - Server: - - Scaleway API Gateway (fr-par-2;edge01) - Strict-Transport-Security: - - max-age=63072000 - X-Content-Type-Options: - - nosniff - X-Frame-Options: - - DENY - X-Request-Id: - - 663fd9a8-c47b-433f-9773-f630f1b44d46 - status: 200 OK - code: 200 - duration: 104.759625ms diff --git a/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml index 23f80d9155..5b6a868611 100644 --- a/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-update.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 532 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.815782Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:18.401165Z","deletion_requested_at":null,"description":"Test key","id":"abf58253-debe-4f2b-b63c-b37ed7abae6d","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:18.408485Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T13:00:18.408485Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "532" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:16 GMT + - Tue, 14 Oct 2025 13:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 6d722224-8252-42bf-b8a8-92bed5572159 + - 34db048a-3f70-409c-a46d-96f524b1400b status: 200 OK code: 200 - duration: 1.847214375s + duration: 633.294875ms - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/abf58253-debe-4f2b-b63c-b37ed7abae6d method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 532 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.815782Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:18.401165Z","deletion_requested_at":null,"description":"Test key","id":"abf58253-debe-4f2b-b63c-b37ed7abae6d","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:18.408485Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T13:00:18.408485Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "532" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:17 GMT + - Tue, 14 Oct 2025 13:00:18 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - ace107ec-96a8-48fb-82c9-d9b70e8790b8 + - 9d7bc38a-b634-488e-9487-f5e4e534d0b3 status: 200 OK code: 200 - duration: 147.08075ms + duration: 97.712583ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/abf58253-debe-4f2b-b63c-b37ed7abae6d method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 532 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.815782Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:18.401165Z","deletion_requested_at":null,"description":"Test key","id":"abf58253-debe-4f2b-b63c-b37ed7abae6d","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:18.408485Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T13:00:18.408485Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "532" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:18 GMT + - Tue, 14 Oct 2025 13:00:20 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - ee2fdd44-8253-47c3-91a9-bf3150372842 + - 43a8819d-02c8-4688-8ffe-afa8e8b1b8f1 status: 200 OK code: 200 - duration: 81.54125ms + duration: 209.542208ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/abf58253-debe-4f2b-b63c-b37ed7abae6d method: GET response: proto: HTTP/2.0 @@ -176,7 +176,7 @@ interactions: trailer: {} content_length: 532 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T09:00:16.815782Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:18.401165Z","deletion_requested_at":null,"description":"Test key","id":"abf58253-debe-4f2b-b63c-b37ed7abae6d","locked":false,"name":"tf-test-kms-key-update","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:18.408485Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","test"],"updated_at":"2025-10-14T13:00:18.408485Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "532" @@ -185,9 +185,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:18 GMT + - Tue, 14 Oct 2025 13:00:22 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -195,10 +195,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 0111ec7d-25f5-443b-a3d2-8a7d8123c01d + - 65861e0e-07ef-4cc3-80e1-22e030c7f6c3 status: 200 OK code: 200 - duration: 24.22575ms + duration: 92.062792ms - id: 4 request: proto: HTTP/1.1 @@ -217,7 +217,7 @@ interactions: - application/json User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/abf58253-debe-4f2b-b63c-b37ed7abae6d method: PATCH response: proto: HTTP/2.0 @@ -227,7 +227,7 @@ interactions: trailer: {} content_length: 544 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key updated","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T09:00:19.245124Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:18.401165Z","deletion_requested_at":null,"description":"Test key updated","id":"abf58253-debe-4f2b-b63c-b37ed7abae6d","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:18.408485Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T13:00:23.731667Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "544" @@ -236,9 +236,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:19 GMT + - Tue, 14 Oct 2025 13:00:23 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -246,10 +246,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - b9a485ba-d225-4629-bbc2-f52ce34c7448 + - a1f11ad1-d0af-497f-ae2e-446f5440f5ef status: 200 OK code: 200 - duration: 120.332459ms + duration: 324.69975ms - id: 5 request: proto: HTTP/1.1 @@ -266,7 +266,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/abf58253-debe-4f2b-b63c-b37ed7abae6d method: GET response: proto: HTTP/2.0 @@ -276,7 +276,7 @@ interactions: trailer: {} content_length: 544 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key updated","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T09:00:19.245124Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:18.401165Z","deletion_requested_at":null,"description":"Test key updated","id":"abf58253-debe-4f2b-b63c-b37ed7abae6d","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:18.408485Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T13:00:23.731667Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "544" @@ -285,9 +285,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:19 GMT + - Tue, 14 Oct 2025 13:00:23 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -295,10 +295,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - f52734fa-7a77-43a8-a586-d7ce7c092616 + - 4ea8bd57-6d99-4b3b-ab6a-0c5c34fac3dd status: 200 OK code: 200 - duration: 75.776417ms + duration: 91.847875ms - id: 6 request: proto: HTTP/1.1 @@ -315,7 +315,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/abf58253-debe-4f2b-b63c-b37ed7abae6d method: GET response: proto: HTTP/2.0 @@ -325,7 +325,7 @@ interactions: trailer: {} content_length: 544 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":null,"description":"Test key updated","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T09:00:19.245124Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:18.401165Z","deletion_requested_at":null,"description":"Test key updated","id":"abf58253-debe-4f2b-b63c-b37ed7abae6d","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:18.408485Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":["tf","updated"],"updated_at":"2025-10-14T13:00:23.731667Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "544" @@ -334,9 +334,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:20 GMT + - Tue, 14 Oct 2025 13:00:26 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -344,10 +344,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - e9e7af64-43c6-4f86-bf50-be8dea985edd + - 26a0d8bd-9d9b-4bb6-946a-ced21a658d17 status: 200 OK code: 200 - duration: 22.158541ms + duration: 90.273125ms - id: 7 request: proto: HTTP/1.1 @@ -364,7 +364,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/abf58253-debe-4f2b-b63c-b37ed7abae6d method: DELETE response: proto: HTTP/2.0 @@ -381,9 +381,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:20 GMT + - Tue, 14 Oct 2025 13:00:28 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -391,10 +391,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 62f35bc9-1847-4fb9-82e7-6e4e33583a0d + - fd6e37b4-2da2-4d37-bc73-853d193ec4e6 status: 204 No Content code: 204 - duration: 146.758542ms + duration: 162.973125ms - id: 8 request: proto: HTTP/1.1 @@ -411,7 +411,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/abf58253-debe-4f2b-b63c-b37ed7abae6d method: GET response: proto: HTTP/2.0 @@ -421,7 +421,7 @@ interactions: trailer: {} content_length: 584 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.801345Z","deletion_requested_at":"2025-10-14T09:00:20.975343Z","description":"Test key updated","id":"c4357bcd-5ca5-4d0c-8736-b5df0e9fb0ca","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.815782Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","updated"],"updated_at":"2025-10-14T09:00:19.245124Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:18.401165Z","deletion_requested_at":"2025-10-14T13:00:28.082671Z","description":"Test key updated","id":"abf58253-debe-4f2b-b63c-b37ed7abae6d","locked":false,"name":"tf-test-kms-key-updated","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:18.408485Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":["tf","updated"],"updated_at":"2025-10-14T13:00:23.731667Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "584" @@ -430,9 +430,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:21 GMT + - Tue, 14 Oct 2025 13:00:28 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -440,7 +440,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - a456e7fd-8c67-43b6-87b3-3e4657368c67 + - 7a39a7de-2f74-4f05-aab5-d344016dfdc5 status: 200 OK code: 200 - duration: 106.084875ms + duration: 240.7745ms diff --git a/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml index d2737d22ec..6caf9d38cf 100644 --- a/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-with-custom-algorithm.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 555 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.305592Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"fa94aa66-4926-4247-a227-8f14adfe200a","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.696739Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.696739Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T13:00:18.493346Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"328290aa-9f95-4b76-846e-9f6e1f815582","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.048343Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T13:00:19.048343Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "555" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:16 GMT + - Tue, 14 Oct 2025 13:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - aa6eedeb-8148-4213-9527-265aad1f7757 + - 6cc77f5f-f9f3-44f2-8f1b-f7e80f15c621 status: 200 OK code: 200 - duration: 1.731178958s + duration: 1.397133333s - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/fa94aa66-4926-4247-a227-8f14adfe200a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/328290aa-9f95-4b76-846e-9f6e1f815582 method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 555 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.305592Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"fa94aa66-4926-4247-a227-8f14adfe200a","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.696739Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.696739Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T13:00:18.493346Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"328290aa-9f95-4b76-846e-9f6e1f815582","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.048343Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T13:00:19.048343Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "555" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:16 GMT + - Tue, 14 Oct 2025 13:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - e16611c8-c0ef-4681-8030-10db1ee51918 + - 3cb370c6-a15d-40d5-8d58-fe6b62daa6fe status: 200 OK code: 200 - duration: 132.830417ms + duration: 341.261333ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/fa94aa66-4926-4247-a227-8f14adfe200a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/328290aa-9f95-4b76-846e-9f6e1f815582 method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 555 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.305592Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"fa94aa66-4926-4247-a227-8f14adfe200a","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.696739Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:16.696739Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T13:00:18.493346Z","deletion_requested_at":null,"description":"Test key with RSA-4096 algorithm","id":"328290aa-9f95-4b76-846e-9f6e1f815582","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.048343Z","rotation_count":1,"rotation_policy":null,"state":"enabled","tags":[],"updated_at":"2025-10-14T13:00:19.048343Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "555" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:18 GMT + - Tue, 14 Oct 2025 13:00:22 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - c89062b0-4bcf-4002-8a26-1950b9658935 + - 10ea07a2-f785-437f-a566-aaad25f9bae7 status: 200 OK code: 200 - duration: 121.456125ms + duration: 174.866792ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/fa94aa66-4926-4247-a227-8f14adfe200a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/328290aa-9f95-4b76-846e-9f6e1f815582 method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:18 GMT + - Tue, 14 Oct 2025 13:00:24 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - d53d6a3b-1eae-4384-be52-1f67d953f58b + - 254b1df7-04e5-4f29-af6b-c15ad08a2f90 status: 204 No Content code: 204 - duration: 142.927667ms + duration: 189.858ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/fa94aa66-4926-4247-a227-8f14adfe200a + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/328290aa-9f95-4b76-846e-9f6e1f815582 method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 595 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:16.305592Z","deletion_requested_at":"2025-10-14T09:00:18.918510Z","description":"Test key with RSA-4096 algorithm","id":"fa94aa66-4926-4247-a227-8f14adfe200a","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:16.696739Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T09:00:16.696739Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' + body: '{"created_at":"2025-10-14T13:00:18.493346Z","deletion_requested_at":"2025-10-14T13:00:24.754811Z","description":"Test key with RSA-4096 algorithm","id":"328290aa-9f95-4b76-846e-9f6e1f815582","locked":false,"name":"tf-test-kms-key-rsa4096","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.048343Z","rotation_count":1,"rotation_policy":null,"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T13:00:19.048343Z","usage":{"asymmetric_encryption":"rsa_oaep_4096_sha256"}}' headers: Content-Length: - "595" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:19 GMT + - Tue, 14 Oct 2025 13:00:24 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - e33e9421-cc0d-4f2a-9c88-472b7dcc27f8 + - 3e62f995-b994-4173-bd20-36fc163410fc status: 200 OK code: 200 - duration: 109.79575ms + duration: 203.319708ms diff --git a/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml b/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml index cc5d334642..c6364a4d34 100644 --- a/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml +++ b/internal/services/keymanager/testdata/key-manager-key-with-rotation-policy.cassette.yaml @@ -29,7 +29,7 @@ interactions: trailer: {} content_length: 612 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.810396Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"09637bcf-ea14-46c8-acd6-c52e8074b1fc","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.822278Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.822278Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:19.658034Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"ab923517-f12f-47ff-b6e2-fbe796255f36","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.663181Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T13:00:19.663181Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "612" @@ -38,9 +38,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:15 GMT + - Tue, 14 Oct 2025 13:00:19 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -48,10 +48,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - e4e109df-2981-4bcb-93fb-62584d0ac358 + - 37f26934-2e9c-4eec-b0e3-b2d4793ac5c7 status: 200 OK code: 200 - duration: 823.193833ms + duration: 1.663990375s - id: 1 request: proto: HTTP/1.1 @@ -68,7 +68,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/09637bcf-ea14-46c8-acd6-c52e8074b1fc + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ab923517-f12f-47ff-b6e2-fbe796255f36 method: GET response: proto: HTTP/2.0 @@ -78,7 +78,7 @@ interactions: trailer: {} content_length: 612 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.810396Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"09637bcf-ea14-46c8-acd6-c52e8074b1fc","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.822278Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.822278Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:19.658034Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"ab923517-f12f-47ff-b6e2-fbe796255f36","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.663181Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T13:00:19.663181Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "612" @@ -87,9 +87,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:15 GMT + - Tue, 14 Oct 2025 13:00:20 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -97,10 +97,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 832089aa-31a2-453f-8485-c45a28f9dcf4 + - 60779012-0d6c-4531-aca0-734c50d89dce status: 200 OK code: 200 - duration: 147.188291ms + duration: 190.039375ms - id: 2 request: proto: HTTP/1.1 @@ -117,7 +117,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/09637bcf-ea14-46c8-acd6-c52e8074b1fc + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ab923517-f12f-47ff-b6e2-fbe796255f36 method: GET response: proto: HTTP/2.0 @@ -127,7 +127,7 @@ interactions: trailer: {} content_length: 612 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.810396Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"09637bcf-ea14-46c8-acd6-c52e8074b1fc","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.822278Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T09:00:15.822278Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:19.658034Z","deletion_requested_at":null,"description":"Test key with rotation policy","id":"ab923517-f12f-47ff-b6e2-fbe796255f36","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.663181Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"enabled","tags":[],"updated_at":"2025-10-14T13:00:19.663181Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "612" @@ -136,9 +136,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:17 GMT + - Tue, 14 Oct 2025 13:00:23 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -146,10 +146,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 78c79d25-2295-405a-9b86-e2190f4cdc90 + - 78a11c7e-5b7f-4fb9-986a-748eb50f5734 status: 200 OK code: 200 - duration: 167.643875ms + duration: 194.284916ms - id: 3 request: proto: HTTP/1.1 @@ -166,7 +166,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/09637bcf-ea14-46c8-acd6-c52e8074b1fc + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ab923517-f12f-47ff-b6e2-fbe796255f36 method: DELETE response: proto: HTTP/2.0 @@ -183,9 +183,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:18 GMT + - Tue, 14 Oct 2025 13:00:25 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -193,10 +193,10 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - e2875308-d4ef-4cd0-b75b-a36e09f25b8d + - b70a8b4d-0c96-4d21-bf65-611034c85349 status: 204 No Content code: 204 - duration: 139.780125ms + duration: 197.276458ms - id: 4 request: proto: HTTP/1.1 @@ -213,7 +213,7 @@ interactions: headers: User-Agent: - scaleway-sdk-go/v1.0.0-beta.7+dev (go1.25.0; darwin; amd64) terraform-provider/develop terraform/terraform-tests - url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/09637bcf-ea14-46c8-acd6-c52e8074b1fc + url: https://api.scaleway.com/key-manager/v1alpha1/regions/fr-par/keys/ab923517-f12f-47ff-b6e2-fbe796255f36 method: GET response: proto: HTTP/2.0 @@ -223,7 +223,7 @@ interactions: trailer: {} content_length: 652 uncompressed: false - body: '{"created_at":"2025-10-14T09:00:15.810396Z","deletion_requested_at":"2025-10-14T09:00:18.148700Z","description":"Test key with rotation policy","id":"09637bcf-ea14-46c8-acd6-c52e8074b1fc","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T09:00:15.822278Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T09:00:15.822278Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' + body: '{"created_at":"2025-10-14T13:00:19.658034Z","deletion_requested_at":"2025-10-14T13:00:25.470543Z","description":"Test key with rotation policy","id":"ab923517-f12f-47ff-b6e2-fbe796255f36","locked":false,"name":"tf-test-kms-key-rotation","origin":"scaleway_kms","project_id":"105bdce1-64c0-48ab-899d-868455867ecf","protected":false,"region":"fr-par","rotated_at":"2025-10-14T13:00:19.663181Z","rotation_count":1,"rotation_policy":{"next_rotation_at":"2026-01-01T00:00:00Z","rotation_period":"2592000s"},"state":"scheduled_for_deletion","tags":[],"updated_at":"2025-10-14T13:00:19.663181Z","usage":{"symmetric_encryption":"aes_256_gcm"}}' headers: Content-Length: - "652" @@ -232,9 +232,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 14 Oct 2025 09:00:18 GMT + - Tue, 14 Oct 2025 13:00:25 GMT Server: - - Scaleway API Gateway (fr-par-2;edge01) + - Scaleway API Gateway (fr-par-2;edge02) Strict-Transport-Security: - max-age=63072000 X-Content-Type-Options: @@ -242,7 +242,7 @@ interactions: X-Frame-Options: - DENY X-Request-Id: - - 795e00ad-cddf-4604-96c1-4e2d18569b4c + - e9883e1d-f96d-4815-ad7a-cfcdee945926 status: 200 OK code: 200 - duration: 121.802083ms + duration: 134.127708ms diff --git a/templates/resources/key_manager_key.md.tmpl b/templates/resources/key_manager_key.md.tmpl index b441d6e8f9..405c7d5a4e 100644 --- a/templates/resources/key_manager_key.md.tmpl +++ b/templates/resources/key_manager_key.md.tmpl @@ -13,13 +13,14 @@ This resource allows you to create and manage cryptographic keys in Scaleway Key ```terraform resource "scaleway_key_manager_key" "symmetric" { - name = "my-kms-key" - region = "fr-par" - project_id = "your-project-id" # optional, will use provider default if omitted - usage_symmetric_encryption = "aes_256_gcm" - description = "Key for encrypting secrets" - tags = ["env:prod", "kms"] - unprotected = true + name = "my-kms-key" + region = "fr-par" + project_id = "your-project-id" # optional, will use provider default if omitted + usage = "symmetric_encryption" + algorithm = "aes_256_gcm" + description = "Key for encrypting secrets" + tags = ["env:prod", "kms"] + unprotected = true rotation_policy { rotation_period = "720h" # 30 days @@ -31,11 +32,12 @@ resource "scaleway_key_manager_key" "symmetric" { ```terraform resource "scaleway_key_manager_key" "rsa_4096" { - name = "rsa-4096-key" - region = "fr-par" - usage_asymmetric_encryption = "rsa_oaep_4096_sha256" - description = "Key for encrypting large files with RSA-4096" - unprotected = true + name = "rsa-4096-key" + region = "fr-par" + usage = "asymmetric_encryption" + algorithm = "rsa_oaep_4096_sha256" + description = "Key for encrypting large files with RSA-4096" + unprotected = true } ``` @@ -43,11 +45,12 @@ resource "scaleway_key_manager_key" "rsa_4096" { ```terraform resource "scaleway_key_manager_key" "signing" { - name = "signing-key" - region = "fr-par" - usage_asymmetric_signing = "rsa_pss_2048_sha256" - description = "Key for signing documents" - unprotected = true + name = "signing-key" + region = "fr-par" + usage = "asymmetric_signing" + algorithm = "rsa_pss_2048_sha256" + description = "Key for signing documents" + unprotected = true } ``` @@ -59,19 +62,24 @@ The following arguments are supported: - `region` (String) – The region in which to create the key (e.g., `fr-par`). - `project_id` (String, Optional) – The ID of the project the key belongs to. -**Key Usage and Algorithm (choose ONE of the following):** - -- `usage_symmetric_encryption` (String, Optional) – Algorithm for symmetric encryption. Possible values: - - `aes_256_gcm` -- `usage_asymmetric_encryption` (String, Optional) – Algorithm for asymmetric encryption. Possible values: - - `rsa_oaep_2048_sha256` - - `rsa_oaep_3072_sha256` - - `rsa_oaep_4096_sha256` -- `usage_asymmetric_signing` (String, Optional) – Algorithm for asymmetric signing. Possible values: - - `ec_p256_sha256` - - `rsa_pss_2048_sha256` - - `rsa_pkcs1_2048_sha256` -- `usage` (String, **DEPRECATED**) – Legacy field. Use `usage_*` fields instead. Valid values: `symmetric_encryption`, `asymmetric_encryption`, `asymmetric_signing`. When using this field, algorithms are hardcoded to defaults. +**Key Usage and Algorithm (both required):** + +- `usage` (String, Required) – The usage type of the key. Valid values: + - `symmetric_encryption` – For symmetric encryption operations + - `asymmetric_encryption` – For asymmetric encryption operations + - `asymmetric_signing` – For digital signing operations + +- `algorithm` (String, Required) – The cryptographic algorithm to use. Valid values depend on the `usage`: + - For `symmetric_encryption`: + - `aes_256_gcm` + - For `asymmetric_encryption`: + - `rsa_oaep_2048_sha256` + - `rsa_oaep_3072_sha256` + - `rsa_oaep_4096_sha256` + - For `asymmetric_signing`: + - `ec_p256_sha256` + - `rsa_pss_2048_sha256` + - `rsa_pkcs1_2048_sha256` **Other arguments:** @@ -89,7 +97,6 @@ The following arguments are supported: In addition to all arguments above, the following attributes are exported: - `id` – The ID of the key. -- `usage` – The usage type of the key (e.g., `symmetric_encryption`, `asymmetric_encryption`, `asymmetric_signing`). - `state` – The state of the key (e.g., `enabled`). - `created_at` – The date and time when the key was created. - `updated_at` – The date and time when the key was last updated. @@ -109,54 +116,11 @@ You can import a key using its ID and region: terraform import scaleway_key_manager_key.main fr-par/11111111-2222-3333-4444-555555555555 ``` -## Migration from v1.x to v2.x - -⚠️ **Deprecation Notice**: The `usage` field is now deprecated in favor of `usage_*` fields. - -**Old syntax (deprecated, but still supported):** -```terraform -resource "scaleway_key_manager_key" "main" { - usage = "asymmetric_encryption" # hardcoded to rsa_oaep_3072_sha256 -} -``` - -**New syntax (recommended):** -```terraform -resource "scaleway_key_manager_key" "main" { - usage_asymmetric_encryption = "rsa_oaep_4096_sha256" # explicit algorithm selection -} -``` - -**What changed:** -- The generic `usage` field is now deprecated -- You should now use specific `usage_*` fields (`usage_symmetric_encryption`, `usage_asymmetric_encryption`, `usage_asymmetric_signing`) -- You can now explicitly choose the cryptographic algorithm (RSA-2048, RSA-3072, RSA-4096, EC-P256, etc.) - -**Migration steps:** -1. Replace `usage = "symmetric_encryption"` with `usage_symmetric_encryption = "aes_256_gcm"` -2. Replace `usage = "asymmetric_encryption"` with `usage_asymmetric_encryption = "rsa_oaep_3072_sha256"` (or your preferred algorithm) -3. Replace `usage = "asymmetric_signing"` with `usage_asymmetric_signing = "ec_p256_sha256"` (or your preferred algorithm) - -The old `usage` field still works but will show deprecation warnings. - ## Notes - **Protection**: By default, keys are protected and cannot be deleted. To allow deletion, set `unprotected = true` when creating the key. - **Rotation Policy**: The `rotation_policy` block allows you to set automatic rotation for your key. - **Origin**: The `origin` argument is optional and defaults to `scaleway_kms`. Use `external` if you want to import an external key (see Scaleway documentation for details). - **Project and Region**: If not specified, `project_id` and `region` will default to the provider configuration. -- **Algorithm Selection**: With the new `usage_*` fields, you can now specify exactly which algorithm to use for your keys, aligning with the flexibility provided by the Scaleway API. -- **Deprecation**: The `usage` field is deprecated. Please migrate to `usage_*` fields to explicitly select algorithms. - -## Additional Example: Asymmetric Signing Key - -```terraform -resource "scaleway_key_manager_key" "signing" { - name = "signing-key" - region = "fr-par" - usage_asymmetric_signing = "ec_p256_sha256" - description = "Key for signing documents" - unprotected = true -} -``` +- **Algorithm Validation**: The provider validates that the specified `algorithm` is compatible with the `usage` type at plan time, providing early feedback on configuration errors. From 9fbe90274aea93e048629c697dbfb3175c7aaa75 Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Tue, 14 Oct 2025 15:25:25 +0200 Subject: [PATCH 09/10] chore: go mod tidy --- go.sum | 57 --------------------------------------------------------- 1 file changed, 57 deletions(-) diff --git a/go.sum b/go.sum index c7b7c96e48..5bc6e92965 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,3 @@ -cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -18,18 +17,14 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -49,7 +44,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= github.com/Kunde21/markdownfmt/v3 v3.1.0 h1:KiZu9LKs+wFFBQKhrZJrFZwtLnCCWJahL+S+E/3VnM0= github.com/Kunde21/markdownfmt/v3 v3.1.0/go.mod h1:tPXN1RTyOzJwhfHoon9wUr4HGYmWgVxSQN6VBJDkrVc= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -69,10 +63,8 @@ github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki github.com/alexedwards/argon2id v1.0.0 h1:wJzDx66hqWX7siL/SRUmgz3F8YMrd/nfX/xHHcQQP0w= github.com/alexedwards/argon2id v1.0.0/go.mod h1:tYKkqIjzXvZdzPvADMWOEZ+l6+BD6CtBXMj5fnJppiw= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= -github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -97,13 +89,10 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.7 h1:BszAktdUo2xlzmYHjWMq70DqJ7cROM8iBd3f6hrpuMQ= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.7/go.mod h1:XJ1yHki/P7ZPuG4fd3f0Pg/dSGA2cTQBCLw82MH2H48= -github.com/aws/aws-sdk-go-v2/service/dynamodb v1.50.1/go.mod h1:fe3UQAYwylCQRlGnihsqU/tTQkrc2nrW/IhWYwlW9vg= -github.com/aws/aws-sdk-go-v2/service/iam v1.47.3/go.mod h1:5q4IwllQ9vIoq7bk8dPvPbT3LQCky+4NgV7vKwAbaEs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.7 h1:zmZ8qvtE9chfhBPuKB2aQFxW5F/rpwXUgmcVCgQzqRw= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.7/go.mod h1:vVYfbpd2l+pKqlSIDIOgouxNsGu5il9uDp0ooWb0jys= -github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.6/go.mod h1:sXXWh1G9LKKkNbuR0f0ZPd/IvDXlMGiag40opt4XEgY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9 h1:5r34CgVOD4WZudeEKZ9/iKpiT6cM1JyEROpXjOcdWv8= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9/go.mod h1:dB12CEbNWPbzO2uC6QSWHteqOg4JfBVJOojbAoAUb5I= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.7 h1:u3VbDKUCWarWiU+aIUK4gjTr/wQFXV17y3hgNno9fcA= @@ -139,11 +128,9 @@ github.com/bmatcuk/doublestar/v4 v4.9.1 h1:X8jg9rRZmJd4yRy7ZeNDRnM+T3ZfHv15JiBJ/ github.com/bmatcuk/doublestar/v4 v4.9.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -153,16 +140,12 @@ github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/typeurl/v2 v2.2.0/go.mod h1:8XOOxnyatxSWuG8OfsZXVnAF4iZfedjS/8UHSPJnX4g= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= @@ -190,11 +173,7 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= -github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= @@ -214,7 +193,6 @@ github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -225,9 +203,7 @@ github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -295,7 +271,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.5.1 h1:Vjg2VEcdHpwq+oY63s/ksHrgJYCTo0bwWvmmYWdE9fQ= github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM= @@ -309,7 +284,6 @@ github.com/hashicorp/awspolicyequivalence v1.7.0 h1:HxwPEw2/31BqQa73PinGciTfG2uJ github.com/hashicorp/awspolicyequivalence v1.7.0/go.mod h1:+oCTxQEYt+GcRalqrqTCBcJf100SQYiWQ4aENNYxYe0= github.com/hashicorp/cli v1.1.7 h1:/fZJ+hNdwfTSfsxMBa9WWMlfjUZbX8/LnUxgAd7lCVU= github.com/hashicorp/cli v1.1.7/go.mod h1:e6Mfpga9OCT1vqzFuoGZiiF/KaG9CbUfO5s3ghU3YgU= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -322,7 +296,6 @@ github.com/hashicorp/go-cty v1.5.0 h1:EkQ/v+dDNUqnuVpmS5fPqyY71NXVgT5gf32+57xY8g github.com/hashicorp/go-cty v1.5.0/go.mod h1:lFUCG5kd8exDobgSfyj4ONE/dc822kiYMguVKdHGMLM= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= @@ -330,7 +303,6 @@ github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshf github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48= github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -338,7 +310,6 @@ github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKe github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hc-install v0.9.2 h1:v80EtNX4fCVHqzL9Lg/2xkp62bbvQMnvPQ0G+OmtO24= github.com/hashicorp/hc-install v0.9.2/go.mod h1:XUqBQNnuT4RsxoxiM9ZaUk0NX8hi2h+Lb6/c0OZnC/I= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -347,7 +318,6 @@ github.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQx github.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/terraform-exec v0.23.1 h1:diK5NSSDXDKqHEOIQefBMu9ny+FhzwlwV0xgUTB7VTo= github.com/hashicorp/terraform-exec v0.23.1/go.mod h1:e4ZEg9BJDRaSalGm2z8vvrPONt0XWG0/tXpmzYTf+dM= github.com/hashicorp/terraform-json v0.27.1 h1:zWhEracxJW6lcjt/JvximOYyc12pS/gaKSy/wzzE7nY= @@ -379,7 +349,6 @@ github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -387,8 +356,6 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/katbyte/andreyvit-diff v0.0.2 h1:uQGxP2z57bTUGn3SCFzYKgtIKLeuYE+k9dxq1u9Js7U= @@ -449,8 +416,6 @@ github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7z github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/nats-io/jwt/v2 v2.8.0 h1:K7uzyz50+yGZDO5o772eRE7atlcSEENpL7P+b74JV1g= @@ -473,12 +438,10 @@ github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -492,10 +455,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35.0.20250929150437-c65b49480cff h1:1XC8rVPK4hr2lHdHajSurEV2Orp8eMGQ42vqh4hVX7M= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35.0.20250929150437-c65b49480cff/go.mod h1:DVB9HV7nK7TdTRqlpdxw6T0Wxg+aB9xPBEpO3aM2iqQ= -github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -519,9 +480,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= -github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= @@ -557,24 +516,16 @@ github.com/zclconf/go-cty v1.17.0 h1:seZvECve6XX4tmnvRzWtJNHdscMtYEx5R7bnnVyd/d0 github.com/zclconf/go-cty v1.17.0/go.mod h1:wqFzcImaLTI6A5HfsRwB0nj5n0MRZFwmey8YoFPPs3U= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= -github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= go.abhg.dev/goldmark/frontmatter v0.2.0 h1:P8kPG0YkL12+aYk2yU3xHv4tcXzeVnN+gU0tJ5JnxRw= go.abhg.dev/goldmark/frontmatter v0.2.0/go.mod h1:XqrEkZuM57djk7zrlRUB02x8I5J0px76YjkOzhB4YlU= -go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= -go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= -go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.63.0/go.mod h1:wIvTiRUU7Pbfqas/5JVjGZcftBeSAGSYVMOHWzWG0qE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= @@ -593,9 +544,6 @@ go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJr go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4= go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -693,7 +641,6 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -757,7 +704,6 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053/go.mod h1:+nZKN+XVh4LCiA9DV3ywrzN4gumyCnKjau3NGb9SGoE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -839,7 +785,6 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -861,7 +806,6 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -907,7 +851,6 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= From 243eab5c48d1ea980452e98fec2fbd2be3f641bd Mon Sep 17 00:00:00 2001 From: Jonathan Remy Date: Tue, 14 Oct 2025 15:26:08 +0200 Subject: [PATCH 10/10] refactor: remove comments from functions --- internal/services/keymanager/key_resource.go | 42 ++++++++++++++----- .../services/keymanager/key_resource_test.go | 5 --- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/internal/services/keymanager/key_resource.go b/internal/services/keymanager/key_resource.go index b2298a442e..7eb317c754 100644 --- a/internal/services/keymanager/key_resource.go +++ b/internal/services/keymanager/key_resource.go @@ -4,6 +4,7 @@ import ( "context" "fmt" + "github.com/hashicorp/go-cty/cty" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -13,6 +14,7 @@ import ( "github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional" "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account" "github.com/scaleway/terraform-provider-scaleway/v2/internal/types" + "github.com/scaleway/terraform-provider-scaleway/v2/internal/verify" ) func ResourceKeyManagerKey() *schema.Resource { @@ -40,11 +42,31 @@ func ResourceKeyManagerKey() *schema.Resource { }, false), Description: "Key usage type. Possible values: symmetric_encryption, asymmetric_encryption, asymmetric_signing.", }, - "algorithm": { - Type: schema.TypeString, - Required: true, - Description: "Algorithm to use for the key. The valid algorithms depend on the usage type.", - }, + "algorithm": { + Type: schema.TypeString, + Required: true, + Description: "Algorithm to use for the key. The valid algorithms depend on the usage type.", + ValidateDiagFunc: func(i any, p cty.Path) diag.Diagnostics { + var allKnownAlgos []string + + symAlgos := key_manager.KeyAlgorithmSymmetricEncryption("").Values() + for _, algo := range symAlgos { + allKnownAlgos = append(allKnownAlgos, string(algo)) + } + + asymEncAlgos := key_manager.KeyAlgorithmAsymmetricEncryption("").Values() + for _, algo := range asymEncAlgos { + allKnownAlgos = append(allKnownAlgos, string(algo)) + } + + asymSignAlgos := key_manager.KeyAlgorithmAsymmetricSigning("").Values() + for _, algo := range asymSignAlgos { + allKnownAlgos = append(allKnownAlgos, string(algo)) + } + + return verify.ValidateStringInSliceWithWarning(allKnownAlgos, "algorithm")(i, p) + }, + }, "description": { Type: schema.TypeString, Optional: true, @@ -128,10 +150,12 @@ func resourceKeyManagerKeyCreate(ctx context.Context, d *schema.ResourceData, m usage := d.Get("usage").(string) algorithm := d.Get("algorithm").(string) + keyUsage, err := expandUsageAlgorithm(usage, algorithm) if err != nil { return diag.FromErr(err) } + createReq.Usage = keyUsage key, err := api.CreateKey(createReq) @@ -247,8 +271,6 @@ func resourceKeyManagerKeyDelete(ctx context.Context, d *schema.ResourceData, m func validateUsageAlgorithmCombination() schema.CustomizeDiffFunc { return func(ctx context.Context, diff *schema.ResourceDiff, _ any) error { - // No strict validation here - we let the API validate the algorithm - // This prevents the provider from being a bottleneck when new algorithms are added return nil } } @@ -256,18 +278,18 @@ func validateUsageAlgorithmCombination() schema.CustomizeDiffFunc { func expandUsageAlgorithm(usage, algorithm string) (*key_manager.KeyUsage, error) { switch usage { case usageSymmetricEncryption: - // Accept any algorithm for symmetric encryption - let API validate typedAlgo := key_manager.KeyAlgorithmSymmetricEncryption(algorithm) + return &key_manager.KeyUsage{SymmetricEncryption: &typedAlgo}, nil case usageAsymmetricEncryption: - // Accept any algorithm for asymmetric encryption - let API validate typedAlgo := key_manager.KeyAlgorithmAsymmetricEncryption(algorithm) + return &key_manager.KeyUsage{AsymmetricEncryption: &typedAlgo}, nil case usageAsymmetricSigning: - // Accept any algorithm for asymmetric signing - let API validate typedAlgo := key_manager.KeyAlgorithmAsymmetricSigning(algorithm) + return &key_manager.KeyUsage{AsymmetricSigning: &typedAlgo}, nil default: diff --git a/internal/services/keymanager/key_resource_test.go b/internal/services/keymanager/key_resource_test.go index 534b324a0a..ec3ea13cce 100644 --- a/internal/services/keymanager/key_resource_test.go +++ b/internal/services/keymanager/key_resource_test.go @@ -46,7 +46,6 @@ func TestAccKeyManagerKey_Basic(t *testing.T) { }, }) } - func TestAccKeyManagerKey_Update(t *testing.T) { tt := acctest.NewTestTools(t) defer tt.Cleanup() @@ -96,7 +95,6 @@ func TestAccKeyManagerKey_Update(t *testing.T) { }, }) } - func IsKeyManagerKeyDestroyed(tt *acctest.TestTools) resource.TestCheckFunc { return func(state *terraform.State) error { for _, rs := range state.RootModule().Resources { @@ -166,7 +164,6 @@ func TestAccKeyManagerKey_WithRotationPolicy(t *testing.T) { }, }) } - func TestAccKeyManagerKey_WithCustomAlgorithm(t *testing.T) { tt := acctest.NewTestTools(t) defer tt.Cleanup() @@ -197,7 +194,6 @@ func TestAccKeyManagerKey_WithCustomAlgorithm(t *testing.T) { }, }) } - func TestAccKeyManagerKey_DefaultAlgorithm(t *testing.T) { tt := acctest.NewTestTools(t) defer tt.Cleanup() @@ -228,4 +224,3 @@ func TestAccKeyManagerKey_DefaultAlgorithm(t *testing.T) { }, }) } -