diff --git a/go.mod b/go.mod index 4f2463ed0..c703a1962 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/stackitcloud/stackit-sdk-go/services/edge v0.7.0 github.com/stackitcloud/stackit-sdk-go/services/git v0.11.0 github.com/stackitcloud/stackit-sdk-go/services/iaas v1.3.5 - github.com/stackitcloud/stackit-sdk-go/services/kms v1.3.2 + github.com/stackitcloud/stackit-sdk-go/services/kms v1.6.0 github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0 github.com/stackitcloud/stackit-sdk-go/services/logme v0.27.1 github.com/stackitcloud/stackit-sdk-go/services/logs v0.7.1 diff --git a/go.sum b/go.sum index 9b7c52b25..738c1414b 100644 --- a/go.sum +++ b/go.sum @@ -167,8 +167,8 @@ github.com/stackitcloud/stackit-sdk-go/services/git v0.11.0 h1:siKBCYl7BwR5S25Y4 github.com/stackitcloud/stackit-sdk-go/services/git v0.11.0/go.mod h1:QKy74hhLVZKXItw3y+elF8s9QezFqpEsAUmaqvNDzYs= github.com/stackitcloud/stackit-sdk-go/services/iaas v1.3.5 h1:W57+XRa8wTLsi5CV9Tqa7mGgt/PvlRM//RurXSmvII8= github.com/stackitcloud/stackit-sdk-go/services/iaas v1.3.5/go.mod h1:lTWjW57eAq1bwfM6nsNinhoBr3MHFW/GaFasdAsYfDM= -github.com/stackitcloud/stackit-sdk-go/services/kms v1.3.2 h1:2ulSL2IkIAKND59eAjbEhVkOoBMyvm48ojwz1a3t0U0= -github.com/stackitcloud/stackit-sdk-go/services/kms v1.3.2/go.mod h1:cuIaMMiHeHQsbvy7BOFMutoV3QtN+ZBx7Tg3GmYUw7s= +github.com/stackitcloud/stackit-sdk-go/services/kms v1.6.0 h1:WWU2LpqmazsPDgoRAVrhLzo2MiNU9dNim81z793DbBU= +github.com/stackitcloud/stackit-sdk-go/services/kms v1.6.0/go.mod h1:FuyCm3s/Ihw+tkpVLGMXwgTtlhrijd31cUCUBWpn1p8= github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0 h1:DxrN85V738CRLynu6MULQHO+OXyYnkhVPgoZKULfFIs= github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0/go.mod h1:ClPE4TOM1FeaJiwTXvApq4gWaSgTLq6nU3PPHAIQDN4= github.com/stackitcloud/stackit-sdk-go/services/logme v0.27.1 h1:6AaWxQNtOEvIvbtyySi5KIrNzxGbKgOayUnA3fpuqns= diff --git a/stackit/internal/services/kms/key/datasource.go b/stackit/internal/services/kms/key/datasource.go index 97dba1974..5eb1812bd 100644 --- a/stackit/internal/services/kms/key/datasource.go +++ b/stackit/internal/services/kms/key/datasource.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/schema/validator" "github.com/hashicorp/terraform-plugin-log/tflog" sdkUtils "github.com/stackitcloud/stackit-sdk-go/core/utils" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" kmsUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/kms/utils" @@ -159,7 +159,7 @@ func (k *keyDataSource) Read(ctx context.Context, req datasource.ReadRequest, re ctx = tflog.SetField(ctx, "region", region) ctx = tflog.SetField(ctx, "key_id", keyId) - keyResponse, err := k.client.GetKey(ctx, projectId, region, keyRingId, keyId).Execute() + keyResponse, err := k.client.DefaultAPI.GetKey(ctx, projectId, region, keyRingId, keyId).Execute() if err != nil { utils.LogError( ctx, diff --git a/stackit/internal/services/kms/key/resource.go b/stackit/internal/services/kms/key/resource.go index 41707dc7d..aae3fe32a 100644 --- a/stackit/internal/services/kms/key/resource.go +++ b/stackit/internal/services/kms/key/resource.go @@ -8,7 +8,7 @@ import ( "strings" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" - "github.com/stackitcloud/stackit-sdk-go/services/kms/wait" + "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api/wait" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" @@ -20,7 +20,7 @@ import ( "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/stackitcloud/stackit-sdk-go/core/oapierror" sdkUtils "github.com/stackitcloud/stackit-sdk-go/core/utils" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" kmsUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/kms/utils" @@ -259,7 +259,7 @@ func (r *keyResource) Create(ctx context.Context, req resource.CreateRequest, re return } - createResponse, err := r.client.CreateKey(ctx, projectId, region, keyRingId).CreateKeyPayload(*payload).Execute() + createResponse, err := r.client.DefaultAPI.CreateKey(ctx, projectId, region, keyRingId).CreateKeyPayload(*payload).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating key", fmt.Sprintf("Calling API: %v", err)) return @@ -267,21 +267,20 @@ func (r *keyResource) Create(ctx context.Context, req resource.CreateRequest, re ctx = core.LogResponse(ctx) - if createResponse == nil || createResponse.Id == nil { + if createResponse == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating key", "API returned empty response") return } - keyId := *createResponse.Id // Write id attributes to state before polling via the wait handler - just in case anything goes wrong during the wait handler ctx = utils.SetAndLogStateFields(ctx, &resp.Diagnostics, &resp.State, map[string]any{ "project_id": projectId, "region": region, "keyring_id": keyRingId, - "key_id": keyId, + "key_id": createResponse.Id, }) - waitHandlerResp, err := wait.CreateOrUpdateKeyWaitHandler(ctx, r.client, projectId, region, keyRingId, keyId).WaitWithContext(ctx) + waitHandlerResp, err := wait.CreateOrUpdateKeyWaitHandler(ctx, r.client.DefaultAPI, projectId, region, keyRingId, createResponse.Id).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error waiting for key creation", fmt.Sprintf("Calling API: %v", err)) return @@ -321,7 +320,7 @@ func (r *keyResource) Read(ctx context.Context, req resource.ReadRequest, resp * ctx = tflog.SetField(ctx, "region", region) ctx = tflog.SetField(ctx, "key_id", keyId) - keyResponse, err := r.client.GetKey(ctx, projectId, region, keyRingId, keyId).Execute() + keyResponse, err := r.client.DefaultAPI.GetKey(ctx, projectId, region, keyRingId, keyId).Execute() if err != nil { var oapiErr *oapierror.GenericOpenAPIError ok := errors.As(err, &oapiErr) @@ -368,7 +367,7 @@ func (r *keyResource) Delete(ctx context.Context, req resource.DeleteRequest, re region := r.providerData.GetRegionWithOverride(model.Region) keyId := model.KeyId.ValueString() - err := r.client.DeleteKey(ctx, projectId, region, keyRingId, keyId).Execute() + err := r.client.DefaultAPI.DeleteKey(ctx, projectId, region, keyRingId, keyId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting key", fmt.Sprintf("Calling API: %v", err)) } @@ -413,28 +412,20 @@ func mapFields(key *kms.Key, model *Model, region string) error { var keyId string if model.KeyId.ValueString() != "" { keyId = model.KeyId.ValueString() - } else if key.Id != nil { - keyId = *key.Id } else { - return fmt.Errorf("key id not present") + keyId = key.Id } model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), region, model.KeyRingId.ValueString(), keyId) model.KeyId = types.StringValue(keyId) - model.DisplayName = types.StringPointerValue(key.DisplayName) + model.DisplayName = types.StringValue(key.DisplayName) model.Region = types.StringValue(region) - model.ImportOnly = types.BoolPointerValue(key.ImportOnly) + model.ImportOnly = types.BoolValue(key.ImportOnly) model.AccessScope = types.StringValue(string(key.GetAccessScope())) model.Algorithm = types.StringValue(string(key.GetAlgorithm())) model.Purpose = types.StringValue(string(key.GetPurpose())) model.Protection = types.StringValue(string(key.GetProtection())) - - // TODO: workaround - remove once STACKITKMS-377 is resolved (just write the return value from the API to the state then) - if !(model.Description.IsNull() && key.Description != nil && *key.Description == "") { - model.Description = types.StringPointerValue(key.Description) - } else { - model.Description = types.StringNull() - } + model.Description = types.StringPointerValue(key.Description) return nil } @@ -443,13 +434,19 @@ func toCreatePayload(model *Model) (*kms.CreateKeyPayload, error) { if model == nil { return nil, fmt.Errorf("nil model") } + + var accessScope *kms.AccessScope + if !utils.IsUndefined(model.AccessScope) { + accessScope = new(kms.AccessScope(model.AccessScope.ValueString())) + } + return &kms.CreateKeyPayload{ - AccessScope: kms.CreateKeyPayloadGetAccessScopeAttributeType(conversion.StringValueToPointer(model.AccessScope)), - Algorithm: kms.CreateKeyPayloadGetAlgorithmAttributeType(conversion.StringValueToPointer(model.Algorithm)), - Protection: kms.CreateKeyPayloadGetProtectionAttributeType(conversion.StringValueToPointer(model.Protection)), + AccessScope: accessScope, + Algorithm: kms.Algorithm(model.Algorithm.ValueString()), + Protection: kms.Protection(model.Protection.ValueString()), Description: conversion.StringValueToPointer(model.Description), - DisplayName: conversion.StringValueToPointer(model.DisplayName), + DisplayName: model.DisplayName.ValueString(), ImportOnly: conversion.BoolValueToPointer(model.ImportOnly), - Purpose: kms.CreateKeyPayloadGetPurposeAttributeType(conversion.StringValueToPointer(model.Purpose)), + Purpose: kms.Purpose(model.Purpose.ValueString()), }, nil } diff --git a/stackit/internal/services/kms/key/resource_test.go b/stackit/internal/services/kms/key/resource_test.go index 1dc2423f6..a875e19c5 100644 --- a/stackit/internal/services/kms/key/resource_test.go +++ b/stackit/internal/services/kms/key/resource_test.go @@ -8,8 +8,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/hashicorp/terraform-plugin-framework/types" - "github.com/stackitcloud/stackit-sdk-go/core/utils" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" ) var ( @@ -39,17 +38,19 @@ func TestMapFields(t *testing.T) { ProjectId: types.StringValue(projectId), }, input: &kms.Key{ - Id: new(keyId), - Protection: utils.Ptr(kms.PROTECTION_SOFTWARE), - Algorithm: utils.Ptr(kms.ALGORITHM_ECDSA_P256_SHA256), - Purpose: utils.Ptr(kms.PURPOSE_ASYMMETRIC_SIGN_VERIFY), - AccessScope: utils.Ptr(kms.ACCESSSCOPE_PUBLIC), + Id: keyId, + DisplayName: "display-name", + Protection: kms.PROTECTION_SOFTWARE, + Algorithm: kms.ALGORITHM_ECDSA_P256_SHA256, + Purpose: kms.PURPOSE_ASYMMETRIC_SIGN_VERIFY, + AccessScope: kms.ACCESSSCOPE_PUBLIC, + ImportOnly: true, }, region: "eu01", }, expected: Model{ Description: types.StringNull(), - DisplayName: types.StringNull(), + DisplayName: types.StringValue("display-name"), KeyRingId: types.StringValue(keyRingId), KeyId: types.StringValue(keyId), Id: types.StringValue(fmt.Sprintf("%s,eu01,%s,%s", projectId, keyRingId, keyId)), @@ -59,6 +60,7 @@ func TestMapFields(t *testing.T) { Algorithm: types.StringValue(string(kms.ALGORITHM_ECDSA_P256_SHA256)), Purpose: types.StringValue(string(kms.PURPOSE_ASYMMETRIC_SIGN_VERIFY)), AccessScope: types.StringValue(string(kms.ACCESSSCOPE_PUBLIC)), + ImportOnly: types.BoolValue(true), }, isValid: true, }, @@ -71,14 +73,14 @@ func TestMapFields(t *testing.T) { ProjectId: types.StringValue(projectId), }, input: &kms.Key{ - Id: new(keyId), + Id: keyId, Description: new("descr"), - DisplayName: new("name"), - ImportOnly: new(true), - Protection: utils.Ptr(kms.PROTECTION_SOFTWARE), - Algorithm: utils.Ptr(kms.ALGORITHM_AES_256_GCM), - Purpose: utils.Ptr(kms.PURPOSE_MESSAGE_AUTHENTICATION_CODE), - AccessScope: utils.Ptr(kms.ACCESSSCOPE_SNA), + DisplayName: "name", + ImportOnly: true, + Protection: kms.PROTECTION_SOFTWARE, + Algorithm: kms.ALGORITHM_AES_256_GCM, + Purpose: kms.PURPOSE_MESSAGE_AUTHENTICATION_CODE, + AccessScope: kms.ACCESSSCOPE_SNA, }, region: "eu01", }, @@ -98,17 +100,6 @@ func TestMapFields(t *testing.T) { }, isValid: true, }, - { - description: "nil_response_field", - args: args{ - state: Model{}, - input: &kms.Key{ - Id: nil, - }, - }, - expected: Model{}, - isValid: false, - }, { description: "nil_response", args: args{ @@ -118,18 +109,6 @@ func TestMapFields(t *testing.T) { expected: Model{}, isValid: false, }, - { - description: "no_resource_id", - args: args{ - state: Model{ - Region: types.StringValue("eu01"), - ProjectId: types.StringValue(projectId), - }, - input: &kms.Key{}, - }, - expected: Model{}, - isValid: false, - }, } for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { @@ -173,7 +152,7 @@ func TestToCreatePayload(t *testing.T) { DisplayName: types.StringValue("name"), }, expected: &kms.CreateKeyPayload{ - DisplayName: new("name"), + DisplayName: "name", }, isValid: true, }, @@ -184,7 +163,7 @@ func TestToCreatePayload(t *testing.T) { Description: types.StringValue(""), }, expected: &kms.CreateKeyPayload{ - DisplayName: new(""), + DisplayName: "", Description: new(""), }, isValid: true, diff --git a/stackit/internal/services/kms/keyring/datasource.go b/stackit/internal/services/kms/keyring/datasource.go index a89944bf8..4c8b95cbf 100644 --- a/stackit/internal/services/kms/keyring/datasource.go +++ b/stackit/internal/services/kms/keyring/datasource.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/datasource/schema" "github.com/hashicorp/terraform-plugin-framework/schema/validator" "github.com/hashicorp/terraform-plugin-log/tflog" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" kmsUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/kms/utils" @@ -111,7 +111,7 @@ func (k *keyRingDataSource) Read(ctx context.Context, request datasource.ReadReq ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "region", region) - keyRingResponse, err := k.client.GetKeyRing(ctx, projectId, region, keyRingId).Execute() + keyRingResponse, err := k.client.DefaultAPI.GetKeyRing(ctx, projectId, region, keyRingId).Execute() if err != nil { utils.LogError( ctx, diff --git a/stackit/internal/services/kms/keyring/resource.go b/stackit/internal/services/kms/keyring/resource.go index 6b2f8e9aa..425575d8f 100644 --- a/stackit/internal/services/kms/keyring/resource.go +++ b/stackit/internal/services/kms/keyring/resource.go @@ -17,8 +17,8 @@ import ( "github.com/hashicorp/terraform-plugin-framework/types" "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/stackitcloud/stackit-sdk-go/core/oapierror" - "github.com/stackitcloud/stackit-sdk-go/services/kms" - "github.com/stackitcloud/stackit-sdk-go/services/kms/wait" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" + "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api/wait" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" kmsUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/kms/utils" @@ -191,7 +191,7 @@ func (r *keyRingResource) Create(ctx context.Context, req resource.CreateRequest core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating keyring", fmt.Sprintf("Creating API payload: %v", err)) return } - createResponse, err := r.client.CreateKeyRing(ctx, projectId, region).CreateKeyRingPayload(*payload).Execute() + createResponse, err := r.client.DefaultAPI.CreateKeyRing(ctx, projectId, region).CreateKeyRingPayload(*payload).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating keyring", fmt.Sprintf("Calling API: %v", err)) return @@ -199,12 +199,12 @@ func (r *keyRingResource) Create(ctx context.Context, req resource.CreateRequest ctx = core.LogResponse(ctx) - if createResponse == nil || createResponse.Id == nil { + if createResponse == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating keyring", "API returned empty response") return } - keyRingId := *createResponse.Id + keyRingId := createResponse.Id // Write id attributes to state before polling via the wait handler - just in case anything goes wrong during the wait handler ctx = utils.SetAndLogStateFields(ctx, &resp.Diagnostics, &resp.State, map[string]any{ "project_id": projectId, @@ -212,7 +212,7 @@ func (r *keyRingResource) Create(ctx context.Context, req resource.CreateRequest "keyring_id": keyRingId, }) - waitResp, err := wait.CreateKeyRingWaitHandler(ctx, r.client, projectId, region, keyRingId).SetSleepBeforeWait(5 * time.Second).WaitWithContext(ctx) + waitResp, err := wait.CreateKeyRingWaitHandler(ctx, r.client.DefaultAPI, projectId, region, keyRingId).SetSleepBeforeWait(5 * time.Second).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating keyring", fmt.Sprintf("Key Ring creation waiting: %v", err)) return @@ -250,7 +250,7 @@ func (r *keyRingResource) Read(ctx context.Context, req resource.ReadRequest, re ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "region", region) - keyRingResponse, err := r.client.GetKeyRing(ctx, projectId, region, keyRingId).Execute() + keyRingResponse, err := r.client.DefaultAPI.GetKeyRing(ctx, projectId, region, keyRingId).Execute() if err != nil { var oapiErr *oapierror.GenericOpenAPIError ok := errors.As(err, &oapiErr) @@ -328,23 +328,15 @@ func mapFields(keyRing *kms.KeyRing, model *Model, region string) error { var keyRingId string if model.KeyRingId.ValueString() != "" { keyRingId = model.KeyRingId.ValueString() - } else if keyRing.Id != nil { - keyRingId = *keyRing.Id } else { - return fmt.Errorf("keyring id not present") + keyRingId = keyRing.Id } model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), region, keyRingId) model.KeyRingId = types.StringValue(keyRingId) - model.DisplayName = types.StringPointerValue(keyRing.DisplayName) + model.DisplayName = types.StringValue(keyRing.DisplayName) model.Region = types.StringValue(region) - - // TODO: workaround - remove once STACKITKMS-377 is resolved (just write the return value from the API to the state then) - if !(model.Description.IsNull() && keyRing.Description != nil && *keyRing.Description == "") { - model.Description = types.StringPointerValue(keyRing.Description) - } else { - model.Description = types.StringNull() - } + model.Description = types.StringPointerValue(keyRing.Description) return nil } @@ -356,6 +348,6 @@ func toCreatePayload(model *Model) (*kms.CreateKeyRingPayload, error) { return &kms.CreateKeyRingPayload{ Description: conversion.StringValueToPointer(model.Description), - DisplayName: conversion.StringValueToPointer(model.DisplayName), + DisplayName: model.DisplayName.ValueString(), }, nil } diff --git a/stackit/internal/services/kms/keyring/resource_test.go b/stackit/internal/services/kms/keyring/resource_test.go index 98c9baf9a..988443c49 100644 --- a/stackit/internal/services/kms/keyring/resource_test.go +++ b/stackit/internal/services/kms/keyring/resource_test.go @@ -1,12 +1,11 @@ package kms import ( - "fmt" "testing" "github.com/google/go-cmp/cmp" "github.com/hashicorp/terraform-plugin-framework/types" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" ) const testRegion = "eu01" @@ -26,11 +25,12 @@ func TestMapFields(t *testing.T) { ProjectId: types.StringValue("pid"), }, &kms.KeyRing{ - Id: new("krid"), + Id: "krid", + DisplayName: "display-name", }, Model{ Description: types.StringNull(), - DisplayName: types.StringNull(), + DisplayName: types.StringValue("display-name"), KeyRingId: types.StringValue("krid"), Id: types.StringValue("pid,eu01,krid"), ProjectId: types.StringValue("pid"), @@ -46,8 +46,8 @@ func TestMapFields(t *testing.T) { }, &kms.KeyRing{ Description: new("descr"), - DisplayName: new("name"), - Id: new("krid"), + DisplayName: "name", + Id: "krid", }, Model{ Description: types.StringValue("descr"), @@ -59,15 +59,6 @@ func TestMapFields(t *testing.T) { }, true, }, - { - "nil_response_field", - Model{}, - &kms.KeyRing{ - Id: nil, - }, - Model{}, - false, - }, { "nil_response", Model{}, @@ -75,16 +66,6 @@ func TestMapFields(t *testing.T) { Model{}, false, }, - { - "no_resource_id", - Model{ - Region: types.StringValue(testRegion), - ProjectId: types.StringValue("pid"), - }, - &kms.KeyRing{}, - Model{}, - false, - }, } for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { @@ -102,8 +83,7 @@ func TestMapFields(t *testing.T) { if tt.isValid { diff := cmp.Diff(state, &tt.expected) if diff != "" { - fmt.Println("state: ", state, " expected: ", tt.expected) - t.Fatalf("Data does not match") + t.Fatalf("Data does not match: %s", diff) } } }) @@ -129,7 +109,7 @@ func TestToCreatePayload(t *testing.T) { DisplayName: types.StringValue("name"), }, &kms.CreateKeyRingPayload{ - DisplayName: new("name"), + DisplayName: "name", }, true, }, @@ -140,7 +120,7 @@ func TestToCreatePayload(t *testing.T) { Description: types.StringValue(""), }, &kms.CreateKeyRingPayload{ - DisplayName: new(""), + DisplayName: "", Description: new(""), }, true, diff --git a/stackit/internal/services/kms/kms_acc_test.go b/stackit/internal/services/kms/kms_acc_test.go index bea3e4523..b357b9934 100644 --- a/stackit/internal/services/kms/kms_acc_test.go +++ b/stackit/internal/services/kms/kms_acc_test.go @@ -14,7 +14,7 @@ import ( "github.com/hashicorp/terraform-plugin-testing/plancheck" coreConfig "github.com/stackitcloud/stackit-sdk-go/core/config" "github.com/stackitcloud/stackit-sdk-go/core/oapierror" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" "github.com/hashicorp/terraform-plugin-testing/config" @@ -125,17 +125,17 @@ var testConfigWrappingKeyVarsMin = config.Variables{ "project_id": config.StringVariable(testutil.ProjectId), "keyring_display_name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha)), "display_name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha)), - "algorithm": config.StringVariable(string(kms.WRAPPINGALGORITHM__2048_OAEP_SHA256)), + "algorithm": config.StringVariable(string(kms.WRAPPINGALGORITHM_RSA_2048_OAEP_SHA256)), "protection": config.StringVariable(string(kms.PROTECTION_SOFTWARE)), - "purpose": config.StringVariable(string(kms.WRAPPINGPURPOSE_SYMMETRIC_KEY)), + "purpose": config.StringVariable(string(kms.WRAPPINGPURPOSE_WRAP_SYMMETRIC_KEY)), } var testConfigWrappingKeyVarsMinUpdated = func() config.Variables { updatedConfig := config.Variables{} maps.Copy(updatedConfig, testConfigWrappingKeyVarsMin) updatedConfig["display_name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["display_name"]))) - updatedConfig["algorithm"] = config.StringVariable(string(kms.WRAPPINGALGORITHM__4096_OAEP_SHA256_AES_256_KEY_WRAP)) - updatedConfig["purpose"] = config.StringVariable(string(kms.WRAPPINGPURPOSE_ASYMMETRIC_KEY)) + updatedConfig["algorithm"] = config.StringVariable(string(kms.WRAPPINGALGORITHM_RSA_4096_OAEP_SHA256_AES_256_KEY_WRAP)) + updatedConfig["purpose"] = config.StringVariable(string(kms.WRAPPINGPURPOSE_WRAP_ASYMMETRIC_KEY)) return updatedConfig } @@ -145,9 +145,9 @@ var testConfigWrappingKeyVarsMax = config.Variables{ "project_id": config.StringVariable(testutil.ProjectId), "keyring_display_name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha)), "display_name": config.StringVariable("tf-acc-" + acctest.RandStringFromCharSet(8, acctest.CharSetAlpha)), - "algorithm": config.StringVariable(string(kms.WRAPPINGALGORITHM__2048_OAEP_SHA256)), + "algorithm": config.StringVariable(string(kms.WRAPPINGALGORITHM_RSA_2048_OAEP_SHA256)), "protection": config.StringVariable(string(kms.PROTECTION_SOFTWARE)), - "purpose": config.StringVariable(string(kms.WRAPPINGPURPOSE_SYMMETRIC_KEY)), + "purpose": config.StringVariable(string(kms.WRAPPINGPURPOSE_WRAP_SYMMETRIC_KEY)), "description": config.StringVariable("kms-wrapping-key-description"), "access_scope": config.StringVariable(string(kms.ACCESSSCOPE_PUBLIC)), } @@ -156,8 +156,8 @@ var testConfigWrappingKeyVarsMaxUpdated = func() config.Variables { updatedConfig := config.Variables{} maps.Copy(updatedConfig, testConfigWrappingKeyVarsMax) updatedConfig["display_name"] = config.StringVariable(fmt.Sprintf("%s-updated", testutil.ConvertConfigVariable(updatedConfig["display_name"]))) - updatedConfig["algorithm"] = config.StringVariable(string(kms.WRAPPINGALGORITHM__4096_OAEP_SHA256_AES_256_KEY_WRAP)) - updatedConfig["purpose"] = config.StringVariable(string(kms.WRAPPINGPURPOSE_ASYMMETRIC_KEY)) + updatedConfig["algorithm"] = config.StringVariable(string(kms.WRAPPINGALGORITHM_RSA_4096_OAEP_SHA256_AES_256_KEY_WRAP)) + updatedConfig["purpose"] = config.StringVariable(string(kms.WRAPPINGPURPOSE_WRAP_ASYMMETRIC_KEY)) updatedConfig["description"] = config.StringVariable("kms-wrapping-key-description-updated") return updatedConfig } @@ -929,7 +929,7 @@ func testAccCheckKeyRingDestroy(s *terraform.State) error { continue } keyRingId := strings.Split(rs.Primary.ID, core.Separator)[2] - err := client.DeleteKeyRingExecute(ctx, testutil.ProjectId, testutil.Region, keyRingId) + err := client.DefaultAPI.DeleteKeyRing(ctx, testutil.ProjectId, testutil.Region, keyRingId).Execute() if err != nil { var oapiErr *oapierror.GenericOpenAPIError if errors.As(err, &oapiErr) { @@ -975,7 +975,7 @@ func testAccCheckKeyDestroy(s *terraform.State) error { } keyRingId := strings.Split(rs.Primary.ID, core.Separator)[2] keyId := strings.Split(rs.Primary.ID, core.Separator)[3] - err := client.DeleteKeyExecute(ctx, testutil.ProjectId, testutil.Region, keyRingId, keyId) + err := client.DefaultAPI.DeleteKey(ctx, testutil.ProjectId, testutil.Region, keyRingId, keyId).Execute() if err != nil { var oapiErr *oapierror.GenericOpenAPIError if errors.As(err, &oapiErr) { @@ -1019,7 +1019,7 @@ func testAccCheckWrappingKeyDestroy(s *terraform.State) error { } keyRingId := strings.Split(rs.Primary.ID, core.Separator)[2] wrappingKeyId := strings.Split(rs.Primary.ID, core.Separator)[3] - err := client.DeleteWrappingKeyExecute(ctx, testutil.ProjectId, testutil.Region, keyRingId, wrappingKeyId) + err := client.DefaultAPI.DeleteWrappingKey(ctx, testutil.ProjectId, testutil.Region, keyRingId, wrappingKeyId).Execute() if err != nil { var oapiErr *oapierror.GenericOpenAPIError if errors.As(err, &oapiErr) { diff --git a/stackit/internal/services/kms/utils/util.go b/stackit/internal/services/kms/utils/util.go index 9f6f64d81..7bcd8ed72 100644 --- a/stackit/internal/services/kms/utils/util.go +++ b/stackit/internal/services/kms/utils/util.go @@ -6,7 +6,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/stackitcloud/stackit-sdk-go/core/config" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils" ) diff --git a/stackit/internal/services/kms/wrapping-key/datasource.go b/stackit/internal/services/kms/wrapping-key/datasource.go index 396e6f12a..179d2a881 100644 --- a/stackit/internal/services/kms/wrapping-key/datasource.go +++ b/stackit/internal/services/kms/wrapping-key/datasource.go @@ -10,7 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/schema/validator" "github.com/hashicorp/terraform-plugin-log/tflog" sdkUtils "github.com/stackitcloud/stackit-sdk-go/core/utils" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" kmsUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/kms/utils" @@ -147,7 +147,7 @@ func (w *wrappingKeyDataSource) Read(ctx context.Context, request datasource.Rea ctx = tflog.SetField(ctx, "region", region) ctx = tflog.SetField(ctx, "wrapping_key_id", wrappingKeyId) - wrappingKeyResponse, err := w.client.GetWrappingKey(ctx, projectId, region, keyRingId, wrappingKeyId).Execute() + wrappingKeyResponse, err := w.client.DefaultAPI.GetWrappingKey(ctx, projectId, region, keyRingId, wrappingKeyId).Execute() if err != nil { utils.LogError( ctx, diff --git a/stackit/internal/services/kms/wrapping-key/resource.go b/stackit/internal/services/kms/wrapping-key/resource.go index a1501c8ce..79546b653 100644 --- a/stackit/internal/services/kms/wrapping-key/resource.go +++ b/stackit/internal/services/kms/wrapping-key/resource.go @@ -11,7 +11,7 @@ import ( sdkUtils "github.com/stackitcloud/stackit-sdk-go/core/utils" "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" - "github.com/stackitcloud/stackit-sdk-go/services/kms/wait" + "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api/wait" "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" "github.com/hashicorp/terraform-plugin-framework/resource" @@ -22,7 +22,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/types" "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/stackitcloud/stackit-sdk-go/core/oapierror" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" kmsUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/kms/utils" @@ -264,7 +264,7 @@ func (r *wrappingKeyResource) Create(ctx context.Context, req resource.CreateReq return } - createWrappingKeyResp, err := r.client.CreateWrappingKey(ctx, projectId, region, keyRingId).CreateWrappingKeyPayload(*payload).Execute() + createWrappingKeyResp, err := r.client.DefaultAPI.CreateWrappingKey(ctx, projectId, region, keyRingId).CreateWrappingKeyPayload(*payload).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating wrapping key", fmt.Sprintf("Calling API: %v", err)) return @@ -272,12 +272,12 @@ func (r *wrappingKeyResource) Create(ctx context.Context, req resource.CreateReq ctx = core.LogResponse(ctx) - if createWrappingKeyResp == nil || createWrappingKeyResp.Id == nil { + if createWrappingKeyResp == nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating wrapping key", "API returned empty response") return } - wrappingKeyId := *createWrappingKeyResp.Id + wrappingKeyId := createWrappingKeyResp.Id // Write id attributes to state before polling via the wait handler - just in case anything goes wrong during the wait handler ctx = utils.SetAndLogStateFields(ctx, &resp.Diagnostics, &resp.State, map[string]any{ @@ -287,7 +287,7 @@ func (r *wrappingKeyResource) Create(ctx context.Context, req resource.CreateReq "wrapping_key_id": wrappingKeyId, }) - wrappingKey, err := wait.CreateWrappingKeyWaitHandler(ctx, r.client, projectId, region, keyRingId, wrappingKeyId).WaitWithContext(ctx) + wrappingKey, err := wait.CreateWrappingKeyWaitHandler(ctx, r.client.DefaultAPI, projectId, region, keyRingId, wrappingKeyId).WaitWithContext(ctx) if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error waiting for wrapping key creation", fmt.Sprintf("Calling API: %v", err)) return @@ -327,7 +327,7 @@ func (r *wrappingKeyResource) Read(ctx context.Context, request resource.ReadReq ctx = tflog.SetField(ctx, "region", region) ctx = tflog.SetField(ctx, "wrapping_key_id", wrappingKeyId) - wrappingKeyResponse, err := r.client.GetWrappingKey(ctx, projectId, region, keyRingId, wrappingKeyId).Execute() + wrappingKeyResponse, err := r.client.DefaultAPI.GetWrappingKey(ctx, projectId, region, keyRingId, wrappingKeyId).Execute() if err != nil { var oapiErr *oapierror.GenericOpenAPIError ok := errors.As(err, &oapiErr) @@ -374,7 +374,7 @@ func (r *wrappingKeyResource) Delete(ctx context.Context, request resource.Delet region := r.providerData.GetRegionWithOverride(model.Region) wrappingKeyId := model.WrappingKeyId.ValueString() - err := r.client.DeleteWrappingKey(ctx, projectId, region, keyRingId, wrappingKeyId).Execute() + err := r.client.DefaultAPI.DeleteWrappingKey(ctx, projectId, region, keyRingId, wrappingKeyId).Execute() if err != nil { core.LogAndAddError(ctx, &response.Diagnostics, "Error deleting wrapping key", fmt.Sprintf("Calling API: %v", err)) } @@ -416,38 +416,22 @@ func mapFields(wrappingKey *kms.WrappingKey, model *Model, region string) error var wrappingKeyId string if model.WrappingKeyId.ValueString() != "" { wrappingKeyId = model.WrappingKeyId.ValueString() - } else if wrappingKey.Id != nil { - wrappingKeyId = *wrappingKey.Id } else { - return fmt.Errorf("key id not present") + wrappingKeyId = wrappingKey.Id } model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), region, model.KeyRingId.ValueString(), wrappingKeyId) model.Region = types.StringValue(region) model.WrappingKeyId = types.StringValue(wrappingKeyId) - model.DisplayName = types.StringPointerValue(wrappingKey.DisplayName) + model.DisplayName = types.StringValue(wrappingKey.DisplayName) model.PublicKey = types.StringPointerValue(wrappingKey.PublicKey) model.AccessScope = types.StringValue(string(wrappingKey.GetAccessScope())) model.Algorithm = types.StringValue(string(wrappingKey.GetAlgorithm())) model.Purpose = types.StringValue(string(wrappingKey.GetPurpose())) model.Protection = types.StringValue(string(wrappingKey.GetProtection())) - - model.CreatedAt = types.StringNull() - if wrappingKey.CreatedAt != nil { - model.CreatedAt = types.StringValue(wrappingKey.CreatedAt.Format(time.RFC3339)) - } - - model.ExpiresAt = types.StringNull() - if wrappingKey.ExpiresAt != nil { - model.ExpiresAt = types.StringValue(wrappingKey.ExpiresAt.Format(time.RFC3339)) - } - - // TODO: workaround - remove once STACKITKMS-377 is resolved (just write the return value from the API to the state then) - if !(model.Description.IsNull() && wrappingKey.Description != nil && *wrappingKey.Description == "") { - model.Description = types.StringPointerValue(wrappingKey.Description) - } else { - model.Description = types.StringNull() - } + model.CreatedAt = types.StringValue(wrappingKey.CreatedAt.Format(time.RFC3339)) + model.ExpiresAt = types.StringValue(wrappingKey.ExpiresAt.Format(time.RFC3339)) + model.Description = types.StringPointerValue(wrappingKey.Description) return nil } @@ -456,12 +440,18 @@ func toCreatePayload(model *Model) (*kms.CreateWrappingKeyPayload, error) { if model == nil { return nil, fmt.Errorf("nil model") } + + var accessScope *kms.AccessScope + if !utils.IsUndefined(model.AccessScope) { + accessScope = new(kms.AccessScope(model.AccessScope.ValueString())) + } + return &kms.CreateWrappingKeyPayload{ - AccessScope: kms.CreateKeyPayloadGetAccessScopeAttributeType(conversion.StringValueToPointer(model.AccessScope)), - Algorithm: kms.CreateWrappingKeyPayloadGetAlgorithmAttributeType(conversion.StringValueToPointer(model.Algorithm)), + AccessScope: accessScope, + Algorithm: kms.WrappingAlgorithm(model.Algorithm.ValueString()), Description: conversion.StringValueToPointer(model.Description), - DisplayName: conversion.StringValueToPointer(model.DisplayName), - Protection: kms.CreateKeyPayloadGetProtectionAttributeType(conversion.StringValueToPointer(model.Protection)), - Purpose: kms.CreateWrappingKeyPayloadGetPurposeAttributeType(conversion.StringValueToPointer(model.Purpose)), + DisplayName: model.DisplayName.ValueString(), + Protection: kms.Protection(model.Protection.ValueString()), + Purpose: kms.WrappingPurpose(model.Purpose.ValueString()), }, nil } diff --git a/stackit/internal/services/kms/wrapping-key/resource_test.go b/stackit/internal/services/kms/wrapping-key/resource_test.go index bd37f67d3..31762c42a 100644 --- a/stackit/internal/services/kms/wrapping-key/resource_test.go +++ b/stackit/internal/services/kms/wrapping-key/resource_test.go @@ -3,13 +3,13 @@ package kms import ( "fmt" "testing" + "time" "github.com/google/uuid" "github.com/google/go-cmp/cmp" "github.com/hashicorp/terraform-plugin-framework/types" - "github.com/stackitcloud/stackit-sdk-go/core/utils" - "github.com/stackitcloud/stackit-sdk-go/services/kms" + kms "github.com/stackitcloud/stackit-sdk-go/services/kms/v1api" ) var ( @@ -19,6 +19,9 @@ var ( ) func TestMapFields(t *testing.T) { + createdAt := time.Now() + expiresAt := time.Now().Add(time.Hour) + type args struct { state *Model input *kms.WrappingKey @@ -39,26 +42,33 @@ func TestMapFields(t *testing.T) { WrappingKeyId: types.StringValue(wrappingKeyId), }, input: &kms.WrappingKey{ - Id: new("wid"), - AccessScope: utils.Ptr(kms.ACCESSSCOPE_PUBLIC), - Algorithm: utils.Ptr(kms.WRAPPINGALGORITHM__2048_OAEP_SHA256), - Purpose: utils.Ptr(kms.WRAPPINGPURPOSE_ASYMMETRIC_KEY), - Protection: utils.Ptr(kms.PROTECTION_SOFTWARE), + Id: "wid", + DisplayName: "display-name", + AccessScope: kms.ACCESSSCOPE_PUBLIC, + Algorithm: kms.WRAPPINGALGORITHM_RSA_2048_OAEP_SHA256, + Purpose: kms.WRAPPINGPURPOSE_WRAP_ASYMMETRIC_KEY, + Protection: kms.PROTECTION_SOFTWARE, + PublicKey: new("public-key"), + ExpiresAt: expiresAt, + CreatedAt: createdAt, }, region: "eu01", }, expected: &Model{ Description: types.StringNull(), - DisplayName: types.StringNull(), + DisplayName: types.StringValue("display-name"), KeyRingId: types.StringValue(keyRingId), Id: types.StringValue(fmt.Sprintf("%s,eu01,%s,%s", projectId, keyRingId, wrappingKeyId)), ProjectId: types.StringValue(projectId), Region: types.StringValue("eu01"), WrappingKeyId: types.StringValue(wrappingKeyId), AccessScope: types.StringValue(string(kms.ACCESSSCOPE_PUBLIC)), - Algorithm: types.StringValue(string(kms.WRAPPINGALGORITHM__2048_OAEP_SHA256)), - Purpose: types.StringValue(string(kms.WRAPPINGPURPOSE_ASYMMETRIC_KEY)), + Algorithm: types.StringValue(string(kms.WRAPPINGALGORITHM_RSA_2048_OAEP_SHA256)), + Purpose: types.StringValue(string(kms.WRAPPINGPURPOSE_WRAP_ASYMMETRIC_KEY)), Protection: types.StringValue(string(kms.PROTECTION_SOFTWARE)), + PublicKey: types.StringValue("public-key"), + ExpiresAt: types.StringValue(expiresAt.Format(time.RFC3339)), + CreatedAt: types.StringValue(createdAt.Format(time.RFC3339)), }, isValid: true, }, @@ -72,12 +82,15 @@ func TestMapFields(t *testing.T) { }, input: &kms.WrappingKey{ Description: new("descr"), - DisplayName: new("name"), - Id: new(wrappingKeyId), - AccessScope: utils.Ptr(kms.ACCESSSCOPE_PUBLIC), - Algorithm: utils.Ptr(kms.WRAPPINGALGORITHM__2048_OAEP_SHA256), - Purpose: utils.Ptr(kms.WRAPPINGPURPOSE_ASYMMETRIC_KEY), - Protection: utils.Ptr(kms.PROTECTION_SOFTWARE), + DisplayName: "name", + Id: wrappingKeyId, + AccessScope: kms.ACCESSSCOPE_PUBLIC, + Algorithm: kms.WRAPPINGALGORITHM_RSA_2048_OAEP_SHA256, + Purpose: kms.WRAPPINGPURPOSE_WRAP_ASYMMETRIC_KEY, + Protection: kms.PROTECTION_SOFTWARE, + PublicKey: new("public-key"), + ExpiresAt: expiresAt, + CreatedAt: createdAt, }, region: "eu02", }, @@ -90,23 +103,15 @@ func TestMapFields(t *testing.T) { Region: types.StringValue("eu02"), WrappingKeyId: types.StringValue(wrappingKeyId), AccessScope: types.StringValue(string(kms.ACCESSSCOPE_PUBLIC)), - Algorithm: types.StringValue(string(kms.WRAPPINGALGORITHM__2048_OAEP_SHA256)), - Purpose: types.StringValue(string(kms.WRAPPINGPURPOSE_ASYMMETRIC_KEY)), + Algorithm: types.StringValue(string(kms.WRAPPINGALGORITHM_RSA_2048_OAEP_SHA256)), + Purpose: types.StringValue(string(kms.WRAPPINGPURPOSE_WRAP_ASYMMETRIC_KEY)), Protection: types.StringValue(string(kms.PROTECTION_SOFTWARE)), + PublicKey: types.StringValue("public-key"), + ExpiresAt: types.StringValue(expiresAt.Format(time.RFC3339)), + CreatedAt: types.StringValue(createdAt.Format(time.RFC3339)), }, isValid: true, }, - { - description: "nil_response_field", - args: args{ - state: &Model{}, - input: &kms.WrappingKey{ - Id: nil, - }, - }, - expected: &Model{}, - isValid: false, - }, { description: "nil_response", args: args{ @@ -116,51 +121,6 @@ func TestMapFields(t *testing.T) { expected: &Model{}, isValid: false, }, - { - description: "no_resource_id", - args: args{ - state: &Model{ - Region: types.StringValue("eu01"), - ProjectId: types.StringValue("pid"), - }, - input: &kms.WrappingKey{}, - }, - expected: &Model{}, - isValid: false, - }, - { - // TODO: test for workaround - remove once STACKITKMS-377 is resolved - description: "empty description string", - args: args{ - state: &Model{ - KeyRingId: types.StringValue(keyRingId), - ProjectId: types.StringValue(projectId), - WrappingKeyId: types.StringValue(wrappingKeyId), - }, - input: &kms.WrappingKey{ - Description: new(""), - Id: new(wrappingKeyId), - AccessScope: utils.Ptr(kms.ACCESSSCOPE_PUBLIC), - Algorithm: utils.Ptr(kms.WRAPPINGALGORITHM__2048_OAEP_SHA256), - Purpose: utils.Ptr(kms.WRAPPINGPURPOSE_ASYMMETRIC_KEY), - Protection: utils.Ptr(kms.PROTECTION_SOFTWARE), - }, - region: "eu02", - }, - expected: &Model{ - Description: types.StringNull(), - KeyRingId: types.StringValue(keyRingId), - Id: types.StringValue(fmt.Sprintf("%s,eu02,%s,%s", projectId, keyRingId, wrappingKeyId)), - ProjectId: types.StringValue(projectId), - Region: types.StringValue("eu02"), - WrappingKeyId: types.StringValue(wrappingKeyId), - AccessScope: types.StringValue(string(kms.ACCESSSCOPE_PUBLIC)), - Algorithm: types.StringValue(string(kms.WRAPPINGALGORITHM__2048_OAEP_SHA256)), - Purpose: types.StringValue(string(kms.WRAPPINGPURPOSE_ASYMMETRIC_KEY)), - Protection: types.StringValue(string(kms.PROTECTION_SOFTWARE)), - }, - isValid: true, - }, } for _, tt := range tests { t.Run(tt.description, func(t *testing.T) { @@ -201,7 +161,7 @@ func TestToCreatePayload(t *testing.T) { DisplayName: types.StringValue("name"), }, &kms.CreateWrappingKeyPayload{ - DisplayName: new("name"), + DisplayName: "name", }, true, }, @@ -212,7 +172,7 @@ func TestToCreatePayload(t *testing.T) { Description: types.StringValue(""), }, &kms.CreateWrappingKeyPayload{ - DisplayName: new(""), + DisplayName: "", Description: new(""), }, true,