Skip to content

Commit fac43cf

Browse files
committed
chore(mariadb): refactor cmd
1 parent 82b7bbe commit fac43cf

20 files changed

Lines changed: 104 additions & 112 deletions

File tree

internal/cmd/mariadb/credentials/create/create.go

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

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

9+
"github.com/spf13/cobra"
910
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
1011
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1112
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
@@ -14,9 +15,6 @@ import (
1415
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1516
"github.com/stackitcloud/stackit-cli/internal/pkg/services/mariadb/client"
1617
mariadbUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/mariadb/utils"
17-
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
18-
19-
"github.com/spf13/cobra"
2018
mariadb "github.com/stackitcloud/stackit-sdk-go/services/mariadb/v1api"
2119
)
2220

@@ -58,7 +56,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
5856
return err
5957
}
6058

61-
instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId)
59+
instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId)
6260
if err != nil {
6361
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
6462
instanceLabel = model.InstanceId
@@ -109,7 +107,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
109107
}
110108

111109
func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiCreateCredentialsRequest {
112-
req := apiClient.CreateCredentials(ctx, model.ProjectId, model.InstanceId)
110+
req := apiClient.DefaultAPI.CreateCredentials(ctx, model.ProjectId, model.InstanceId)
113111
return req
114112
}
115113

@@ -118,26 +116,26 @@ func outputResult(p *print.Printer, outputFormat string, showPassword bool, inst
118116
return fmt.Errorf("response is nil")
119117
}
120118

121-
if !showPassword && resp.HasRaw() && resp.Raw.Credentials != nil {
122-
resp.Raw.Credentials.Password = utils.Ptr("hidden")
119+
if !showPassword && resp.HasRaw() {
120+
resp.Raw.Credentials.Password = "hidden"
123121
}
124122

125123
return p.OutputResult(outputFormat, resp, func() error {
126-
p.Outputf("Created credentials for instance %q. Credentials ID: %s\n\n", instanceLabel, utils.PtrString(resp.Id))
124+
p.Outputf("Created credentials for instance %q. Credentials ID: %s\n\n", instanceLabel, resp.Id)
127125
// The username field cannot be set by the user, so we only display it if it's not returned empty
128-
if resp.HasRaw() && resp.Raw.Credentials != nil {
129-
if username := resp.Raw.Credentials.Username; username != nil && *username != "" {
130-
p.Outputf("Username: %s\n", *username)
126+
if resp.HasRaw() {
127+
if resp.Raw.Credentials.Username != "" {
128+
p.Outputf("Username: %s\n", resp.Raw.Credentials.Username)
131129
}
132130
if !showPassword {
133131
p.Outputf("Password: <hidden>\n")
134132
} else {
135-
p.Outputf("Password: %s\n", utils.PtrString(resp.Raw.Credentials.Password))
133+
p.Outputf("Password: %s\n", resp.Raw.Credentials.Password)
136134
}
137-
p.Outputf("Host: %s\n", utils.PtrString(resp.Raw.Credentials.Host))
138-
p.Outputf("Port: %s\n", utils.PtrString(resp.Raw.Credentials.Port))
135+
p.Outputf("Host: %s\n", resp.Raw.Credentials.Host)
136+
p.Outputf("Port: %d\n", resp.Raw.Credentials.Port)
139137
}
140-
p.Outputf("URI: %s\n", utils.PtrString(resp.Uri))
138+
p.Outputf("URI: %s\n", resp.Uri)
141139
return nil
142140
})
143141
}

internal/cmd/mariadb/credentials/create/create_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var projectIdFlag = globalflags.ProjectIdFlag
1919
type testCtxKey struct{}
2020

2121
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
22-
var testClient = &mariadb.APIClient{}
22+
var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}}
2323
var testProjectId = uuid.NewString()
2424
var testInstanceId = uuid.NewString()
2525

@@ -49,7 +49,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
4949
}
5050

5151
func fixtureRequest(mods ...func(request *mariadb.ApiCreateCredentialsRequest)) mariadb.ApiCreateCredentialsRequest {
52-
request := testClient.CreateCredentials(testCtx, testProjectId, testInstanceId)
52+
request := testClient.DefaultAPI.CreateCredentials(testCtx, testProjectId, testInstanceId)
5353
for _, mod := range mods {
5454
mod(&request)
5555
}
@@ -155,7 +155,7 @@ func TestBuildRequest(t *testing.T) {
155155

156156
diff := cmp.Diff(request, tt.expectedRequest,
157157
cmp.AllowUnexported(tt.expectedRequest),
158-
cmpopts.EquateComparable(testCtx),
158+
cmpopts.EquateComparable(testCtx, mariadb.DefaultAPIService{}),
159159
)
160160
if diff != "" {
161161
t.Fatalf("Data does not match: %s", diff)

internal/cmd/mariadb/credentials/delete/delete.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
5656
return err
5757
}
5858

59-
instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId)
59+
instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId)
6060
if err != nil {
6161
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
6262
instanceLabel = model.InstanceId
6363
}
6464

