Skip to content

Commit 49c9394

Browse files
SDK migration Secrets-Manager (#1454)
* chore(secretsmanager): SDK migration * refactor(secretsmanager): PR feedback Relates to STACKITCLI-377
1 parent ca535dd commit 49c9394

25 files changed

Lines changed: 258 additions & 225 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ require (
3030
github.com/stackitcloud/stackit-sdk-go/services/postgresflex v1.3.5
3131
github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.24.0
3232
github.com/stackitcloud/stackit-sdk-go/services/runcommand v1.4.3
33-
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.14.3
33+
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.18.1
3434
github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.3.8
3535
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.2.6
3636
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.12.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,8 @@ github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.24.0 h1:JPP6a
640640
github.com/stackitcloud/stackit-sdk-go/services/resourcemanager v0.24.0/go.mod h1:NEz3f+GV5G++BE9/MmZCsXJyCih7jtg0pZuSyG2sLEs=
641641
github.com/stackitcloud/stackit-sdk-go/services/runcommand v1.4.3 h1:AiGNJmpQ/f9cglaIQQ4SyePbtCI3K1DQLNvqVN9jKSo=
642642
github.com/stackitcloud/stackit-sdk-go/services/runcommand v1.4.3/go.mod h1:U/q0V89fvCF2O1ZJfi68/Chie9YY/5s7xBHI1Klq7wA=
643-
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.14.3 h1:3hZSg3z+4AXa5LbR2Vl38VmSA83ABItE63E53LuyWv8=
644-
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.14.3/go.mod h1:5unx5r0IgeFCtJDEgsWddtgKvYSw442FDNdhtfyJnQI=
643+
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.18.1 h1:U5rstX5e6Am2t+Ukv5K1Sbftzxt5aFALMa9YS4jCJoo=
644+
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.18.1/go.mod h1:2XA8PE05Qg6BL2YXO4XgfGI9qskJ3cicLE5Qq0aqDdY=
645645
github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.3.8 h1:LLyANBzE8sQa0/49tQBqq4sVLhNgwdqCeQm76srJHWw=
646646
github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.3.8/go.mod h1:/bmg57XZu+bGczzcoumrukiGMPGzI2mOyTT4BVIQUBs=
647647
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.2.6 h1:sQ3fdtUjgIL2Ul8nRYVVacHOwi5aSMTGGbYVL30oQBU=

internal/cmd/secrets-manager/instance/create/create.go

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66

77
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
88

9-
"github.com/stackitcloud/stackit-sdk-go/services/secretsmanager"
9+
secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api"
1010

1111
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
1212
cliErr "github.com/stackitcloud/stackit-cli/internal/pkg/errors"
@@ -16,7 +16,6 @@ import (
1616
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1717
"github.com/stackitcloud/stackit-cli/internal/pkg/projectname"
1818
"github.com/stackitcloud/stackit-cli/internal/pkg/services/secrets-manager/client"
19-
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
2019

2120
"github.com/spf13/cobra"
2221
)
@@ -34,7 +33,7 @@ const (
3433
type inputModel struct {
3534
*globalflags.GlobalFlagModel
3635

37-
InstanceName *string
36+
InstanceName string
3837
Acls *[]string
3938

4039
KmsKeyId *string
@@ -92,7 +91,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
9291
if err != nil {
9392
return fmt.Errorf("create Secrets Manager instance: %w", err)
9493
}
95-
instanceId := *resp.Id
94+
instanceId := resp.Id
9695

9796
// Call API to create ACLs for instance, if ACLs are provided
9897
if model.Acls != nil {
@@ -136,7 +135,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
136135

137136
model := inputModel{
138137
GlobalFlagModel: globalFlags,
139-
InstanceName: flags.FlagToStringPointer(p, cmd, instanceNameFlag),
138+
InstanceName: flags.FlagToStringValue(p, cmd, instanceNameFlag),
140139
Acls: flags.FlagToStringSlicePointer(p, cmd, aclFlag),
141140
KmsKeyId: flags.FlagToStringPointer(p, cmd, kmsKeyIdFlag),
142141
KmsKeyringId: flags.FlagToStringPointer(p, cmd, kmsKeyringIdFlag),
@@ -149,18 +148,18 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
149148
}
150149

151150
func buildCreateInstanceRequest(ctx context.Context, model *inputModel, apiClient *secretsmanager.APIClient) secretsmanager.ApiCreateInstanceRequest {
152-
req := apiClient.CreateInstance(ctx, model.ProjectId)
151+
req := apiClient.DefaultAPI.CreateInstance(ctx, model.ProjectId)
153152

154153
payload := secretsmanager.CreateInstancePayload{
155154
Name: model.InstanceName,
156155
}
157156

158-
if model.KmsKeyId != nil {
157+
if model.KmsKeyId != nil && model.KmsKeyringId != nil && model.KmsKeyVersion != nil && model.KmsServiceAccountEmail != nil {
159158
payload.KmsKey = &secretsmanager.KmsKeyPayload{
160-
KeyId: model.KmsKeyId,
161-
KeyRingId: model.KmsKeyringId,
162-
KeyVersion: model.KmsKeyVersion,
163-
ServiceAccountEmail: model.KmsServiceAccountEmail,
159+
KeyId: *model.KmsKeyId,
160+
KeyRingId: *model.KmsKeyringId,
161+
KeyVersion: *model.KmsKeyVersion,
162+
ServiceAccountEmail: *model.KmsServiceAccountEmail,
164163
}
165164
}
166165

@@ -170,15 +169,15 @@ func buildCreateInstanceRequest(ctx context.Context, model *inputModel, apiClien
170169
}
171170

172171
func buildUpdateACLsRequest(ctx context.Context, model *inputModel, instanceId string, apiClient *secretsmanager.APIClient) secretsmanager.ApiUpdateACLsRequest {
173-
req := apiClient.UpdateACLs(ctx, model.ProjectId, instanceId)
172+
req := apiClient.DefaultAPI.UpdateACLs(ctx, model.ProjectId, instanceId)
174173

175174
cidrs := make([]secretsmanager.UpdateACLPayload, len(*model.Acls))
176175

177176
for i, acl := range *model.Acls {
178-
cidrs[i] = secretsmanager.UpdateACLPayload{Cidr: utils.Ptr(acl)}
177+
cidrs[i] = secretsmanager.UpdateACLPayload{Cidr: acl}
179178
}
180179

181-
req = req.UpdateACLsPayload(secretsmanager.UpdateACLsPayload{Cidrs: &cidrs})
180+
req = req.UpdateACLsPayload(secretsmanager.UpdateACLsPayload{Cidrs: cidrs})
182181

183182
return req
184183
}

internal/cmd/secrets-manager/instance/create/create_test.go

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"github.com/google/go-cmp/cmp"
88
"github.com/google/go-cmp/cmp/cmpopts"
99
"github.com/google/uuid"
10-
"github.com/stackitcloud/stackit-sdk-go/services/secretsmanager"
10+
secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api"
1111

1212
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/testparams"
@@ -20,7 +20,9 @@ var projectIdFlag = globalflags.ProjectIdFlag
2020
type testCtxKey struct{}
2121

2222
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
23-
var testClient = &secretsmanager.APIClient{}
23+
var testClient = &secretsmanager.APIClient{
24+
DefaultAPI: secretsmanager.DefaultAPIServiceMock{},
25+
}
2426
var testProjectId = uuid.NewString()
2527
var testInstanceId = uuid.NewString()
2628

@@ -49,7 +51,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
4951
ProjectId: testProjectId,
5052
Verbosity: globalflags.VerbosityDefault,
5153
},
52-
InstanceName: utils.Ptr("example"),
54+
InstanceName: "example",
5355
Acls: utils.Ptr([]string{"198.51.100.14/24"}),
5456
}
5557
for _, mod := range mods {
@@ -59,9 +61,9 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
5961
}
6062

6163
func fixtureRequest(mods ...func(request *secretsmanager.ApiCreateInstanceRequest)) secretsmanager.ApiCreateInstanceRequest {
62-
request := testClient.CreateInstance(testCtx, testProjectId)
64+
request := testClient.DefaultAPI.CreateInstance(testCtx, testProjectId)
6365
request = request.CreateInstancePayload(secretsmanager.CreateInstancePayload{
64-
Name: utils.Ptr("example"),
66+
Name: "example",
6567
})
6668
for _, mod := range mods {
6769
mod(&request)
@@ -70,11 +72,11 @@ func fixtureRequest(mods ...func(request *secretsmanager.ApiCreateInstanceReques
7072
}
7173

7274
func fixtureUpdateACLsRequest(mods ...func(request *secretsmanager.ApiUpdateACLsRequest)) secretsmanager.ApiUpdateACLsRequest {
73-
request := testClient.UpdateACLs(testCtx, testProjectId, testInstanceId)
75+
request := testClient.DefaultAPI.UpdateACLs(testCtx, testProjectId, testInstanceId)
7476
request = request.UpdateACLsPayload(secretsmanager.UpdateACLsPayload{
75-
Cidrs: utils.Ptr([]secretsmanager.UpdateACLPayload{
76-
{Cidr: utils.Ptr("198.51.100.14/24")},
77-
})})
77+
Cidrs: []secretsmanager.UpdateACLPayload{
78+
{Cidr: "198.51.100.14/24"},
79+
}})
7880

7981
for _, mod := range mods {
8082
mod(&request)
@@ -115,7 +117,7 @@ func TestParseInput(t *testing.T) {
115117
ProjectId: testProjectId,
116118
Verbosity: globalflags.VerbosityDefault,
117119
},
118-
InstanceName: utils.Ptr(""),
120+
InstanceName: "",
119121
Acls: &[]string{},
120122
},
121123
},
@@ -240,15 +242,15 @@ func TestBuildCreateInstanceRequest(t *testing.T) {
240242
}),
241243
expectedRequest: fixtureRequest(func(request *secretsmanager.ApiCreateInstanceRequest) {
242244
payload := secretsmanager.CreateInstancePayload{
243-
Name: utils.Ptr("example"),
245+
Name: "example",
244246
KmsKey: &secretsmanager.KmsKeyPayload{
245-
KeyId: utils.Ptr(testKmsKeyId),
246-
KeyRingId: utils.Ptr(testKmsKeyringId),
247-
KeyVersion: utils.Ptr(testKmsKeyVersion),
248-
ServiceAccountEmail: utils.Ptr(testKmsServiceAccountEmail),
247+
KeyId: testKmsKeyId,
248+
KeyRingId: testKmsKeyringId,
249+
KeyVersion: testKmsKeyVersion,
250+
ServiceAccountEmail: testKmsServiceAccountEmail,
249251
},
250252
}
251-
*request = (*request).CreateInstancePayload(payload)
253+
*request = request.CreateInstancePayload(payload)
252254
}),
253255
},
254256
}
@@ -284,10 +286,10 @@ func TestBuildCreateACLRequests(t *testing.T) {
284286
*model.Acls = append(*model.Acls, "1.2.3.4/32")
285287
}),
286288
expectedRequest: fixtureUpdateACLsRequest().UpdateACLsPayload(secretsmanager.UpdateACLsPayload{
287-
Cidrs: utils.Ptr([]secretsmanager.UpdateACLPayload{
288-
{Cidr: utils.Ptr("198.51.100.14/24")},
289-
{Cidr: utils.Ptr("1.2.3.4/32")},
290-
})}),
289+
Cidrs: []secretsmanager.UpdateACLPayload{
290+
{Cidr: "198.51.100.14/24"},
291+
{Cidr: "1.2.3.4/32"},
292+
}}),
291293
},
292294
}
293295

