diff --git a/go.mod b/go.mod index fba6a8f05..81da4103c 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/stackitcloud/stackit-sdk-go/services/redis v0.28.1 github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.20.0 github.com/stackitcloud/stackit-sdk-go/services/scf v0.7.0 - github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.14.3 + github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.17.0 github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.3.8 github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.5.0 github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.12.0 diff --git a/go.sum b/go.sum index bc4c63872..3679a9583 100644 --- a/go.sum +++ b/go.sum @@ -718,6 +718,8 @@ github.com/stackitcloud/stackit-sdk-go/services/scf v0.7.0 h1:ip9BODkeeDXB5Y2i5p github.com/stackitcloud/stackit-sdk-go/services/scf v0.7.0/go.mod h1:JuJbNkydnm1OFGiRweiLyOUqR6prSOveJC14b1oG+Ok= github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.14.3 h1:3hZSg3z+4AXa5LbR2Vl38VmSA83ABItE63E53LuyWv8= github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.14.3/go.mod h1:5unx5r0IgeFCtJDEgsWddtgKvYSw442FDNdhtfyJnQI= +github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.17.0 h1:6gDKTxdPzabtJ4cPzNgCgsT2+z8v80DSCx476HqzaXk= +github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.17.0/go.mod h1:vSWUMTsMbtniEo1I+eCsjCOTODR4iproNAeqG3vr/4I= github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.3.8 h1:LLyANBzE8sQa0/49tQBqq4sVLhNgwdqCeQm76srJHWw= github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.3.8/go.mod h1:/bmg57XZu+bGczzcoumrukiGMPGzI2mOyTT4BVIQUBs= github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.5.0 h1:4MYNb3VQjVnVPfJ9xhDbSQgoSkxQZJ0tsv9N7O43/RI= diff --git a/stackit/internal/services/secretsmanager/instance/datasource.go b/stackit/internal/services/secretsmanager/instance/datasource.go index 847ad5d12..63f613b03 100644 --- a/stackit/internal/services/secretsmanager/instance/datasource.go +++ b/stackit/internal/services/secretsmanager/instance/datasource.go @@ -18,7 +18,7 @@ import ( "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/validate" "github.com/hashicorp/terraform-plugin-framework/datasource/schema" - "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api" ) // Ensure the implementation satisfies the expected interfaces. @@ -146,7 +146,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "instance_id", instanceId) - instanceResp, err := r.client.GetInstance(ctx, projectId, instanceId).Execute() + instanceResp, err := r.client.DefaultAPI.GetInstance(ctx, projectId, instanceId).Execute() if err != nil { utils.LogError( ctx, @@ -164,7 +164,7 @@ func (r *instanceDataSource) Read(ctx context.Context, req datasource.ReadReques ctx = core.LogResponse(ctx) - aclList, err := r.client.ListACLs(ctx, projectId, instanceId).Execute() + aclList, err := r.client.DefaultAPI.ListACLs(ctx, projectId, instanceId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API for ACLs data: %v", err)) return diff --git a/stackit/internal/services/secretsmanager/instance/resource.go b/stackit/internal/services/secretsmanager/instance/resource.go index dbf1b07d4..190985313 100644 --- a/stackit/internal/services/secretsmanager/instance/resource.go +++ b/stackit/internal/services/secretsmanager/instance/resource.go @@ -26,7 +26,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" "github.com/stackitcloud/stackit-sdk-go/core/oapierror" - "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api" ) // Ensure the implementation satisfies the expected interfaces. @@ -204,7 +204,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques return } // Create new instance - createResp, err := r.client.CreateInstance(ctx, projectId).CreateInstancePayload(*payload).Execute() + createResp, err := r.client.DefaultAPI.CreateInstance(ctx, projectId).CreateInstancePayload(*payload).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API: %v", err)) return @@ -212,11 +212,11 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques ctx = core.LogResponse(ctx) - if createResp.Id == nil { + if createResp.Id == "" { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", "Got empty instance id") return } - instanceId := *createResp.Id + instanceId := createResp.Id ctx = utils.SetAndLogStateFields(ctx, &resp.Diagnostics, &resp.State, map[string]any{ "project_id": projectId, "instance_id": instanceId, @@ -228,7 +228,7 @@ func (r *instanceResource) Create(ctx context.Context, req resource.CreateReques core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Creating ACLs: %v", err)) return } - aclList, err := r.client.ListACLs(ctx, projectId, instanceId).Execute() + aclList, err := r.client.DefaultAPI.ListACLs(ctx, projectId, instanceId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating instance", fmt.Sprintf("Calling API for ACLs data: %v", err)) return @@ -266,7 +266,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r ctx = tflog.SetField(ctx, "project_id", projectId) ctx = tflog.SetField(ctx, "instance_id", instanceId) - instanceResp, err := r.client.GetInstance(ctx, projectId, instanceId).Execute() + instanceResp, err := r.client.DefaultAPI.GetInstance(ctx, projectId, instanceId).Execute() if err != nil { oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped if ok && oapiErr.StatusCode == http.StatusNotFound { @@ -279,7 +279,7 @@ func (r *instanceResource) Read(ctx context.Context, req resource.ReadRequest, r ctx = core.LogResponse(ctx) - aclList, err := r.client.ListACLs(ctx, projectId, instanceId).Execute() + aclList, err := r.client.DefaultAPI.ListACLs(ctx, projectId, instanceId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading instance", fmt.Sprintf("Calling API for ACLs data: %v", err)) return @@ -324,7 +324,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques return } // Update instance - err = r.client.UpdateInstance(ctx, projectId, instanceId).UpdateInstancePayload(*payload).Execute() + err = r.client.DefaultAPI.UpdateInstance(ctx, projectId, instanceId).UpdateInstancePayload(*payload).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Calling API: %v", err)) return @@ -348,7 +348,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques return } - instanceResp, err := r.client.GetInstance(ctx, projectId, instanceId).Execute() + instanceResp, err := r.client.DefaultAPI.GetInstance(ctx, projectId, instanceId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance acl", fmt.Sprintf("Calling API: %v", err)) return @@ -356,7 +356,7 @@ func (r *instanceResource) Update(ctx context.Context, req resource.UpdateReques ctx = core.LogResponse(ctx) - aclList, err := r.client.ListACLs(ctx, projectId, instanceId).Execute() + aclList, err := r.client.DefaultAPI.ListACLs(ctx, projectId, instanceId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating instance", fmt.Sprintf("Calling API for ACLs data: %v", err)) return @@ -395,7 +395,7 @@ func (r *instanceResource) Delete(ctx context.Context, req resource.DeleteReques ctx = tflog.SetField(ctx, "instance_id", instanceId) // Delete existing instance - err := r.client.DeleteInstance(ctx, projectId, instanceId).Execute() + err := r.client.DefaultAPI.DeleteInstance(ctx, projectId, instanceId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting instance", fmt.Sprintf("Calling API: %v", err)) return @@ -436,22 +436,22 @@ func mapFields(instance *secretsmanager.Instance, aclList *secretsmanager.ListAC var instanceId string if model.InstanceId.ValueString() != "" { instanceId = model.InstanceId.ValueString() - } else if instance.Id != nil { - instanceId = *instance.Id + } else if instance.Id != "" { + instanceId = instance.Id } else { return fmt.Errorf("instance id not present") } model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), instanceId) model.InstanceId = types.StringValue(instanceId) - model.Name = types.StringPointerValue(instance.Name) + model.Name = types.StringValue(instance.Name) if instance.KmsKey != nil { model.KmsKey = &KmsKeyModel{ - KeyId: types.StringPointerValue(instance.KmsKey.KeyId), - KeyRingId: types.StringPointerValue(instance.KmsKey.KeyRingId), - KeyVersion: types.Int64PointerValue(instance.KmsKey.KeyVersion), - ServiceAccountEmail: types.StringPointerValue(instance.KmsKey.ServiceAccountEmail), + KeyId: types.StringValue(instance.KmsKey.KeyId), + KeyRingId: types.StringValue(instance.KmsKey.KeyRingId), + KeyVersion: types.Int64Value(instance.KmsKey.KeyVersion), + ServiceAccountEmail: types.StringValue(instance.KmsKey.ServiceAccountEmail), } } @@ -467,14 +467,14 @@ func mapACLs(aclList *secretsmanager.ListACLsResponse, model *Model) error { if aclList == nil { return fmt.Errorf("nil ACL list") } - if aclList.Acls == nil || len(*aclList.Acls) == 0 { + if len(aclList.Acls) == 0 { model.ACLs = types.SetNull(types.StringType) return nil } acls := []attr.Value{} - for _, acl := range *aclList.Acls { - acls = append(acls, types.StringValue(*acl.Cidr)) + for _, acl := range aclList.Acls { + acls = append(acls, types.StringValue(acl.Cidr)) } aclsList, diags := types.SetValue(types.StringType, acls) if diags.HasError() { @@ -489,15 +489,15 @@ func toCreatePayload(model *Model) (*secretsmanager.CreateInstancePayload, error return nil, fmt.Errorf("nil model") } payload := &secretsmanager.CreateInstancePayload{ - Name: conversion.StringValueToPointer(model.Name), + Name: model.Name.ValueString(), } if model.KmsKey != nil { payload.KmsKey = &secretsmanager.KmsKeyPayload{ - KeyId: conversion.StringValueToPointer(model.KmsKey.KeyId), - KeyRingId: conversion.StringValueToPointer(model.KmsKey.KeyRingId), - KeyVersion: conversion.Int64ValueToPointer(model.KmsKey.KeyVersion), - ServiceAccountEmail: conversion.StringValueToPointer(model.KmsKey.ServiceAccountEmail), + KeyId: model.KmsKey.KeyId.ValueString(), + KeyRingId: model.KmsKey.KeyRingId.ValueString(), + KeyVersion: model.KmsKey.KeyVersion.ValueInt64(), + ServiceAccountEmail: model.KmsKey.ServiceAccountEmail.ValueString(), } } @@ -510,15 +510,15 @@ func toUpdatePayload(model *Model) (*secretsmanager.UpdateInstancePayload, error } payload := &secretsmanager.UpdateInstancePayload{ - Name: conversion.StringValueToPointer(model.Name), + Name: model.Name.ValueString(), } if model.KmsKey != nil { payload.KmsKey = &secretsmanager.KmsKeyPayload{ - KeyId: conversion.StringValueToPointer(model.KmsKey.KeyId), - KeyRingId: conversion.StringValueToPointer(model.KmsKey.KeyRingId), - KeyVersion: conversion.Int64ValueToPointer(model.KmsKey.KeyVersion), - ServiceAccountEmail: conversion.StringValueToPointer(model.KmsKey.ServiceAccountEmail), + KeyId: model.KmsKey.KeyId.ValueString(), + KeyRingId: model.KmsKey.KeyRingId.ValueString(), + KeyVersion: model.KmsKey.KeyVersion.ValueInt64(), + ServiceAccountEmail: model.KmsKey.ServiceAccountEmail.ValueString(), } } @@ -528,7 +528,7 @@ func toUpdatePayload(model *Model) (*secretsmanager.UpdateInstancePayload, error // updateACLs creates and deletes ACLs so that the instance's ACLs are the ones in the model func updateACLs(ctx context.Context, projectId, instanceId string, acls []string, client *secretsmanager.APIClient) error { // Get ACLs current state - currentACLsResp, err := client.ListACLs(ctx, projectId, instanceId).Execute() + currentACLsResp, err := client.DefaultAPI.ListACLs(ctx, projectId, instanceId).Execute() if err != nil { return fmt.Errorf("fetching current ACLs: %w", err) } @@ -544,29 +544,29 @@ func updateACLs(ctx context.Context, projectId, instanceId string, acls []string isInModel: true, } } - for _, acl := range *currentACLsResp.Acls { - cidr := *acl.Cidr + for _, acl := range currentACLsResp.Acls { + cidr := acl.Cidr if _, ok := aclsState[cidr]; !ok { aclsState[cidr] = &aclState{} } aclsState[cidr].isCreated = true - aclsState[cidr].id = *acl.Id + aclsState[cidr].id = acl.Id } // Create/delete ACLs for cidr, state := range aclsState { if state.isInModel && !state.isCreated { payload := secretsmanager.CreateACLPayload{ - Cidr: new(cidr), + Cidr: cidr, } - _, err := client.CreateACL(ctx, projectId, instanceId).CreateACLPayload(payload).Execute() + _, err := client.DefaultAPI.CreateACL(ctx, projectId, instanceId).CreateACLPayload(payload).Execute() if err != nil { return fmt.Errorf("creating ACL '%v': %w", cidr, err) } } if !state.isInModel && state.isCreated { - err := client.DeleteACL(ctx, projectId, instanceId, state.id).Execute() + err := client.DefaultAPI.DeleteACL(ctx, projectId, instanceId, state.id).Execute() if err != nil { return fmt.Errorf("deleting ACL '%v': %w", cidr, err) } diff --git a/stackit/internal/services/secretsmanager/instance/resource_test.go b/stackit/internal/services/secretsmanager/instance/resource_test.go index 764d1fbc9..b3136d571 100644 --- a/stackit/internal/services/secretsmanager/instance/resource_test.go +++ b/stackit/internal/services/secretsmanager/instance/resource_test.go @@ -14,7 +14,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/attr" "github.com/hashicorp/terraform-plugin-framework/types" "github.com/stackitcloud/stackit-sdk-go/core/config" - "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api" ) func TestMapFields(t *testing.T) { @@ -33,7 +33,7 @@ func TestMapFields(t *testing.T) { Id: types.StringValue("pid,iid"), InstanceId: types.StringValue("iid"), ProjectId: types.StringValue("pid"), - Name: types.StringNull(), + Name: types.StringValue(""), ACLs: types.SetNull(types.StringType), }, true, @@ -41,21 +41,21 @@ func TestMapFields(t *testing.T) { { "simple_values", &secretsmanager.Instance{ - Name: new("name"), + Name: "name", }, &secretsmanager.ListACLsResponse{ - Acls: &[]secretsmanager.ACL{ + Acls: []secretsmanager.ACL{ { - Cidr: new("cidr-1"), - Id: new("id-cidr-1"), + Cidr: "cidr-1", + Id: "id-cidr-1", }, { - Cidr: new("cidr-2"), - Id: new("id-cidr-2"), + Cidr: "cidr-2", + Id: "id-cidr-2", }, { - Cidr: new("cidr-3"), - Id: new("id-cidr-3"), + Cidr: "cidr-3", + Id: "id-cidr-3", }, }, }, @@ -136,7 +136,7 @@ func TestToCreatePayload(t *testing.T) { Name: types.StringValue("name"), }, &secretsmanager.CreateInstancePayload{ - Name: new("name"), + Name: "name", }, true, }, @@ -152,12 +152,12 @@ func TestToCreatePayload(t *testing.T) { }, }, &secretsmanager.CreateInstancePayload{ - Name: new("name"), + Name: "name", KmsKey: &secretsmanager.KmsKeyPayload{ - KeyId: new("kid"), - KeyRingId: new("key-ring-id"), - KeyVersion: new(int64(1)), - ServiceAccountEmail: new("service-account-email"), + KeyId: "kid", + KeyRingId: "key-ring-id", + KeyVersion: int64(1), + ServiceAccountEmail: "service-account-email", }, }, true, @@ -168,7 +168,7 @@ func TestToCreatePayload(t *testing.T) { Name: types.StringValue(""), }, &secretsmanager.CreateInstancePayload{ - Name: new(""), + Name: "", }, true, }, @@ -201,22 +201,22 @@ func TestToCreatePayload(t *testing.T) { func TestUpdateACLs(t *testing.T) { // This is the response used when getting all ACLs currently, across all tests getAllACLsResp := secretsmanager.ListACLsResponse{ - Acls: &[]secretsmanager.ACL{ + Acls: []secretsmanager.ACL{ { - Cidr: new("acl-1"), - Id: new("id-acl-1"), + Cidr: "acl-1", + Id: "id-acl-1", }, { - Cidr: new("acl-2"), - Id: new("id-acl-2"), + Cidr: "acl-2", + Id: "id-acl-2", }, { - Cidr: new("acl-3"), - Id: new("id-acl-3"), + Cidr: "acl-3", + Id: "id-acl-3", }, { - Cidr: new("acl-2"), - Id: new("id-acl-2-repeated"), + Cidr: "acl-2", + Id: "id-acl-2-repeated", }, }, } @@ -392,13 +392,13 @@ func TestUpdateACLs(t *testing.T) { t.Errorf("Create ACL handler: failed to parse payload") return } - if payload.Cidr == nil { + if payload.Cidr == "" { t.Errorf("Create ACL handler: nil CIDR") return } - cidr := *payload.Cidr + cidr := payload.Cidr if cidrExists, cidrWasCreated := aclsStates[cidr]; cidrWasCreated && cidrExists { - t.Errorf("Create ACL handler: attempted to create CIDR '%v' that already exists", *payload.Cidr) + t.Errorf("Create ACL handler: attempted to create CIDR '%v' that already exists", payload.Cidr) return } @@ -413,8 +413,8 @@ func TestUpdateACLs(t *testing.T) { } resp := secretsmanager.ACL{ - Cidr: new(cidr), - Id: new(fmt.Sprintf("id-%s", cidr)), + Cidr: cidr, + Id: fmt.Sprintf("id-%s", cidr), } respBytes, err := json.Marshal(resp) if err != nil { @@ -527,7 +527,7 @@ func TestToUpdatePayload(t *testing.T) { Name: types.StringValue("name"), }, &secretsmanager.UpdateInstancePayload{ - Name: new("name"), + Name: "name", }, true, }, @@ -543,12 +543,12 @@ func TestToUpdatePayload(t *testing.T) { }, }, &secretsmanager.UpdateInstancePayload{ - Name: new("name"), + Name: "name", KmsKey: &secretsmanager.KmsKeyPayload{ - KeyId: new("kid"), - KeyRingId: new("key-ring-id"), - KeyVersion: new(int64(1)), - ServiceAccountEmail: new("service-account-email"), + KeyId: "kid", + KeyRingId: "key-ring-id", + KeyVersion: int64(1), + ServiceAccountEmail: "service-account-email", }, }, true, @@ -559,7 +559,7 @@ func TestToUpdatePayload(t *testing.T) { Name: types.StringValue(""), }, &secretsmanager.UpdateInstancePayload{ - Name: new(""), + Name: "", }, true, }, diff --git a/stackit/internal/services/secretsmanager/secretsmanager_acc_test.go b/stackit/internal/services/secretsmanager/secretsmanager_acc_test.go index bcff49f0a..8257265e4 100644 --- a/stackit/internal/services/secretsmanager/secretsmanager_acc_test.go +++ b/stackit/internal/services/secretsmanager/secretsmanager_acc_test.go @@ -15,7 +15,7 @@ import ( "github.com/hashicorp/terraform-plugin-testing/plancheck" "github.com/hashicorp/terraform-plugin-testing/terraform" "github.com/stackitcloud/stackit-sdk-go/core/utils" - "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/testutil" @@ -465,20 +465,20 @@ func testAccCheckSecretsManagerDestroy(s *terraform.State) error { instancesToDestroy = append(instancesToDestroy, instanceId) } - instancesResp, err := client.ListInstances(ctx, testutil.ProjectId).Execute() + instancesResp, err := client.DefaultAPI.ListInstances(ctx, testutil.ProjectId).Execute() if err != nil { return fmt.Errorf("getting instancesResp: %w", err) } - instances := *instancesResp.Instances + instances := instancesResp.Instances for i := range instances { - if instances[i].Id == nil { + if instances[i].Id == "" { continue } - if utils.Contains(instancesToDestroy, *instances[i].Id) { - err := client.DeleteInstanceExecute(ctx, testutil.ProjectId, *instances[i].Id) + if utils.Contains(instancesToDestroy, instances[i].Id) { + err := client.DefaultAPI.DeleteInstance(ctx, testutil.ProjectId, instances[i].Id).Execute() if err != nil { - return fmt.Errorf("destroying instance %s during CheckDestroy: %w", *instances[i].Id, err) + return fmt.Errorf("destroying instance %s during CheckDestroy: %w", instances[i].Id, err) } } } diff --git a/stackit/internal/services/secretsmanager/user/datasource.go b/stackit/internal/services/secretsmanager/user/datasource.go index 0e3eba0f8..2064f9dc0 100644 --- a/stackit/internal/services/secretsmanager/user/datasource.go +++ b/stackit/internal/services/secretsmanager/user/datasource.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/datasource/schema" "github.com/hashicorp/terraform-plugin-framework/types" - "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api" ) // Ensure the implementation satisfies the expected interfaces. @@ -144,7 +144,7 @@ func (r *userDataSource) Read(ctx context.Context, req datasource.ReadRequest, r ctx = tflog.SetField(ctx, "instance_id", instanceId) ctx = tflog.SetField(ctx, "user_id", userId) - userResp, err := r.client.GetUser(ctx, projectId, instanceId, userId).Execute() + userResp, err := r.client.DefaultAPI.GetUser(ctx, projectId, instanceId, userId).Execute() if err != nil { utils.LogError( ctx, @@ -189,16 +189,16 @@ func mapDataSourceFields(user *secretsmanager.User, model *DataSourceModel) erro var userId string if model.UserId.ValueString() != "" { userId = model.UserId.ValueString() - } else if user.Id != nil { - userId = *user.Id + } else if user.Id != "" { + userId = user.Id } else { return fmt.Errorf("user id not present") } model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), model.InstanceId.ValueString(), userId) model.UserId = types.StringValue(userId) - model.Description = types.StringPointerValue(user.Description) - model.WriteEnabled = types.BoolPointerValue(user.Write) - model.Username = types.StringPointerValue(user.Username) + model.Description = types.StringValue(user.Description) + model.WriteEnabled = types.BoolValue(user.Write) + model.Username = types.StringValue(user.Username) return nil } diff --git a/stackit/internal/services/secretsmanager/user/datasource_test.go b/stackit/internal/services/secretsmanager/user/datasource_test.go index 0728d432c..6f965657b 100644 --- a/stackit/internal/services/secretsmanager/user/datasource_test.go +++ b/stackit/internal/services/secretsmanager/user/datasource_test.go @@ -5,7 +5,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/hashicorp/terraform-plugin-framework/types" - "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api" ) func TestMapDataSourceFields(t *testing.T) { @@ -18,26 +18,26 @@ func TestMapDataSourceFields(t *testing.T) { { "default_values", &secretsmanager.User{ - Id: new("uid"), + Id: "uid", }, DataSourceModel{ Id: types.StringValue("pid,iid,uid"), UserId: types.StringValue("uid"), InstanceId: types.StringValue("iid"), ProjectId: types.StringValue("pid"), - Description: types.StringNull(), - WriteEnabled: types.BoolNull(), - Username: types.StringNull(), + Description: types.StringValue(""), + WriteEnabled: types.BoolValue(false), + Username: types.StringValue(""), }, true, }, { "simple_values", &secretsmanager.User{ - Id: new("uid"), - Description: new("description"), - Write: new(false), - Username: new("username"), + Id: "uid", + Description: "description", + Write: false, + Username: "username", }, DataSourceModel{ Id: types.StringValue("pid,iid,uid"), diff --git a/stackit/internal/services/secretsmanager/user/resource.go b/stackit/internal/services/secretsmanager/user/resource.go index 976396f6c..0cc10e381 100644 --- a/stackit/internal/services/secretsmanager/user/resource.go +++ b/stackit/internal/services/secretsmanager/user/resource.go @@ -23,7 +23,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" "github.com/hashicorp/terraform-plugin-framework/types" "github.com/stackitcloud/stackit-sdk-go/core/oapierror" - "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api" ) // Ensure the implementation satisfies the expected interfaces. @@ -178,7 +178,7 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r return } // Create new user - userResp, err := r.client.CreateUser(ctx, projectId, instanceId).CreateUserPayload(*payload).Execute() + userResp, err := r.client.DefaultAPI.CreateUser(ctx, projectId, instanceId).CreateUserPayload(*payload).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", fmt.Sprintf("Calling API: %v", err)) return @@ -186,11 +186,11 @@ func (r *userResource) Create(ctx context.Context, req resource.CreateRequest, r ctx = core.LogResponse(ctx) - if userResp.Id == nil { + if userResp.Id == "" { core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating user", "Got empty user id") return } - userId := *userResp.Id + userId := userResp.Id ctx = utils.SetAndLogStateFields(ctx, &resp.Diagnostics, &resp.State, map[string]any{ "project_id": projectId, "instance_id": instanceId, @@ -229,7 +229,7 @@ func (r *userResource) Read(ctx context.Context, req resource.ReadRequest, resp ctx = tflog.SetField(ctx, "instance_id", instanceId) ctx = tflog.SetField(ctx, "user_id", userId) - userResp, err := r.client.GetUser(ctx, projectId, instanceId, userId).Execute() + userResp, err := r.client.DefaultAPI.GetUser(ctx, projectId, instanceId, userId).Execute() if err != nil { oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped if ok && oapiErr.StatusCode == http.StatusNotFound { @@ -284,7 +284,7 @@ func (r *userResource) Update(ctx context.Context, req resource.UpdateRequest, r return } // Update existing user - err = r.client.UpdateUser(ctx, projectId, instanceId, userId).UpdateUserPayload(*payload).Execute() + err = r.client.DefaultAPI.UpdateUser(ctx, projectId, instanceId, userId).UpdateUserPayload(*payload).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating user", err.Error()) return @@ -292,7 +292,7 @@ func (r *userResource) Update(ctx context.Context, req resource.UpdateRequest, r ctx = core.LogResponse(ctx) - user, err := r.client.GetUser(ctx, projectId, instanceId, userId).Execute() + user, err := r.client.DefaultAPI.GetUser(ctx, projectId, instanceId, userId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating user", fmt.Sprintf("Calling API to get user's current state: %v", err)) return @@ -337,7 +337,7 @@ func (r *userResource) Delete(ctx context.Context, req resource.DeleteRequest, r ctx = tflog.SetField(ctx, "user_id", userId) // Delete existing user - err := r.client.DeleteUser(ctx, projectId, instanceId, userId).Execute() + err := r.client.DefaultAPI.DeleteUser(ctx, projectId, instanceId, userId).Execute() if err != nil { core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting user", fmt.Sprintf("Calling API: %v", err)) } @@ -375,8 +375,8 @@ func toCreatePayload(model *Model) (*secretsmanager.CreateUserPayload, error) { return nil, fmt.Errorf("nil model") } return &secretsmanager.CreateUserPayload{ - Description: conversion.StringValueToPointer(model.Description), - Write: conversion.BoolValueToPointer(model.WriteEnabled), + Description: model.Description.ValueString(), + Write: model.WriteEnabled.ValueBool(), }, nil } @@ -400,20 +400,20 @@ func mapFields(user *secretsmanager.User, model *Model) error { var userId string if model.UserId.ValueString() != "" { userId = model.UserId.ValueString() - } else if user.Id != nil { - userId = *user.Id + } else if user.Id != "" { + userId = user.Id } else { return fmt.Errorf("user id not present") } model.Id = utils.BuildInternalTerraformId(model.ProjectId.ValueString(), model.InstanceId.ValueString(), userId) model.UserId = types.StringValue(userId) - model.Description = types.StringPointerValue(user.Description) - model.WriteEnabled = types.BoolPointerValue(user.Write) - model.Username = types.StringPointerValue(user.Username) + model.Description = types.StringValue(user.Description) + model.WriteEnabled = types.BoolValue(user.Write) + model.Username = types.StringValue(user.Username) // Password only sent in creation response, responses after that have it as "" - if user.Password != nil && *user.Password != "" { - model.Password = types.StringPointerValue(user.Password) + if user.Password != "" { + model.Password = types.StringValue(user.Password) } return nil } diff --git a/stackit/internal/services/secretsmanager/user/resource_test.go b/stackit/internal/services/secretsmanager/user/resource_test.go index d325bfdc2..3ca8fdaa9 100644 --- a/stackit/internal/services/secretsmanager/user/resource_test.go +++ b/stackit/internal/services/secretsmanager/user/resource_test.go @@ -5,7 +5,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/hashicorp/terraform-plugin-framework/types" - "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api" ) func TestMapFields(t *testing.T) { @@ -19,7 +19,7 @@ func TestMapFields(t *testing.T) { { "default_values", &secretsmanager.User{ - Id: new("uid"), + Id: "uid", }, nil, Model{ @@ -27,9 +27,9 @@ func TestMapFields(t *testing.T) { UserId: types.StringValue("uid"), InstanceId: types.StringValue("iid"), ProjectId: types.StringValue("pid"), - Description: types.StringNull(), - WriteEnabled: types.BoolNull(), - Username: types.StringNull(), + Description: types.StringValue(""), + WriteEnabled: types.BoolValue(false), + Username: types.StringValue(""), Password: types.StringNull(), }, true, @@ -37,11 +37,11 @@ func TestMapFields(t *testing.T) { { "simple_values", &secretsmanager.User{ - Id: new("uid"), - Description: new("description"), - Write: new(false), - Username: new("username"), - Password: new("password"), + Id: "uid", + Description: "description", + Write: false, + Username: "username", + Password: "password", }, nil, Model{ @@ -73,10 +73,10 @@ func TestMapFields(t *testing.T) { { "no_password_in_response_1", &secretsmanager.User{ - Id: new("uid"), - Description: new("description"), - Write: new(false), - Username: new("username"), + Id: "uid", + Description: "description", + Write: false, + Username: "username", }, new("password"), Model{ @@ -94,11 +94,11 @@ func TestMapFields(t *testing.T) { { "no_password_in_response_2", &secretsmanager.User{ - Id: new("uid"), - Description: new("description"), - Write: new(false), - Username: new("username"), - Password: new(""), + Id: "uid", + Description: "description", + Write: false, + Username: "username", + Password: "", }, new("password"), Model{ @@ -151,8 +151,8 @@ func TestToCreatePayload(t *testing.T) { "default_values", &Model{}, &secretsmanager.CreateUserPayload{ - Description: nil, - Write: nil, + Description: "", + Write: false, }, true, }, @@ -163,8 +163,8 @@ func TestToCreatePayload(t *testing.T) { WriteEnabled: types.BoolValue(false), }, &secretsmanager.CreateUserPayload{ - Description: new("description"), - Write: new(false), + Description: "description", + Write: false, }, true, }, @@ -175,8 +175,8 @@ func TestToCreatePayload(t *testing.T) { WriteEnabled: types.BoolNull(), }, &secretsmanager.CreateUserPayload{ - Description: nil, - Write: nil, + Description: "", + Write: false, }, true, }, @@ -187,8 +187,8 @@ func TestToCreatePayload(t *testing.T) { WriteEnabled: types.BoolNull(), }, &secretsmanager.CreateUserPayload{ - Description: new(""), - Write: nil, + Description: "", + Write: false, }, true, }, diff --git a/stackit/internal/services/secretsmanager/utils/util.go b/stackit/internal/services/secretsmanager/utils/util.go index 378f53cb1..dd9d2fa96 100644 --- a/stackit/internal/services/secretsmanager/utils/util.go +++ b/stackit/internal/services/secretsmanager/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/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/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/secretsmanager/utils/util_test.go b/stackit/internal/services/secretsmanager/utils/util_test.go index 33f89d102..dc3866669 100644 --- a/stackit/internal/services/secretsmanager/utils/util_test.go +++ b/stackit/internal/services/secretsmanager/utils/util_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/diag" sdkClients "github.com/stackitcloud/stackit-sdk-go/core/clients" "github.com/stackitcloud/stackit-sdk-go/core/config" - "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager" + secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"