Skip to content

Commit 9c4d4ce

Browse files
committed
feat(mongodbflex): address review comments
relates to STACKITCLI-441
1 parent bdb0dac commit 9c4d4ce

13 files changed

Lines changed: 102 additions & 91 deletions

File tree

‎internal/cmd/mongodbflex/flavor/list/list.go‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,18 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
5454
}
5555

5656
// Call API
57-
flavors, err := buildRequest(ctx, model, apiClient.DefaultAPI).Execute()
57+
flavorsResp, err := buildRequest(ctx, model, apiClient.DefaultAPI).Execute()
5858
if err != nil {
5959
return fmt.Errorf("get MongoDB Flex flavors: %w", err)
6060
}
61+
flavors := flavorsResp.Flavors
6162

62-
return outputResult(params.Printer, model.OutputFormat, flavors.Flavors)
63+
// Truncate output
64+
if model.Limit != nil && len(flavors) > int(*model.Limit) {
65+
flavors = flavors[:*model.Limit]
66+
}
67+
68+
return outputResult(params.Printer, model.OutputFormat, flavors)
6369
},
6470
}
6571

‎internal/cmd/mongodbflex/instance/create/create.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
106106
model.FlavorId, err = getFlavorId(ctx, model, apiClient.DefaultAPI)
107107
if err != nil {
108108
params.Printer.Debug(print.ErrorLevel, "determining flavor id: %v", err)
109+
return err
109110
}
110111

111112
// remove after 2027-03-07

‎internal/cmd/mongodbflex/instance/create/create_test.go‎

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
88
"github.com/stackitcloud/stackit-cli/internal/pkg/testparams"
99
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
10-
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
1110