65-
credentialsLabel, err := mariadbUtils.GetCredentialsUsername(ctx, apiClient, model.ProjectId, model.InstanceId, model.CredentialsId)
65+
credentialsLabel, err := mariadbUtils.GetCredentialsUsername(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId, model.CredentialsId)
6666
if err != nil {
6767
params.Printer.Debug(print.ErrorLevel, "get credentials username: %v", err)
6868
credentialsLabel = model.CredentialsId
@@ -115,6 +115,6 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
115115
}
116116

117117
func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiDeleteCredentialsRequest {
118-
req := apiClient.DeleteCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId)
118+
req := apiClient.DefaultAPI.DeleteCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId)
119119
return req
120120
}

internal/cmd/mariadb/credentials/delete/delete_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ var projectIdFlag = globalflags.ProjectIdFlag
1818
type testCtxKey struct{}
1919

2020
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
21-
var testClient = &mariadb.APIClient{}
21+
var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}}
2222
var testProjectId = uuid.NewString()
2323
var testInstanceId = uuid.NewString()
2424
var testCredentialsId = uuid.NewString()
@@ -60,7 +60,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
6060
}
6161

6262
func fixtureRequest(mods ...func(request *mariadb.ApiDeleteCredentialsRequest)) mariadb.ApiDeleteCredentialsRequest {
63-
request := testClient.DeleteCredentials(testCtx, testProjectId, testInstanceId, testCredentialsId)
63+
request := testClient.DefaultAPI.DeleteCredentials(testCtx, testProjectId, testInstanceId, testCredentialsId)
6464
for _, mod := range mods {
6565
mod(&request)
6666
}
@@ -188,7 +188,7 @@ func TestBuildRequest(t *testing.T) {
188188

189189
diff := cmp.Diff(request, tt.expectedRequest,
190190
cmp.AllowUnexported(tt.expectedRequest),
191-
cmpopts.EquateComparable(testCtx),
191+
cmpopts.EquateComparable(testCtx, mariadb.DefaultAPIService{}),
192192
)
193193
if diff != "" {
194194
t.Fatalf("Data does not match: %s", diff)

internal/cmd/mariadb/credentials/describe/describe.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
9999
}
100100

101101
func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiGetCredentialsRequest {
102-
req := apiClient.GetCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId)
102+
req := apiClient.DefaultAPI.GetCredentials(ctx, model.ProjectId, model.InstanceId, model.CredentialsId)
103103
return req
104104
}
105105

@@ -110,15 +110,15 @@ func outputResult(p *print.Printer, outputFormat string, credentials *mariadb.Cr
110110

111111
return p.OutputResult(outputFormat, credentials, func() error {
112112
table := tables.NewTable()
113-
table.AddRow("ID", utils.PtrString(credentials.Id))
113+
table.AddRow("ID", credentials.Id)
114114
table.AddSeparator()
115115
// The username field cannot be set by the user so we only display it if it's not returned empty
116-
if credentials.HasRaw() && credentials.Raw.Credentials != nil {
117-
if username := credentials.Raw.Credentials.Username; username != nil && *username != "" {
118-
table.AddRow("USERNAME", *username)
116+
if credentials.HasRaw() {
117+
if credentials.Raw.Credentials.Username != "" {
118+
table.AddRow("USERNAME", credentials.Raw.Credentials.Username)
119119
table.AddSeparator()
120120
}
121-
table.AddRow("PASSWORD", utils.PtrString(credentials.Raw.Credentials.Password))
121+
table.AddRow("PASSWORD", credentials.Raw.Credentials.Password)
122122
table.AddSeparator()
123123
table.AddRow("URI", utils.PtrString(credentials.Raw.Credentials.Uri))
124124
}

internal/cmd/mariadb/credentials/describe/describe_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var projectIdFlag = globalflags.ProjectIdFlag
1919
type testCtxKey struct{}
2020

2121
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
22-
var testClient = &mariadb.APIClient{}
22+
var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}}
2323
var testProjectId = uuid.NewString()
2424
var testInstanceId = uuid.NewString()
2525
var testCredentialsId = uuid.NewString()

internal/cmd/mariadb/credentials/list/list.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"github.com/stackitcloud/stackit-cli/internal/pkg/services/mariadb/client"
1919
mariadbUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/mariadb/utils"
2020
"github.com/stackitcloud/stackit-cli/internal/pkg/tables"
21-
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
2221
)
2322

2423
const (
@@ -70,7 +69,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
7069
}
7170
credentials := resp.GetCredentialsList()
7271

73-
instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId)
72+
instanceLabel, err := mariadbUtils.GetInstanceName(ctx, apiClient.DefaultAPI, model.ProjectId, model.InstanceId)
7473
if err != nil {
7574
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
7675
instanceLabel = model.InstanceId
@@ -120,7 +119,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
120119
}
121120

122121
func buildRequest(ctx context.Context, model *inputModel, apiClient *mariadb.APIClient) mariadb.ApiListCredentialsRequest {
123-
req := apiClient.ListCredentials(ctx, model.ProjectId, model.InstanceId)
122+
req := apiClient.DefaultAPI.ListCredentials(ctx, model.ProjectId, model.InstanceId)
124123
return req
125124
}
126125

@@ -135,7 +134,7 @@ func outputResult(p *print.Printer, outputFormat, instanceLabel string, credenti
135134
table.SetHeader("ID")
136135
for i := range credentials {
137136
c := credentials[i]
138-
table.AddRow(utils.PtrString(c.Id))
137+
table.AddRow(c.Id)
139138
}
140139
err := table.Display(p)
141140
if err != nil {

internal/cmd/mariadb/credentials/list/list_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
type testCtxKey struct{}
1919

2020
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
21-
var testClient = &mariadb.APIClient{}
21+
var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}}
2222
var testProjectId = uuid.NewString()
2323
var testInstanceId = uuid.NewString()
2424

@@ -50,7 +50,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
5050
}
5151

5252
func fixtureRequest(mods ...func(request *mariadb.ApiListCredentialsRequest)) mariadb.ApiListCredentialsRequest {
53-
request := testClient.ListCredentials(testCtx, testProjectId, testInstanceId)
53+
request := testClient.DefaultAPI.ListCredentials(testCtx, testProjectId, testInstanceId)
5454
for _, mod := range mods {
5555
mod(&request)
5656
}
@@ -160,7 +160,7 @@ func TestBuildRequest(t *testing.T) {
160160

161161
diff := cmp.Diff(request, tt.expectedRequest,
162162
cmp.AllowUnexported(tt.expectedRequest),
163-
cmpopts.EquateComparable(testCtx),
163+
cmpopts.EquateComparable(testCtx, mariadb.DefaultAPIService{}),
164164
)
165165
if diff != "" {
166166
t.Fatalf("Data does not match: %s", diff)

internal/cmd/mariadb/instance/create/create.go

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type inputModel struct {
4747
InstanceName *string
4848
EnableMonitoring *bool
4949
Graphite *string
50-
MetricsFrequency *int64
50+
MetricsFrequency *int32
5151
MetricsPrefix *string
5252
MonitoringInstanceId *string
5353
SgwAcl *[]string
@@ -98,7 +98,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
9898
}
9999

100100
// Call API
101-
req, err := buildRequest(ctx, model, apiClient)
101+
req, err := buildRequest(ctx, model, apiClient.DefaultAPI)
102102
if err != nil {
103103
var dsaInvalidPlanError *cliErr.DSAInvalidPlanError
104104
if !errors.As(err, &dsaInvalidPlanError) {
@@ -110,12 +110,11 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
110110
if err != nil {
111111
return fmt.Errorf("create MariaDB instance: %w", err)
112112
}
113-
instanceId := *resp.InstanceId
114113

115114
// Wait for async operation, if async mode not enabled
116115
if !model.Async {
117116
err := spinner.Run(params.Printer, "Creating instance", func() error {
118-
_, err = wait.CreateInstanceWaitHandler(ctx, apiClient, model.ProjectId, instanceId).WaitWithContext(ctx)
117+
_, err = wait.CreateInstanceWaitHandler(ctx, apiClient.DefaultAPI, model.ProjectId, resp.InstanceId).WaitWithContext(ctx)
119118
return err
120119
})
121120
if err != nil {
@@ -134,7 +133,7 @@ func configureFlags(cmd *cobra.Command) {
134133
cmd.Flags().StringP(instanceNameFlag, "n", "", "Instance name")
135134
cmd.Flags().Bool(enableMonitoringFlag, false, "Enable monitoring")
136135
cmd.Flags().String(graphiteFlag, "", "Graphite host")
137-
cmd.Flags().Int64(metricsFrequencyFlag, 0, "Metrics frequency")
136+
cmd.Flags().Int32(metricsFrequencyFlag, 0, "Metrics frequency")
138137
cmd.Flags().String(metricsPrefixFlag, "", "Metrics prefix")
139138
cmd.Flags().Var(flags.UUIDFlag(), monitoringInstanceIdFlag, "Monitoring instance ID")
140139
cmd.Flags().Var(flags.CIDRSliceFlag(), sgwAclFlag, "List of IP networks in CIDR notation which are allowed to access this instance")
@@ -174,7 +173,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
174173
EnableMonitoring: flags.FlagToBoolPointer(p, cmd, enableMonitoringFlag),
175174
MonitoringInstanceId: flags.FlagToStringPointer(p, cmd, monitoringInstanceIdFlag),
176175
Graphite: flags.FlagToStringPointer(p, cmd, graphiteFlag),
177-
MetricsFrequency: flags.FlagToInt64Pointer(p, cmd, metricsFrequencyFlag),
176+
MetricsFrequency: flags.FlagToInt32Pointer(p, cmd, metricsFrequencyFlag),
178177
MetricsPrefix: flags.FlagToStringPointer(p, cmd, metricsPrefixFlag),
179178
SgwAcl: flags.FlagToStringSlicePointer(p, cmd, sgwAclFlag),
180179
Syslog: flags.FlagToStringSlicePointer(p, cmd, syslogFlag),
@@ -187,18 +186,13 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
187186
return &model, nil
188187
}
189188

190-
type mariaDBClient interface {
191-
CreateInstance(ctx context.Context, projectId string) mariadb.ApiCreateInstanceRequest
192-
ListOfferingsExecute(ctx context.Context, projectId string) (*mariadb.ListOfferingsResponse, error)
193-
}
194-
195-
func buildRequest(ctx context.Context, model *inputModel, apiClient mariaDBClient) (mariadb.ApiCreateInstanceRequest, error) {
189+
func buildRequest(ctx context.Context, model *inputModel, apiClient mariadb.DefaultAPI) (mariadb.ApiCreateInstanceRequest, error) {
196190
req := apiClient.CreateInstance(ctx, model.ProjectId)
197191

198192
var planId *string
199193
var err error
200194

201-
offerings, err := apiClient.ListOfferingsExecute(ctx, model.ProjectId)
195+
offerings, err := apiClient.ListOfferings(ctx, model.ProjectId).Execute()
202196
if err != nil {
203197
return req, fmt.Errorf("get MariaDB offerings: %w", err)
204198
}
@@ -219,24 +213,23 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient mariaDBClien
219213
}
220214
planId = model.PlanId
221215
}
222-
223216
var sgwAcl *string
224217
if model.SgwAcl != nil {
225218
sgwAcl = utils.Ptr(strings.Join(*model.SgwAcl, ","))
226219
}
227220

228221
req = req.CreateInstancePayload(mariadb.CreateInstancePayload{
229-
InstanceName: model.InstanceName,
222+
InstanceName: utils.PtrString(model.InstanceName),
230223
Parameters: &mariadb.InstanceParameters{
231224
EnableMonitoring: model.EnableMonitoring,
232225
Graphite: model.Graphite,
233226
MonitoringInstanceId: model.MonitoringInstanceId,
234227
MetricsFrequency: model.MetricsFrequency,
235228
MetricsPrefix: model.MetricsPrefix,
236229
SgwAcl: sgwAcl,
237-
Syslog: model.Syslog,
230+
Syslog: utils.GetSliceFromPointer(model.Syslog),
238231
},
239-
PlanId: planId,
232+
PlanId: utils.PtrString(planId),
240233
})
241234
return req, nil
242235
}
@@ -251,7 +244,7 @@ func outputResult(p *print.Printer, outputFormat string, async bool, projectLabe
251244
if async {
252245
operationState = "Triggered creation of"
253246
}
254-
p.Outputf("%s instance for project %q. Instance ID: %s\n", operationState, projectLabel, utils.PtrString(resp.InstanceId))
247+
p.Outputf("%s instance for project %q. Instance ID: %s\n", operationState, projectLabel, resp.InstanceId)
255248
return nil
256249
})
257250
}

0 commit comments

Comments
 (0)