Skip to content

Commit 1d65c54

Browse files
committed
chore(mariadb): further refactor cmd
1 parent fac43cf commit 1d65c54

8 files changed

Lines changed: 64 additions & 72 deletions

File tree

internal/cmd/mariadb/instance/describe/describe.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -100,18 +100,17 @@ func outputResult(p *print.Printer, outputFormat string, instance *mariadb.Insta
100100
table := tables.NewTable()
101101
table.AddRow("ID", utils.PtrString(instance.InstanceId))
102102
table.AddSeparator()
103-
table.AddRow("NAME", utils.PtrString(instance.Name))
103+
table.AddRow("NAME", instance.Name)
104104
table.AddSeparator()
105-
if instance.LastOperation != nil {
106-
table.AddRow("LAST OPERATION TYPE", utils.PtrString(instance.LastOperation.Type))
107-
table.AddSeparator()
108-
table.AddRow("LAST OPERATION STATE", utils.PtrString(instance.LastOperation.State))
109-
table.AddSeparator()
110-
}
111-
table.AddRow("PLAN ID", utils.PtrString(instance.PlanId))
105+
table.AddRow("LAST OPERATION TYPE", instance.LastOperation.GetType())
106+
table.AddSeparator()
107+
table.AddRow("LAST OPERATION STATE", instance.LastOperation.GetState())
108+
table.AddSeparator()
109+
110+
table.AddRow("PLAN ID", instance.PlanId)
112111
// Only show ACL if it's present and not empty
113112
if instance.Parameters != nil {
114-
acl := (*instance.Parameters)[aclParameterKey]
113+
acl := instance.Parameters[aclParameterKey]
115114
aclStr, ok := acl.(string)
116115
if ok {
117116
if aclStr != "" {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
5858
}
5959

6060
func fixtureRequest(mods ...func(request *mariadb.ApiGetInstanceRequest)) mariadb.ApiGetInstanceRequest {
61-
request := testClient.GetInstance(testCtx, testProjectId, testInstanceId)
61+
request := testClient.DefaultAPI.GetInstance(testCtx, testProjectId, testInstanceId)
6262
for _, mod := range mods {
6363
mod(&request)
6464
}
@@ -162,7 +162,7 @@ func TestBuildRequest(t *testing.T) {
162162

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

internal/cmd/mariadb/instance/list/list.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,12 @@ func outputResult(p *print.Printer, outputFormat, projectLabel string, instances
131131
for i := range instances {
132132
instance := instances[i]
133133

134-
lastOperationType, lastOperationState := "", ""
135-
if instance.LastOperation != nil {
136-
lastOperationType = utils.PtrString(instance.LastOperation.Type)
137-
lastOperationState = utils.PtrString(instance.LastOperation.State)
138-
}
134+
lastOperationType := string(instance.LastOperation.GetType())
135+
lastOperationState := string(instance.LastOperation.GetState())
139136

140137
table.AddRow(
141138
utils.PtrString(instance.InstanceId),
142-
utils.PtrString(instance.Name),
139+
instance.Name,
143140
lastOperationType,
144141
lastOperationState,
145142
)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func TestBuildRequest(t *testing.T) {
136136

137137
diff := cmp.Diff(request, tt.expectedRequest,
138138
cmp.AllowUnexported(tt.expectedRequest),
139-
cmpopts.EquateComparable(testCtx),
139+
cmpopts.EquateComparable(testCtx, mariadb.DefaultAPIService{}),
140140
)
141141
if diff != "" {
142142
t.Fatalf("Data does not match: %s", diff)

internal/cmd/mariadb/instance/update/update.go

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type inputModel struct {
4747

4848
EnableMonitoring *bool
4949
Graphite *string
50-
MetricsFrequency *int64
50+
MetricsFrequency *int32
5151
MetricsPrefix *string
5252
MonitoringInstanceId *string
5353
SgwAcl *[]string
@@ -95,7 +95,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
9595
}
9696

9797
// Call API
98-
req, err := buildRequest(ctx, model, apiClient)
98+
req, err := buildRequest(ctx, model, apiClient.DefaultAPI)
9999
if err != nil {
100100
var dsaInvalidPlanError *cliErr.DSAInvalidPlanError
101101
if !errors.As(err, &dsaInvalidPlanError) {
@@ -112,7 +112,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
112112
// Wait for async operation, if async mode not enabled
113113
if !model.Async {
114114
err := spinner.Run(params.Printer, "Updating instance", func() error {
115-
_, err = wait.PartialUpdateInstanceWaitHandler(ctx, apiClient, model.ProjectId, instanceId).WaitWithContext(ctx)
115+
_, err = wait.PartialUpdateInstanceWaitHandler(ctx, apiClient.DefaultAPI, model.ProjectId, instanceId).WaitWithContext(ctx)
116116
return err
117117
})
118118
if err != nil {
@@ -135,7 +135,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
135135
func configureFlags(cmd *cobra.Command) {
136136
cmd.Flags().Bool(enableMonitoringFlag, false, "Enable monitoring")
137137
cmd.Flags().String(graphiteFlag, "", "Graphite host")
138-
cmd.Flags().Int64(metricsFrequencyFlag, 0, "Metrics frequency")
138+
cmd.Flags().Int32(metricsFrequencyFlag, 0, "Metrics frequency")
139139
cmd.Flags().String(metricsPrefixFlag, "", "Metrics prefix")
140140
cmd.Flags().Var(flags.UUIDFlag(), monitoringInstanceIdFlag, "Monitoring instance ID")
141141
cmd.Flags().Var(flags.CIDRSliceFlag(), sgwAclFlag, "List of IP networks in CIDR notation which are allowed to access this instance")
@@ -156,7 +156,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
156156
enableMonitoring := flags.FlagToBoolPointer(p, cmd, enableMonitoringFlag)
157157
monitoringInstanceId := flags.FlagToStringPointer(p, cmd, monitoringInstanceIdFlag)
158158
graphite := flags.FlagToStringPointer(p, cmd, graphiteFlag)
159-
metricsFrequency := flags.FlagToInt64Pointer(p, cmd, metricsFrequencyFlag)
159+
metricsFrequency := flags.FlagToInt32Pointer(p, cmd, metricsFrequencyFlag)
160160
metricsPrefix := flags.FlagToStringPointer(p, cmd, metricsPrefixFlag)
161161
sgwAcl := flags.FlagToStringSlicePointer(p, cmd, sgwAclFlag)
162162
syslog := flags.FlagToStringSlicePointer(p, cmd, syslogFlag)
@@ -197,18 +197,13 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
197197
return &model, nil
198198
}
199199

200-
type mariaDBClient interface {
201-
PartialUpdateInstance(ctx context.Context, projectId, instanceId string) mariadb.ApiPartialUpdateInstanceRequest
202-
ListOfferingsExecute(ctx context.Context, projectId string) (*mariadb.ListOfferingsResponse, error)
203-
}
204-
205-
func buildRequest(ctx context.Context, model *inputModel, apiClient mariaDBClient) (mariadb.ApiPartialUpdateInstanceRequest, error) {
200+
func buildRequest(ctx context.Context, model *inputModel, apiClient mariadb.DefaultAPI) (mariadb.ApiPartialUpdateInstanceRequest, error) {
206201
req := apiClient.PartialUpdateInstance(ctx, model.ProjectId, model.InstanceId)
207202

208203
var planId *string
209204
var err error
210205

211-
offerings, err := apiClient.DefaultAPI.ListOfferingsExecute(ctx, model.ProjectId)
206+
offerings, err := apiClient.ListOfferings(ctx, model.ProjectId).Execute()
212207
if err != nil {
213208
return req, fmt.Errorf("get MariaDB offerings: %w", err)
214209
}
@@ -246,7 +241,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient mariaDBClien
246241
MetricsFrequency: model.MetricsFrequency,
247242
MetricsPrefix: model.MetricsPrefix,
248243
SgwAcl: sgwAcl,
249-
Syslog: model.Syslog,
244+
Syslog: utils.GetSliceFromPointer(model.Syslog),
250245
},
251246
PlanId: planId,
252247
})

internal/cmd/mariadb/instance/update/update_test.go

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,20 @@ type testCtxKey struct{}
2222
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
2323
var testClient = &mariadb.APIClient{DefaultAPI: &mariadb.DefaultAPIService{}}
2424

25-
type mariaDBClientMocked struct {
25+
type mockSettings struct {
2626
returnError bool
2727
listOfferingsResp *mariadb.ListOfferingsResponse
2828
}
2929

30-
func (c *mariaDBClientMocked) PartialUpdateInstance(ctx context.Context, projectId, instanceId string) mariadb.ApiPartialUpdateInstanceRequest {
31-
return testClient.PartialUpdateInstance(ctx, projectId, instanceId)
32-
}
33-
34-
func (c *mariaDBClientMocked) ListOfferingsExecute(_ context.Context, _ string) (*mariadb.ListOfferingsResponse, error) {
35-
if c.returnError {
36-
return nil, fmt.Errorf("list flavors failed")
30+
func newAPIMock(s mockSettings) mariadb.DefaultAPI {
31+
return &mariadb.DefaultAPIServiceMock{
32+
ListOfferingsExecuteMock: utils.Ptr(func(_ mariadb.ApiListOfferingsRequest) (*mariadb.ListOfferingsResponse, error) {
33+
if s.returnError {
34+
return nil, fmt.Errorf("list flavors failed")
35+
}
36+
return s.listOfferingsResp, nil
37+
}),
3738
}
38-
return c.listOfferingsResp, nil
3939
}
4040

4141
var (
@@ -82,7 +82,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
8282
InstanceId: testInstanceId,
8383
EnableMonitoring: utils.Ptr(true),
8484
Graphite: utils.Ptr("example-graphite"),
85-
MetricsFrequency: utils.Ptr(int64(100)),
85+
MetricsFrequency: utils.Ptr(int32(100)),
8686
MetricsPrefix: utils.Ptr("example-prefix"),
8787
MonitoringInstanceId: utils.Ptr(testMonitoringInstanceId),
8888
SgwAcl: utils.Ptr([]string{"198.51.100.14/24"}),
@@ -96,16 +96,16 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
9696
}
9797

9898
func fixtureRequest(mods ...func(request *mariadb.ApiPartialUpdateInstanceRequest)) mariadb.ApiPartialUpdateInstanceRequest {
99-
request := testClient.PartialUpdateInstance(testCtx, testProjectId, testInstanceId)
99+
request := testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testInstanceId)
100100
request = request.PartialUpdateInstancePayload(mariadb.PartialUpdateInstancePayload{
101101
Parameters: &mariadb.InstanceParameters{
102102
EnableMonitoring: utils.Ptr(true),
103103
Graphite: utils.Ptr("example-graphite"),
104-
MetricsFrequency: utils.Ptr(int64(100)),
104+
MetricsFrequency: utils.Ptr(int32(100)),
105105
MetricsPrefix: utils.Ptr("example-prefix"),
106106
MonitoringInstanceId: utils.Ptr(testMonitoringInstanceId),
107107
SgwAcl: utils.Ptr("198.51.100.14/24"),
108-
Syslog: utils.Ptr([]string{"example-syslog"}),
108+
Syslog: []string{"example-syslog"},
109109
},
110110
PlanId: utils.Ptr(testPlanId),
111111
})
@@ -186,7 +186,7 @@ func TestParseInput(t *testing.T) {
186186
PlanId: utils.Ptr(testPlanId),
187187
EnableMonitoring: utils.Ptr(false),
188188
Graphite: utils.Ptr(""),
189-
MetricsFrequency: utils.Ptr(int64(0)),
189+
MetricsFrequency: utils.Ptr(int32(0)),
190190
MetricsPrefix: utils.Ptr(""),
191191
},
192192
},
@@ -363,13 +363,13 @@ func TestBuildRequest(t *testing.T) {
363363
model: fixtureInputModel(),
364364
expectedRequest: fixtureRequest(),
365365
listOfferingsResp: &mariadb.ListOfferingsResponse{
366-
Offerings: &[]mariadb.Offering{
366+
Offerings: []mariadb.Offering{
367367
{
368-
Version: utils.Ptr("example-version"),
369-
Plans: &[]mariadb.Plan{
368+
Version: "example-version",
369+
Plans: []mariadb.Plan{
370370
{
371-
Name: utils.Ptr("example-plan-name"),
372-
Id: utils.Ptr(testPlanId),
371+
Name: "example-plan-name",
372+
Id: testPlanId,
373373
},
374374
},
375375
},
@@ -387,13 +387,13 @@ func TestBuildRequest(t *testing.T) {
387387
),
388388
expectedRequest: fixtureRequest(),
389389
listOfferingsResp: &mariadb.ListOfferingsResponse{
390-
Offerings: &[]mariadb.Offering{
390+
Offerings: []mariadb.Offering{
391391
{
392-
Version: utils.Ptr("example-version"),
393-
Plans: &[]mariadb.Plan{
392+
Version: "example-version",
393+
Plans: []mariadb.Plan{
394394
{
395-
Name: utils.Ptr("example-plan-name"),
396-
Id: utils.Ptr(testPlanId),
395+
Name: "example-plan-name",
396+
Id: testPlanId,
397397
},
398398
},
399399
},
@@ -422,13 +422,13 @@ func TestBuildRequest(t *testing.T) {
422422
},
423423
),
424424
listOfferingsResp: &mariadb.ListOfferingsResponse{
425-
Offerings: &[]mariadb.Offering{
425+
Offerings: []mariadb.Offering{
426426
{
427-
Version: utils.Ptr("example-version"),
428-
Plans: &[]mariadb.Plan{
427+
Version: "example-version",
428+
Plans: []mariadb.Plan{
429429
{
430-
Name: utils.Ptr("other-plan-name"),
431-
Id: utils.Ptr(testPlanId),
430+
Name: "other-plan-name",
431+
Id: testPlanId,
432432
},
433433
},
434434
},
@@ -445,18 +445,18 @@ func TestBuildRequest(t *testing.T) {
445445
},
446446
InstanceId: testInstanceId,
447447
},
448-
expectedRequest: testClient.PartialUpdateInstance(testCtx, testProjectId, testInstanceId).
448+
expectedRequest: testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testInstanceId).
449449
PartialUpdateInstancePayload(mariadb.PartialUpdateInstancePayload{Parameters: &mariadb.InstanceParameters{}}),
450450
},
451451
}
452452

453453
for _, tt := range tests {
454454
t.Run(tt.description, func(t *testing.T) {
455-
client := &mariaDBClientMocked{
455+
settings := mockSettings{
456456
returnError: tt.getOfferingsFails,
457457
listOfferingsResp: tt.listOfferingsResp,
458458
}
459-
request, err := buildRequest(testCtx, tt.model, client)
459+
request, err := buildRequest(testCtx, tt.model, newAPIMock(settings))
460460
if err != nil {
461461
if !tt.isValid {
462462
return
@@ -467,6 +467,8 @@ func TestBuildRequest(t *testing.T) {
467467
diff := cmp.Diff(request, tt.expectedRequest,
468468
cmp.AllowUnexported(tt.expectedRequest),
469469
cmpopts.EquateComparable(testCtx),
470+
cmpopts.EquateEmpty(),
471+
cmpopts.IgnoreFields(tt.expectedRequest, "ApiService"),
470472
)
471473
if diff != "" {
472474
t.Fatalf("Data does not match: %s", diff)

internal/cmd/mariadb/plans/plans.go

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

2423
const (
@@ -131,14 +130,14 @@ func outputResult(p *print.Printer, outputFormat, projectLabel string, plans []m
131130
for i := range plans {
132131
o := plans[i]
133132
if o.Plans != nil {
134-
for j := range *o.Plans {
135-
plan := (*o.Plans)[j]
133+
for j := range o.Plans {
134+
plan := o.Plans[j]
136135
table.AddRow(
137-
utils.PtrString(o.Name),
138-
utils.PtrString(o.Version),
139-
utils.PtrString(plan.Id),
140-
utils.PtrString(plan.Name),
141-
utils.PtrString(plan.Description),
136+
o.Name,
137+
o.Version,
138+
plan.Id,
139+
plan.Name,
140+
plan.Description,
142141
)
143142
}
144143
table.AddSeparator()

internal/cmd/mariadb/plans/plans_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func TestBuildRequest(t *testing.T) {
136136

137137
diff := cmp.Diff(request, tt.expectedRequest,
138138
cmp.AllowUnexported(tt.expectedRequest),
139-
cmpopts.EquateComparable(testCtx),
139+
cmpopts.EquateComparable(testCtx, mariadb.DefaultAPIService{}),
140140
)
141141
if diff != "" {
142142
t.Fatalf("Data does not match: %s", diff)

0 commit comments

Comments
 (0)