internal/cmd/secrets-manager/instance/delete/delete.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
88

99
"github.com/spf13/cobra"
10-
"github.com/stackitcloud/stackit-sdk-go/services/secretsmanager"
10+
secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api"
1111

1212
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
@@ -52,7 +52,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
5252
return err
5353
}
5454

55-
instanceLabel, err := secretsmanagerUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId)
55+
instanceLabel, err := secretsmanagerUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId)
5656
if err != nil {
5757
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
5858
instanceLabel = model.InstanceId
@@ -96,6 +96,6 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
9696
}
9797

9898
func buildRequest(ctx context.Context, model *inputModel, apiClient *secretsmanager.APIClient) secretsmanager.ApiDeleteInstanceRequest {
99-
req := apiClient.DeleteInstance(ctx, model.ProjectId, model.InstanceId)
99+
req := apiClient.DefaultAPI.DeleteInstance(ctx, model.ProjectId, model.InstanceId)
100100
return req
101101
}

internal/cmd/secrets-manager/instance/delete/delete_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,17 @@ import (
1010
"github.com/google/go-cmp/cmp"
1111
"github.com/google/go-cmp/cmp/cmpopts"
1212
"github.com/google/uuid"
13-
"github.com/stackitcloud/stackit-sdk-go/services/secretsmanager"
13+
secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api"
1414
)
1515

