Skip to content

Commit 3a51081

Browse files
committed
fix(mongodbflex): print valid JSON for list cmds
relates to STACKITCLI-244
1 parent 1b5d0b2 commit 3a51081

File tree

3 files changed

+34
-29
lines changed

3 files changed

+34
-29
lines changed

internal/cmd/mongodbflex/backup/list/list.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,7 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
7676
if err != nil {
7777
return fmt.Errorf("get backups for MongoDB Flex instance %q: %w", instanceLabel, err)
7878
}
79-
if resp.Items == nil || len(*resp.Items) == 0 {
80-
cmd.Printf("No backups found for instance %q\n", instanceLabel)
81-
return nil
82-
}
83-
backups := *resp.Items
79+
backups := utils.GetSliceFromPointer(resp.Items)
8480

8581
restoreJobs, err := apiClient.ListRestoreJobs(ctx, model.ProjectId, *model.InstanceId, model.Region).Execute()
8682
if err != nil {
@@ -92,7 +88,7 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
9288
backups = backups[:*model.Limit]
9389
}
9490

95-
return outputResult(params.Printer, model.OutputFormat, backups, restoreJobs)
91+
return outputResult(params.Printer, model.OutputFormat, instanceLabel, backups, restoreJobs)
9692
},
9793
}
9894

@@ -137,7 +133,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *mongodbflex
137133
return req
138134
}
139135

140-
func outputResult(p *print.Printer, outputFormat string, backups []mongodbflex.Backup, restoreJobs *mongodbflex.ListRestoreJobsResponse) error {
136+
func outputResult(p *print.Printer, outputFormat, instanceLabel string, backups []mongodbflex.Backup, restoreJobs *mongodbflex.ListRestoreJobsResponse) error {
141137
if restoreJobs == nil {
142138
return fmt.Errorf("restore jobs is empty")
143139
}
@@ -160,6 +156,11 @@ func outputResult(p *print.Printer, outputFormat string, backups []mongodbflex.B
160156

161157
return nil
162158
default:
159+
if len(backups) == 0 {
160+
p.Outputf("No backups found for instance %q\n", instanceLabel)
161+
return nil
162+
}
163+
163164
table := tables.NewTable()
164165
table.SetHeader("ID", "CREATED AT", "EXPIRES AT", "BACKUP SIZE", "RESTORE STATUS")
165166
for i := range backups {

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

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,23 +67,20 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
6767
if err != nil {
6868
return fmt.Errorf("get MongoDB Flex instances: %w", err)
6969
}
70-
if resp.Items == nil || len(*resp.Items) == 0 {
71-
projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd)
72-
if err != nil {
73-
params.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
74-
projectLabel = model.ProjectId
75-
}
76-
params.Printer.Info("No instances found for project %q\n", projectLabel)
77-
return nil
70+
instances := utils.GetSliceFromPointer(resp.Items)
71+
72+
projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd)
73+
if err != nil {
74+
params.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
75+
projectLabel = model.ProjectId
7876
}
79-
instances := *resp.Items
8077

8178
// Truncate output
8279
if model.Limit != nil && len(instances) > int(*model.Limit) {
8380
instances = instances[:*model.Limit]
8481
}
8582

86-
return outputResult(params.Printer, model.OutputFormat, instances)
83+
return outputResult(params.Printer, model.OutputFormat, projectLabel, instances)
8784
},
8885
}
8986

@@ -123,7 +120,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *mongodbflex
123120
return req
124121
}
125122

126-
func outputResult(p *print.Printer, outputFormat string, instances []mongodbflex.InstanceListInstance) error {
123+
func outputResult(p *print.Printer, outputFormat, projectLabel string, instances []mongodbflex.InstanceListInstance) error {
127124
switch outputFormat {
128125
case print.JSONOutputFormat:
129126
details, err := json.MarshalIndent(instances, "", " ")
@@ -142,6 +139,11 @@ func outputResult(p *print.Printer, outputFormat string, instances []mongodbflex
142139

143140
return nil
144141
default:
142+
if len(instances) == 0 {
143+
p.Outputf("No instances found for project %q\n", projectLabel)
144+
return nil
145+
}
146+
145147
table := tables.NewTable()
146148
table.SetHeader("ID", "NAME", "STATUS")
147149
for i := range instances {

internal/cmd/mongodbflex/user/list/list.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,20 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
7070
if err != nil {
7171
return fmt.Errorf("get MongoDB Flex users: %w", err)
7272
}
73-
if resp.Items == nil || len(*resp.Items) == 0 {
74-
instanceLabel, err := mongodbflexUtils.GetInstanceName(ctx, apiClient, model.ProjectId, *model.InstanceId, model.Region)
75-
if err != nil {
76-
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
77-
instanceLabel = *model.InstanceId
78-
}
79-
params.Printer.Info("No users found for instance %q\n", instanceLabel)
80-
return nil
73+
users := utils.GetSliceFromPointer(resp.Items)
74+
75+
instanceLabel, err := mongodbflexUtils.GetInstanceName(ctx, apiClient, model.ProjectId, *model.InstanceId, model.Region)
76+
if err != nil {
77+
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
78+
instanceLabel = *model.InstanceId
8179
}
82-
users := *resp.Items
8380

8481
// Truncate output
8582
if model.Limit != nil && len(users) > int(*model.Limit) {
8683
users = users[:*model.Limit]
8784
}
8885

89-
return outputResult(params.Printer, model.OutputFormat, users)
86+
return outputResult(params.Printer, model.OutputFormat, instanceLabel, users)
9087
},
9188
}
9289

@@ -131,7 +128,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *mongodbflex
131128
return req
132129
}
133130

134-
func outputResult(p *print.Printer, outputFormat string, users []mongodbflex.ListUser) error {
131+
func outputResult(p *print.Printer, outputFormat, instanceLabel string, users []mongodbflex.ListUser) error {
135132
switch outputFormat {
136133
case print.JSONOutputFormat:
137134
details, err := json.MarshalIndent(users, "", " ")
@@ -150,6 +147,11 @@ func outputResult(p *print.Printer, outputFormat string, users []mongodbflex.Lis
150147

151148
return nil
152149
default:
150+
if len(users) == 0 {
151+
p.Outputf("No users found for instance %q\n", instanceLabel)
152+
return nil
153+
}
154+
153155
table := tables.NewTable()
154156
table.SetHeader("ID", "USERNAME")
155157
for i := range users {

0 commit comments

Comments
 (0)