Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions internal/cmd/mongodbflex/backup/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,7 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
if err != nil {
return fmt.Errorf("get backups for MongoDB Flex instance %q: %w", instanceLabel, err)
}
if resp.Items == nil || len(*resp.Items) == 0 {
cmd.Printf("No backups found for instance %q\n", instanceLabel)
return nil
}
backups := *resp.Items
backups := utils.GetSliceFromPointer(resp.Items)

restoreJobs, err := apiClient.ListRestoreJobs(ctx, model.ProjectId, *model.InstanceId, model.Region).Execute()
if err != nil {
Expand All @@ -90,7 +86,7 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
backups = backups[:*model.Limit]
}

return outputResult(params.Printer, model.OutputFormat, backups, restoreJobs)
return outputResult(params.Printer, model.OutputFormat, instanceLabel, backups, restoreJobs)
},
}

Expand Down Expand Up @@ -135,12 +131,17 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *mongodbflex
return req
}

func outputResult(p *print.Printer, outputFormat string, backups []mongodbflex.Backup, restoreJobs *mongodbflex.ListRestoreJobsResponse) error {
func outputResult(p *print.Printer, outputFormat, instanceLabel string, backups []mongodbflex.Backup, restoreJobs *mongodbflex.ListRestoreJobsResponse) error {
if restoreJobs == nil {
return fmt.Errorf("restore jobs is empty")
}

return p.OutputResult(outputFormat, backups, func() error {
if len(backups) == 0 {
p.Outputf("No backups found for instance %q\n", instanceLabel)
return nil
}

table := tables.NewTable()
table.SetHeader("ID", "CREATED AT", "EXPIRES AT", "BACKUP SIZE", "RESTORE STATUS")
for i := range backups {
Expand Down
9 changes: 5 additions & 4 deletions internal/cmd/mongodbflex/backup/list/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -215,9 +215,10 @@ func TestBuildRequest(t *testing.T) {

func TestOutputResult(t *testing.T) {
type args struct {
outputFormat string
backups []mongodbflex.Backup
restoreJobs *mongodbflex.ListRestoreJobsResponse
outputFormat string
instanceLabel string
backups []mongodbflex.Backup
restoreJobs *mongodbflex.ListRestoreJobsResponse
}
tests := []struct {
name string
Expand Down Expand Up @@ -256,7 +257,7 @@ func TestOutputResult(t *testing.T) {
p.Cmd = NewCmd(&params.CmdParams{Printer: p})
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := outputResult(p, tt.args.outputFormat, tt.args.backups, tt.args.restoreJobs); (err != nil) != tt.wantErr {
if err := outputResult(p, tt.args.outputFormat, tt.args.instanceLabel, tt.args.backups, tt.args.restoreJobs); (err != nil) != tt.wantErr {
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
}
})
Expand Down
24 changes: 13 additions & 11 deletions internal/cmd/mongodbflex/instance/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,23 +65,20 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
if err != nil {
return fmt.Errorf("get MongoDB Flex instances: %w", err)
}
if resp.Items == nil || len(*resp.Items) == 0 {
projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd)
if err != nil {
params.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
projectLabel = model.ProjectId
}
params.Printer.Info("No instances found for project %q\n", projectLabel)
return nil
instances := utils.GetSliceFromPointer(resp.Items)

projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd)
if err != nil {
params.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
projectLabel = model.ProjectId
}
instances := *resp.Items

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

return outputResult(params.Printer, model.OutputFormat, instances)
return outputResult(params.Printer, model.OutputFormat, projectLabel, instances)
},
}

Expand Down Expand Up @@ -121,8 +118,13 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *mongodbflex
return req
}

func outputResult(p *print.Printer, outputFormat string, instances []mongodbflex.InstanceListInstance) error {
func outputResult(p *print.Printer, outputFormat, projectLabel string, instances []mongodbflex.InstanceListInstance) error {
return p.OutputResult(outputFormat, instances, func() error {
if len(instances) == 0 {
p.Outputf("No instances found for project %q\n", projectLabel)
return nil
}

table := tables.NewTable()
table.SetHeader("ID", "NAME", "STATUS")
for i := range instances {
Expand Down
3 changes: 2 additions & 1 deletion internal/cmd/mongodbflex/instance/list/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ func TestBuildRequest(t *testing.T) {
func TestOutputResult(t *testing.T) {
type args struct {
outputFormat string
projectLabel string
instanceList []mongodbflex.InstanceListInstance
}
tests := []struct {
Expand Down Expand Up @@ -226,7 +227,7 @@ func TestOutputResult(t *testing.T) {
p.Cmd = NewCmd(&params.CmdParams{Printer: p})
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := outputResult(p, tt.args.outputFormat, tt.args.instanceList); (err != nil) != tt.wantErr {
if err := outputResult(p, tt.args.outputFormat, tt.args.projectLabel, tt.args.instanceList); (err != nil) != tt.wantErr {
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
}
})
Expand Down
24 changes: 13 additions & 11 deletions internal/cmd/mongodbflex/user/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,23 +68,20 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
if err != nil {
return fmt.Errorf("get MongoDB Flex users: %w", err)
}
if resp.Items == nil || len(*resp.Items) == 0 {
instanceLabel, err := mongodbflexUtils.GetInstanceName(ctx, apiClient, model.ProjectId, *model.InstanceId, model.Region)
if err != nil {
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
instanceLabel = *model.InstanceId
}
params.Printer.Info("No users found for instance %q\n", instanceLabel)
return nil
users := utils.GetSliceFromPointer(resp.Items)

instanceLabel, err := mongodbflexUtils.GetInstanceName(ctx, apiClient, model.ProjectId, *model.InstanceId, model.Region)
if err != nil {
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
instanceLabel = *model.InstanceId
}
users := *resp.Items

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

return outputResult(params.Printer, model.OutputFormat, users)
return outputResult(params.Printer, model.OutputFormat, instanceLabel, users)
},
}

Expand Down Expand Up @@ -129,8 +126,13 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *mongodbflex
return req
}

func outputResult(p *print.Printer, outputFormat string, users []mongodbflex.ListUser) error {
func outputResult(p *print.Printer, outputFormat, instanceLabel string, users []mongodbflex.ListUser) error {
return p.OutputResult(outputFormat, users, func() error {
if len(users) == 0 {
p.Outputf("No users found for instance %q\n", instanceLabel)
return nil
}

table := tables.NewTable()
table.SetHeader("ID", "USERNAME")
for i := range users {
Expand Down
7 changes: 4 additions & 3 deletions internal/cmd/mongodbflex/user/list/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,9 @@ func TestBuildRequest(t *testing.T) {

func TestOutputResult(t *testing.T) {
type args struct {
outputFormat string
users []mongodbflex.ListUser
outputFormat string
instanceLabel string
users []mongodbflex.ListUser
}
tests := []struct {
name string
Expand Down Expand Up @@ -243,7 +244,7 @@ func TestOutputResult(t *testing.T) {
p.Cmd = NewCmd(&params.CmdParams{Printer: p})
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := outputResult(p, tt.args.outputFormat, tt.args.users); (err != nil) != tt.wantErr {
if err := outputResult(p, tt.args.outputFormat, tt.args.instanceLabel, tt.args.users); (err != nil) != tt.wantErr {
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
}
})
Expand Down
Loading