1211
"github.com/google/go-cmp/cmp"
1312
"github.com/google/go-cmp/cmp/cmpopts"
@@ -56,12 +55,12 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
5655
},
5756
InstanceName: "example-name",
5857
ACL: []string{"0.0.0.0/0"},
59-
BackupSchedule: utils.Ptr("0 0/6 * * *"),
60-
FlavorId: utils.Ptr(testFlavorId),
61-
StorageClass: utils.Ptr("premium-perf4-mongodb"),
62-
StorageSize: utils.Ptr(int64(10)),
63-
Version: utils.Ptr("6.0"),
64-
Type: utils.Ptr("Replica"),
58+
BackupSchedule: new("0 0/6 * * *"),
59+
FlavorId: new(testFlavorId),
60+
StorageClass: new("premium-perf4-mongodb"),
61+
StorageSize: new(int64(10)),
62+
Version: new("6.0"),
63+
Type: new("Replica"),
6564
}
6665
for _, mod := range mods {
6766
mod(model)
@@ -86,8 +85,8 @@ func fixturePayload(mods ...func(payload *mongodbflex.CreateInstancePayload)) mo
8685
FlavorId: testFlavorId,
8786
Replicas: int32(3),
8887
Storage: mongodbflex.Storage{
89-
Class: utils.Ptr("premium-perf4-mongodb"),
90-
Size: utils.Ptr(int64(10)),
88+
Class: new("premium-perf4-mongodb"),
89+
Size: new(int64(10)),
9190
},
9291
Version: "6.0",
9392
Options: map[string]string{
@@ -136,8 +135,8 @@ func TestParseInput(t *testing.T) {
136135
isValid: true,
137136
expectedModel: fixtureInputModel(func(model *inputModel) {
138137
model.FlavorId = nil
139-
model.CPU = utils.Ptr(int32(2))
140-
model.RAM = utils.Ptr(int32(4))
138+
model.CPU = new(int32(2))
139+
model.RAM = new(int32(4))
141140
}),
142141
},
143142
{

‎internal/cmd/mongodbflex/instance/list/list_test.go‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
88
"github.com/stackitcloud/stackit-cli/internal/pkg/testparams"
99
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
10-
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
1110

1211
"github.com/google/go-cmp/cmp"
1312
"github.com/google/go-cmp/cmp/cmpopts"
@@ -44,7 +43,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
4443
Region: testRegion,
4544
Verbosity: globalflags.VerbosityDefault,
4645
},
47-
Limit: utils.Ptr(int64(10)),
46+
Limit: new(int64(10)),
4847
}
4948
for _, mod := range mods {
5049
mod(model)

‎internal/cmd/mongodbflex/instance/update/update.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient mongodbflex.
228228
if model.RAM == nil || model.CPU == nil {
229229
var currentFlavor *mongodbflex.InstanceFlavor
230230
for _, f := range flavors.Flavors {
231-
if f.Id == currentInstance.Item.Flavor.Id {
231+
if *f.Id == *currentInstance.Item.Flavor.Id {
232232
currentFlavor = &f
233233
}
234234
}

‎internal/cmd/mongodbflex/instance/update/update_test.go‎

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,14 @@ func fixtureStandardInputModel(mods ...func(model *inputModel)) *inputModel {
117117
Verbosity: globalflags.VerbosityDefault,
118118
},
119119
InstanceId: testInstanceId,
120-
FlavorId: utils.Ptr(testFlavorId),
121-
InstanceName: utils.Ptr("example-name"),
122-
ACL: utils.Ptr([]string{"0.0.0.0/0"}),
123-
BackupSchedule: utils.Ptr("0 0 * * *"),
124-
StorageClass: utils.Ptr("class"),
125-
StorageSize: utils.Ptr(int64(10)),
126-
Version: utils.Ptr("5.0"),
127-
Type: utils.Ptr("Single"),
120+
FlavorId: new(testFlavorId),
121+
InstanceName: new("example-name"),
122+
ACL: new([]string{"0.0.0.0/0"}),
123+
BackupSchedule: new("0 0 * * *"),
124+
StorageClass: new("class"),
125+
StorageSize: new(int64(10)),
126+
Version: new("5.0"),
127+
Type: new("Single"),
128128
}
129129
for _, mod := range mods {
130130
mod(model)
@@ -193,8 +193,8 @@ func TestParseInput(t *testing.T) {
193193
isValid: true,
194194
expectedModel: fixtureStandardInputModel(func(model *inputModel) {
195195
model.FlavorId = nil
196-
model.CPU = utils.Ptr(int32(2))
197-
model.RAM = utils.Ptr(int32(4))
196+
model.CPU = new(int32(2))
197+
model.RAM = new(int32(4))
198198
}),
199199
},
200200
{
@@ -270,7 +270,7 @@ func TestParseInput(t *testing.T) {
270270
aclValues: []string{"198.51.100.14/24", "198.51.100.14/32"},
271271
isValid: true,
272272
expectedModel: fixtureRequiredInputModel(func(model *inputModel) {
273-
model.ACL = utils.Ptr([]string{"198.51.100.14/24", "198.51.100.14/32"})
273+
model.ACL = new([]string{"198.51.100.14/24", "198.51.100.14/32"})
274274
}),
275275
},
276276
}
@@ -357,100 +357,100 @@ func TestBuildRequest(t *testing.T) {
357357
{
358358
description: "update flavor from id",
359359
model: fixtureRequiredInputModel(func(model *inputModel) {
360-
model.FlavorId = utils.Ptr(testFlavorId)
360+
model.FlavorId = new(testFlavorId)
361361
}),
362362
isValid: true,
363363
mockClientSettings: mockClientSettings{
364364
listFlavorsResp: &mongodbflex.ListFlavorsResponse{
365365
Flavors: []mongodbflex.InstanceFlavor{
366366
{
367-
Id: utils.Ptr(testFlavorId),
368-
Cpu: utils.Ptr(int32(2)),
369-
Memory: utils.Ptr(int32(4)),
367+
Id: new(testFlavorId),
368+
Cpu: new(int32(2)),
369+
Memory: new(int32(4)),
370370
},
371371
},
372372
},
373373
},
374374
expectedRequest: testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testInstanceId, testRegion).
375375
PartialUpdateInstancePayload(mongodbflex.PartialUpdateInstancePayload{
376-
FlavorId: utils.Ptr(testFlavorId),
376+
FlavorId: new(testFlavorId),
377377
}),
378378
},
379379
{
380380
description: "update flavor from cpu and ram",
381381
model: fixtureRequiredInputModel(func(model *inputModel) {
382-
model.CPU = utils.Ptr(int32(2))
383-
model.RAM = utils.Ptr(int32(4))
382+
model.CPU = new(int32(2))
383+
model.RAM = new(int32(4))
384384
}),
385385
isValid: true,
386386
mockClientSettings: mockClientSettings{
387387
listFlavorsResp: &mongodbflex.ListFlavorsResponse{
388388
Flavors: []mongodbflex.InstanceFlavor{
389389
{
390-
Id: utils.Ptr(testFlavorId),
391-
Cpu: utils.Ptr(int32(2)),
392-
Memory: utils.Ptr(int32(4)),
390+
Id: new(testFlavorId),
391+
Cpu: new(int32(2)),
392+
Memory: new(int32(4)),
393393
},
394394
},
395395
},
396396
},
397397
expectedRequest: testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testInstanceId, testRegion).
398398
PartialUpdateInstancePayload(mongodbflex.PartialUpdateInstancePayload{
399-
FlavorId: utils.Ptr(testFlavorId),
399+
FlavorId: new(testFlavorId),
400400
}),
401401
},
402402
{
403403
description: "update storage class only",
404404
model: fixtureRequiredInputModel(func(model *inputModel) {
405-
model.StorageClass = utils.Ptr("class")
405+
model.StorageClass = new("class")
406406
}),
407407
isValid: true,
408408
mockClientSettings: mockClientSettings{
409409
getInstanceResp: &mongodbflex.InstanceResponse{
410410
Item: &mongodbflex.Instance{
411411
Flavor: &mongodbflex.Flavor{
412-
Id: utils.Ptr(testFlavorId),
412+
Id: new(testFlavorId),
413413
},
414414
},
415415
},
416416
},
417417
expectedRequest: testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testInstanceId, testRegion).
418418
PartialUpdateInstancePayload(mongodbflex.PartialUpdateInstancePayload{
419419
Storage: &mongodbflex.Storage{
420-
Class: utils.Ptr("class"),
420+
Class: new("class"),
421421
},
422422
}),
423423
},
424424
{
425425
description: "update storage class and size",
426426
model: fixtureRequiredInputModel(func(model *inputModel) {
427-
model.StorageClass = utils.Ptr("class")
428-
model.StorageSize = utils.Ptr(int64(10))
427+
model.StorageClass = new("class")
428+
model.StorageSize = new(int64(10))
429429
}),
430430
isValid: true,
431431
mockClientSettings: mockClientSettings{
432432
getInstanceResp: &mongodbflex.InstanceResponse{
433433
Item: &mongodbflex.Instance{
434434
Flavor: &mongodbflex.Flavor{
435-
Id: utils.Ptr(testFlavorId),
435+
Id: new(testFlavorId),
436436
},
437437
},
438438
},
439439
},
440440
expectedRequest: testClient.DefaultAPI.PartialUpdateInstance(testCtx, testProjectId, testInstanceId, testRegion).
441441
PartialUpdateInstancePayload(mongodbflex.PartialUpdateInstancePayload{
442442
Storage: &mongodbflex.Storage{
443-
Class: utils.Ptr("class"),
444-
Size: utils.Ptr(int64(10)),
443+
Class: new("class"),
444+
Size: new(int64(10)),
445445
},
446446
}),
447447
},
448448
{
449449
description: "get flavors fails",
450450
model: fixtureRequiredInputModel(
451451
func(model *inputModel) {
452-
model.CPU = utils.Ptr(int32(2))
453-
model.RAM = utils.Ptr(int32(4))
452+
model.CPU = new(int32(2))
453+
model.RAM = new(int32(4))
454454
},
455455
),
456456
mockClientSettings: mockClientSettings{
@@ -462,22 +462,22 @@ func TestBuildRequest(t *testing.T) {
462462
description: "flavor id not found",
463463
model: fixtureRequiredInputModel(
464464
func(model *inputModel) {
465-
model.CPU = utils.Ptr(int32(5))
466-
model.RAM = utils.Ptr(int32(9))
465+
model.CPU = new(int32(5))
466+
model.RAM = new(int32(9))
467467
},
468468
),
469469
mockClientSettings: mockClientSettings{
470470
listFlavorsResp: &mongodbflex.ListFlavorsResponse{
471471
Flavors: []mongodbflex.InstanceFlavor{
472472
{
473-
Id: utils.Ptr(testFlavorId),
474-
Cpu: utils.Ptr(int32(2)),
475-
Memory: utils.Ptr(int32(4)),
473+
Id: new(testFlavorId),
474+
Cpu: new(int32(2)),
475+
Memory: new(int32(4)),
476476
},
477477
{
478-
Id: utils.Ptr("other-flavor"),
479-
Cpu: utils.Ptr(int32(1)),
480-
Memory: utils.Ptr(int32(8)),
478+
Id: new("other-flavor"),
479+
Cpu: new(int32(1)),
480+
Memory: new(int32(8)),
481481
},
482482
},
483483
},
@@ -497,8 +497,8 @@ func TestBuildRequest(t *testing.T) {
497497
model: fixtureRequiredInputModel(
498498
func(model *inputModel) {
499499
model.FlavorId = nil
500-
model.CPU = utils.Ptr(int32(2))
501-
model.RAM = utils.Ptr(int32(4))
500+
model.CPU = new(int32(2))
501+
model.RAM = new(int32(4))
502502
},
503503
),
504504
mockClientSettings: mockClientSettings{

‎internal/cmd/mongodbflex/options/options_test.go‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,31 @@ func newAPIClientMock(c *mockSettings) mongodbflex.DefaultAPI {
3434
if c.listFlavorsFails {
3535
return nil, fmt.Errorf("list flavors failed")
3636
}
37-
return utils.Ptr(mongodbflex.ListFlavorsResponse{
37+
return &mongodbflex.ListFlavorsResponse{
3838
Flavors: []mongodbflex.InstanceFlavor{},
39-
}), nil
39+
}, nil
4040
}),
4141
ListVersionsExecuteMock: utils.Ptr(func(_ mongodbflex.ApiListVersionsRequest) (*mongodbflex.ListVersionsResponse, error) {
4242
c.listVersionsCalled = true
4343
if c.listVersionsFails {
4444
return nil, fmt.Errorf("list versions failed")
4545
}
46-
return utils.Ptr(mongodbflex.ListVersionsResponse{
46+
return &mongodbflex.ListVersionsResponse{
4747
Versions: []string{},
48-
}), nil
48+
}, nil
4949
}),
5050
ListStoragesExecuteMock: utils.Ptr(func(_ mongodbflex.ApiListStoragesRequest) (*mongodbflex.ListStoragesResponse, error) {
5151
c.listStoragesCalled = true
5252
if c.listStoragesFails {
5353
return nil, fmt.Errorf("list storages failed")
5454
}
55-
return utils.Ptr(mongodbflex.ListStoragesResponse{
55+
return &mongodbflex.ListStoragesResponse{
5656
StorageClasses: []string{},
5757
StorageRange: &mongodbflex.StorageRange{
58-
Min: utils.Ptr(int64(10)),
59-
Max: utils.Ptr(int64(100)),
58+
Min: new(int64(10)),
59+
Max: new(int64(100)),
6060
},
61-
}), nil
61+
}, nil
6262
}),
6363
}
6464
}
@@ -95,7 +95,7 @@ func fixtureInputModelAllTrue(mods ...func(model *inputModel)) *inputModel {
9595
Flavors: true,
9696
Versions: true,
9797
Storages: true,
98-
FlavorId: utils.Ptr("2.4"),
98+
FlavorId: new("2.4"),
9999
}
100100
for _, mod := range mods {
101101
mod(model)
@@ -145,7 +145,7 @@ func TestParseInput(t *testing.T) {
145145
isValid: true,
146146
expectedModel: fixtureInputModelAllFalse(func(model *inputModel) {
147147
model.Storages = true
148-
model.FlavorId = utils.Ptr("2.4")
148+
model.FlavorId = new("2.4")
149149
}),
150150
},
151151
{
@@ -216,7 +216,7 @@ func TestBuildAndExecuteRequest(t *testing.T) {
216216
description: "only storages",
217217
model: fixtureInputModelAllFalse(func(model *inputModel) {
218218
model.Storages = true
219-
model.FlavorId = utils.Ptr("2.4")
219+
model.FlavorId = new("2.4")
220220
}),
221221
isValid: true,
222222
expectListStoragesCalled: true,

0 commit comments

Comments
 (0)