1616
var projectIdFlag = globalflags.ProjectIdFlag
1717

1818
type testCtxKey struct{}
1919

2020
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
21-
var testClient = &secretsmanager.APIClient{}
21+
var testClient = &secretsmanager.APIClient{
22+
DefaultAPI: secretsmanager.DefaultAPIServiceMock{},
23+
}
2224
var testProjectId = uuid.NewString()
2325
var testInstanceId = uuid.NewString()
2426

@@ -57,7 +59,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
5759
}
5860

5961
func fixtureRequest(mods ...func(request *secretsmanager.ApiDeleteInstanceRequest)) secretsmanager.ApiDeleteInstanceRequest {
60-
request := testClient.DeleteInstance(testCtx, testProjectId, testInstanceId)
62+
request := testClient.DefaultAPI.DeleteInstance(testCtx, testProjectId, testInstanceId)
6163
for _, mod := range mods {
6264
mod(&request)
6365
}

internal/cmd/secrets-manager/instance/describe/describe.go

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
1818

1919
"github.com/spf13/cobra"
20-
"github.com/stackitcloud/stackit-sdk-go/services/secretsmanager"
20+
secretsmanager "github.com/stackitcloud/stackit-sdk-go/services/secretsmanager/v1api"
2121
)
2222

2323
const (
@@ -93,12 +93,12 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
9393
}
9494

