Skip to content

Commit 317e9cb

Browse files
s-interrubenhoenle
authored andcommitted
feat(secrets-manager): implement request building with KMS key
1 parent a8dcff8 commit 317e9cb

File tree

2 files changed

+46
-6
lines changed

2 files changed

+46
-6
lines changed

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,20 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
147147
func buildCreateInstanceRequest(ctx context.Context, model *inputModel, apiClient *secretsmanager.APIClient) secretsmanager.ApiCreateInstanceRequest {
148148
req := apiClient.CreateInstance(ctx, model.ProjectId)
149149

150-
req = req.CreateInstancePayload(secretsmanager.CreateInstancePayload{
150+
payload := secretsmanager.CreateInstancePayload{
151151
Name: model.InstanceName,
152-
// TODO: Add KMS config here when implementing API integration
153-
})
152+
}
153+
154+
if model.KmsKeyId != nil {
155+
payload.KmsKey = &secretsmanager.KmsKeyPayload{
156+
KeyId: model.KmsKeyId,
157+
KeyRingId: model.KmsKeyringId,
158+
KeyVersion: model.KmsKeyVersion,
159+
ServiceAccountEmail: model.KmsServiceAccountEmail,
160+
}
161+
}
162+
163+
req = req.CreateInstancePayload(payload)
154164

155165
return req
156166
}

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

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,14 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
8282

8383
// Call API
8484
req := buildRequest(ctx, model, apiClient)
85-
err = req.Execute()
85+
switch request := req.(type) {
86+
case secretsmanager.ApiUpdateInstanceRequest:
87+
err = request.Execute()
88+
case secretsmanager.ApiUpdateACLsRequest:
89+
err = request.Execute()
90+
default:
91+
err = fmt.Errorf("unknown request type")
92+
}
8693
if err != nil {
8794
return fmt.Errorf("update Secrets Manager instance: %w", err)
8895
}
@@ -135,9 +142,32 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
135142
return &model, nil
136143
}
137144

138-
func buildRequest(ctx context.Context, model *inputModel, apiClient *secretsmanager.APIClient) secretsmanager.ApiUpdateACLsRequest {
139-
// TODO: implement API integration for KMS key updates.
145+
func buildRequest(ctx context.Context, model *inputModel, apiClient *secretsmanager.APIClient) interface{ Execute() error } {
146+
if model.KmsKeyId != nil {
147+
return buildUpdateInstanceRequest(ctx, model, apiClient)
148+
}
149+
150+
return buildUpdateACLsRequest(ctx, model, apiClient)
151+
}
152+
153+
func buildUpdateInstanceRequest(ctx context.Context, model *inputModel, apiClient *secretsmanager.APIClient) secretsmanager.ApiUpdateInstanceRequest {
154+
req := apiClient.UpdateInstance(ctx, model.ProjectId, model.InstanceId)
155+
156+
payload := secretsmanager.UpdateInstancePayload{
157+
KmsKey: &secretsmanager.KmsKeyPayload{
158+
KeyId: model.KmsKeyId,
159+
KeyRingId: model.KmsKeyringId,
160+
KeyVersion: model.KmsKeyVersion,
161+
ServiceAccountEmail: model.KmsServiceAccountEmail,
162+
},
163+
}
164+
165+
req = req.UpdateInstancePayload(payload)
166+
167+
return req
168+
}
140169

170+
func buildUpdateACLsRequest(ctx context.Context, model *inputModel, apiClient *secretsmanager.APIClient) secretsmanager.ApiUpdateACLsRequest {
141171
req := apiClient.UpdateACLs(ctx, model.ProjectId, model.InstanceId)
142172

143173
cidrs := []secretsmanager.UpdateACLPayload{}

0 commit comments

Comments
 (0)