9595
func buildGetInstanceRequest(ctx context.Context, model *inputModel, apiClient *secretsmanager.APIClient) secretsmanager.ApiGetInstanceRequest {
96-
req := apiClient.GetInstance(ctx, model.ProjectId, model.InstanceId)
96+
req := apiClient.DefaultAPI.GetInstance(ctx, model.ProjectId, model.InstanceId)
9797
return req
9898
}
9999

100100
func buildListACLsRequest(ctx context.Context, model *inputModel, apiClient *secretsmanager.APIClient) secretsmanager.ApiListACLsRequest {
101-
req := apiClient.ListACLs(ctx, model.ProjectId, model.InstanceId)
101+
req := apiClient.DefaultAPI.ListACLs(ctx, model.ProjectId, model.InstanceId)
102102
return req
103103
}
104104

@@ -116,38 +116,37 @@ func outputResult(p *print.Printer, outputFormat string, instance *secretsmanage
116116

117117
return p.OutputResult(outputFormat, output, func() error {
118118
table := tables.NewTable()
119-
table.AddRow("ID", utils.PtrString(instance.Id))
119+
table.AddRow("ID", instance.Id)
120120
table.AddSeparator()
121-
table.AddRow("NAME", utils.PtrString(instance.Name))
121+
table.AddRow("NAME", instance.Name)
122122
table.AddSeparator()
123-
table.AddRow("STATE", utils.PtrString(instance.State))
123+
table.AddRow("STATE", instance.State)
124124
table.AddSeparator()
125-
table.AddRow("SECRETS", utils.PtrString(instance.SecretCount))
125+
table.AddRow("SECRETS", instance.SecretCount)
126126
table.AddSeparator()
127-
table.AddRow("ENGINE", utils.PtrString(instance.SecretsEngine))
127+
table.AddRow("ENGINE", instance.SecretsEngine)
128128
table.AddSeparator()
129-
table.AddRow("CREATION DATE", utils.PtrString(instance.CreationStartDate))
129+
table.AddRow("CREATION DATE", instance.CreationStartDate)
130130
table.AddSeparator()
131131
kmsKey := instance.KmsKey
132-
showKms := kmsKey != nil && (kmsKey.KeyId != nil || kmsKey.KeyRingId != nil || kmsKey.KeyVersion != nil || kmsKey.ServiceAccountEmail != nil)
133-
if showKms {
134-
table.AddRow("KMS KEY ID", utils.PtrString(kmsKey.KeyId))
132+
if kmsKey != nil {
133+
table.AddRow("KMS KEY ID", kmsKey.KeyId)
135134
table.AddSeparator()
136-
table.AddRow("KMS KEYRING ID", utils.PtrString(kmsKey.KeyRingId))
135+
table.AddRow("KMS KEYRING ID", kmsKey.KeyRingId)
137136
table.AddSeparator()
138-
table.AddRow("KMS KEY VERSION", utils.PtrString(kmsKey.KeyVersion))
137+
table.AddRow("KMS KEY VERSION", kmsKey.KeyVersion)
139138
table.AddSeparator()
140-
table.AddRow("KMS SERVICE ACCOUNT EMAIL", utils.PtrString(kmsKey.ServiceAccountEmail))
139+
table.AddRow("KMS SERVICE ACCOUNT EMAIL", kmsKey.ServiceAccountEmail)
141140
}
142141
// Only show ACL if it's present and not empty
143-
if aclList.Acls != nil && len(*aclList.Acls) > 0 {
142+
if len(aclList.Acls) > 0 {
144143
var cidrs []string
145144

146-
for _, acl := range *aclList.Acls {
147-
cidrs = append(cidrs, *acl.Cidr)
145+
for _, acl := range aclList.Acls {
146+
cidrs = append(cidrs, acl.Cidr)
148147
}
149148

150-
if showKms {
149+
if kmsKey != nil {
151150
table.AddSeparator()
152151
}
153152
table.AddRow("ACL", strings.Join(cidrs, ","))

0 commit comments

Comments
 (0)