From 6b0eac56b3db93b1657875d625785c937b43e26f Mon Sep 17 00:00:00 2001 From: Vicente Pinto Date: Thu, 9 Jan 2025 14:39:56 +0000 Subject: [PATCH 1/2] Fix multi-table pager display --- internal/cmd/beta/server/describe/describe.go | 17 ++-- .../cmd/beta/sqlserverflex/options/options.go | 88 +++++++------------ .../cmd/load-balancer/describe/describe.go | 22 ++--- internal/cmd/mongodbflex/options/options.go | 44 ++++------ internal/cmd/postgresflex/options/options.go | 44 ++++------ internal/cmd/ske/options/options.go | 74 +++++++--------- internal/pkg/tables/tables.go | 11 +++ 7 files changed, 129 insertions(+), 171 deletions(-) diff --git a/internal/cmd/beta/server/describe/describe.go b/internal/cmd/beta/server/describe/describe.go index d7937851b..639b0a320 100644 --- a/internal/cmd/beta/server/describe/describe.go +++ b/internal/cmd/beta/server/describe/describe.go @@ -125,6 +125,8 @@ func outputResult(p *print.Printer, model *inputModel, server *iaas.Server) erro return nil default: + content := []tables.Table{} + table := tables.NewTable() table.SetTitle("Server") @@ -182,10 +184,7 @@ func outputResult(p *print.Printer, model *inputModel, server *iaas.Server) erro table.AddSeparator() } - err := table.Display(p) - if err != nil { - return fmt.Errorf("render table: %w", err) - } + content = append(content, table) if server.Nics != nil && len(*server.Nics) > 0 { nicsTable := tables.NewTable() @@ -201,10 +200,12 @@ func outputResult(p *print.Printer, model *inputModel, server *iaas.Server) erro nicsTable.AddSeparator() } - err := nicsTable.Display(p) - if err != nil { - return fmt.Errorf("render table: %w", err) - } + content = append(content, nicsTable) + } + + err := tables.DisplayTables(p, content) + if err != nil { + return fmt.Errorf("render table: %w", err) } return nil diff --git a/internal/cmd/beta/sqlserverflex/options/options.go b/internal/cmd/beta/sqlserverflex/options/options.go index 2624bffaa..79a1b7796 100644 --- a/internal/cmd/beta/sqlserverflex/options/options.go +++ b/internal/cmd/beta/sqlserverflex/options/options.go @@ -300,28 +300,29 @@ func outputResult(p *print.Printer, model *inputModel, flavors *sqlserverflex.Li } func outputResultAsTable(p *print.Printer, model *inputModel, options *options) error { - content := "" - if model.Flavors { - content += renderFlavors(*options.Flavors) + content := []tables.Table{} + if model.Flavors && len(*options.Flavors) != 0 { + content = append(content, buildFlavorsTable(*options.Flavors)) } - if model.Versions { - content += renderVersions(*options.Versions) + if model.Versions && len(*options.Versions) != 0 { + content = append(content, buildVersionsTable(*options.Versions)) } - if model.Storages { - content += renderStorages(options.Storages.Storages) + if model.Storages && options.Storages.Storages != nil && len(*options.Storages.Storages.StorageClasses) != 0 { + storagesTable := buildStoragesTable(*options.Storages.Storages.StorageClasses, *options.Storages.Storages.StorageRange.Min, *options.Storages.Storages.StorageRange.Max) + content = append(content, storagesTable) } - if model.UserRoles { - content += renderUserRoles(options.UserRoles) + if model.UserRoles && len(options.UserRoles.UserRoles) != 0 { + content = append(content, buildUserRoles(options.UserRoles)) } - if model.DBCompatibilities { - content += renderDBCompatibilities(options.DBCompatibilities) + if model.DBCompatibilities && len(options.DBCompatibilities.DBCompatibilities) != 0 { + content = append(content, buildDBCompatibilitiesTable(options.DBCompatibilities.DBCompatibilities)) } // Rendered at last because table is very long - if model.DBCollations { - content += renderDBCollations(options.DBCollations) + if model.DBCollations && len(options.DBCollations.DBCollations) != 0 { + content = append(content, buildDBCollationsTable(options.DBCollations.DBCollations)) } - err := p.PagerDisplay(content) + err := tables.DisplayTables(p, content) if err != nil { return fmt.Errorf("display output: %w", err) } @@ -329,11 +330,7 @@ func outputResultAsTable(p *print.Printer, model *inputModel, options *options) return nil } -func renderFlavors(flavors []sqlserverflex.InstanceFlavorEntry) string { - if len(flavors) == 0 { - return "" - } - +func buildFlavorsTable(flavors []sqlserverflex.InstanceFlavorEntry) tables.Table { table := tables.NewTable() table.SetTitle("Flavors") table.SetHeader("ID", "CPU", "MEMORY", "DESCRIPTION", "VALID INSTANCE TYPES") @@ -341,14 +338,10 @@ func renderFlavors(flavors []sqlserverflex.InstanceFlavorEntry) string { f := flavors[i] table.AddRow(*f.Id, *f.Cpu, *f.Memory, *f.Description, *f.Categories) } - return table.Render() + return table } -func renderVersions(versions []string) string { - if len(versions) == 0 { - return "" - } - +func buildVersionsTable(versions []string) tables.Table { table := tables.NewTable() table.SetTitle("Versions") table.SetHeader("VERSION") @@ -356,64 +349,47 @@ func renderVersions(versions []string) string { v := versions[i] table.AddRow(v) } - return table.Render() + return table } -func renderStorages(resp *sqlserverflex.ListStoragesResponse) string { - if resp.StorageClasses == nil || len(*resp.StorageClasses) == 0 { - return "" - } - storageClasses := *resp.StorageClasses - +func buildStoragesTable(storageClasses []string, min, max int64) tables.Table { table := tables.NewTable() table.SetTitle("Storages") table.SetHeader("MINIMUM", "MAXIMUM", "STORAGE CLASS") for i := range storageClasses { sc := storageClasses[i] - table.AddRow(*resp.StorageRange.Min, *resp.StorageRange.Max, sc) + table.AddRow(min, max, sc) } table.EnableAutoMergeOnColumns(1, 2, 3) - return table.Render() + return table } -func renderUserRoles(roles *instanceUserRoles) string { - if len(roles.UserRoles) == 0 { - return "" - } - +func buildUserRoles(roles *instanceUserRoles) tables.Table { table := tables.NewTable() table.SetTitle("User Roles") table.SetHeader("ROLE") for i := range roles.UserRoles { table.AddRow(roles.UserRoles[i]) } - return table.Render() + return table } -func renderDBCollations(dbCollations *instanceDBCollations) string { - if len(dbCollations.DBCollations) == 0 { - return "" - } - +func buildDBCollationsTable(dbCollations []sqlserverflex.MssqlDatabaseCollation) tables.Table { table := tables.NewTable() table.SetTitle("DB Collations") table.SetHeader("NAME", "DESCRIPTION") - for i := range dbCollations.DBCollations { - table.AddRow(*dbCollations.DBCollations[i].CollationName, *dbCollations.DBCollations[i].Description) + for i := range dbCollations { + table.AddRow(dbCollations[i].CollationName, dbCollations[i].Description) } - return table.Render() + return table } -func renderDBCompatibilities(dbCompatibilities *instanceDBCompatibilities) string { - if len(dbCompatibilities.DBCompatibilities) == 0 { - return "" - } - +func buildDBCompatibilitiesTable(dbCompatibilities []sqlserverflex.MssqlDatabaseCompatibility) tables.Table { table := tables.NewTable() table.SetTitle("DB Compatibilities") table.SetHeader("COMPATIBILITY LEVEL", "DESCRIPTION") - for i := range dbCompatibilities.DBCompatibilities { - table.AddRow(*dbCompatibilities.DBCompatibilities[i].CompatibilityLevel, *dbCompatibilities.DBCompatibilities[i].Description) + for i := range dbCompatibilities { + table.AddRow(dbCompatibilities[i].CompatibilityLevel, dbCompatibilities[i].Description) } - return table.Render() + return table } diff --git a/internal/cmd/load-balancer/describe/describe.go b/internal/cmd/load-balancer/describe/describe.go index d5cf4dec9..d08e5a99e 100644 --- a/internal/cmd/load-balancer/describe/describe.go +++ b/internal/cmd/load-balancer/describe/describe.go @@ -121,17 +121,19 @@ func outputResult(p *print.Printer, outputFormat string, loadBalancer *loadbalan } func outputResultAsTable(p *print.Printer, loadBalancer *loadbalancer.LoadBalancer) error { - content := renderLoadBalancer(loadBalancer) + content := []tables.Table{} + + content = append(content, buildLoadBalancerTable(loadBalancer)) if loadBalancer.Listeners != nil { - content += renderListeners(*loadBalancer.Listeners) + content = append(content, buildListenersTable(*loadBalancer.Listeners)) } if loadBalancer.TargetPools != nil { - content += renderTargetPools(*loadBalancer.TargetPools) + content = append(content, buildTargetPoolsTable(*loadBalancer.TargetPools)) } - err := p.PagerDisplay(content) + err := tables.DisplayTables(p, content) if err != nil { return fmt.Errorf("display output: %w", err) } @@ -139,7 +141,7 @@ func outputResultAsTable(p *print.Printer, loadBalancer *loadbalancer.LoadBalanc return nil } -func renderLoadBalancer(loadBalancer *loadbalancer.LoadBalancer) string { +func buildLoadBalancerTable(loadBalancer *loadbalancer.LoadBalancer) tables.Table { acl := []string{} privateAccessOnly := false if loadBalancer.Options != nil { @@ -187,10 +189,10 @@ func renderLoadBalancer(loadBalancer *loadbalancer.LoadBalancer) string { table.AddRow("ATTACHED NETWORK ID", networkId) table.AddSeparator() table.AddRow("ACL", acl) - return table.Render() + return table } -func renderListeners(listeners []loadbalancer.Listener) string { +func buildListenersTable(listeners []loadbalancer.Listener) tables.Table { table := tables.NewTable() table.SetTitle("Listeners") table.SetHeader("NAME", "PORT", "PROTOCOL", "TARGET POOL") @@ -198,15 +200,15 @@ func renderListeners(listeners []loadbalancer.Listener) string { listener := listeners[i] table.AddRow(*listener.Name, *listener.Port, *listener.Protocol, *listener.TargetPool) } - return table.Render() + return table } -func renderTargetPools(targetPools []loadbalancer.TargetPool) string { +func buildTargetPoolsTable(targetPools []loadbalancer.TargetPool) tables.Table { table := tables.NewTable() table.SetTitle("Target Pools") table.SetHeader("NAME", "PORT", "TARGETS") for _, targetPool := range targetPools { table.AddRow(*targetPool.Name, *targetPool.TargetPort, len(*targetPool.Targets)) } - return table.Render() + return table } diff --git a/internal/cmd/mongodbflex/options/options.go b/internal/cmd/mongodbflex/options/options.go index 53b62932b..e63f387ae 100644 --- a/internal/cmd/mongodbflex/options/options.go +++ b/internal/cmd/mongodbflex/options/options.go @@ -206,18 +206,19 @@ func outputResult(p *print.Printer, model *inputModel, flavors *mongodbflex.List } func outputResultAsTable(p *print.Printer, model *inputModel, options *options) error { - content := "" - if model.Flavors { - content += renderFlavors(*options.Flavors) + content := []tables.Table{} + if model.Flavors && len(*options.Flavors) != 0 { + content = append(content, buildFlavorsTable(*options.Flavors)) } - if model.Versions { - content += renderVersions(*options.Versions) + if model.Versions && len(*options.Versions) != 0 { + content = append(content, buildVersionsTable(*options.Versions)) } - if model.Storages { - content += renderStorages(options.Storages.Storages) + if model.Storages && options.Storages.Storages != nil && len(*options.Storages.Storages.StorageClasses) == 0 { + storagesTable := buildStoragesTable(*options.Storages.Storages.StorageClasses, *options.Storages.Storages.StorageRange.Min, *options.Storages.Storages.StorageRange.Max) + content = append(content, storagesTable) } - err := p.PagerDisplay(content) + err := tables.DisplayTables(p, content) if err != nil { return fmt.Errorf("display output: %w", err) } @@ -225,11 +226,7 @@ func outputResultAsTable(p *print.Printer, model *inputModel, options *options) return nil } -func renderFlavors(flavors []mongodbflex.HandlersInfraFlavor) string { - if len(flavors) == 0 { - return "" - } - +func buildFlavorsTable(flavors []mongodbflex.HandlersInfraFlavor) tables.Table { table := tables.NewTable() table.SetTitle("Flavors") table.SetHeader("ID", "CPU", "MEMORY", "DESCRIPTION", "VALID INSTANCE TYPES") @@ -237,14 +234,10 @@ func renderFlavors(flavors []mongodbflex.HandlersInfraFlavor) string { f := flavors[i] table.AddRow(*f.Id, *f.Cpu, *f.Memory, *f.Description, *f.Categories) } - return table.Render() + return table } -func renderVersions(versions []string) string { - if len(versions) == 0 { - return "" - } - +func buildVersionsTable(versions []string) tables.Table { table := tables.NewTable() table.SetTitle("Versions") table.SetHeader("VERSION") @@ -252,22 +245,17 @@ func renderVersions(versions []string) string { v := versions[i] table.AddRow(v) } - return table.Render() + return table } -func renderStorages(resp *mongodbflex.ListStoragesResponse) string { - if resp.StorageClasses == nil || len(*resp.StorageClasses) == 0 { - return "" - } - storageClasses := *resp.StorageClasses - +func buildStoragesTable(storageClasses []string, min, max int64) tables.Table { table := tables.NewTable() table.SetTitle("Storages") table.SetHeader("MINIMUM", "MAXIMUM", "STORAGE CLASS") for i := range storageClasses { sc := storageClasses[i] - table.AddRow(*resp.StorageRange.Min, *resp.StorageRange.Max, sc) + table.AddRow(min, max, sc) } table.EnableAutoMergeOnColumns(1, 2, 3) - return table.Render() + return table } diff --git a/internal/cmd/postgresflex/options/options.go b/internal/cmd/postgresflex/options/options.go index 3dc3ee205..d8d4ffb8d 100644 --- a/internal/cmd/postgresflex/options/options.go +++ b/internal/cmd/postgresflex/options/options.go @@ -206,18 +206,19 @@ func outputResult(p *print.Printer, model *inputModel, flavors *postgresflex.Lis } func outputResultAsTable(p *print.Printer, model *inputModel, options *options) error { - content := "" - if model.Flavors { - content += renderFlavors(*options.Flavors) + content := []tables.Table{} + if model.Flavors && len(*options.Flavors) != 0 { + content = append(content, buildFlavorsTable(*options.Flavors)) } - if model.Versions { - content += renderVersions(*options.Versions) + if model.Versions && len(*options.Versions) != 0 { + content = append(content, buildVersionsTable(*options.Versions)) } - if model.Storages { - content += renderStorages(options.Storages.Storages) + if model.Storages && options.Storages.Storages != nil && len(*options.Storages.Storages.StorageClasses) == 0 { + storagesTable := buildStoragesTable(*options.Storages.Storages.StorageClasses, *options.Storages.Storages.StorageRange.Min, *options.Storages.Storages.StorageRange.Max) + content = append(content, storagesTable) } - err := p.PagerDisplay(content) + err := tables.DisplayTables(p, content) if err != nil { return fmt.Errorf("display output: %w", err) } @@ -225,11 +226,7 @@ func outputResultAsTable(p *print.Printer, model *inputModel, options *options) return nil } -func renderFlavors(flavors []postgresflex.Flavor) string { - if len(flavors) == 0 { - return "" - } - +func buildFlavorsTable(flavors []postgresflex.Flavor) tables.Table { table := tables.NewTable() table.SetTitle("Flavors") table.SetHeader("ID", "CPU", "MEMORY", "DESCRIPTION") @@ -237,14 +234,10 @@ func renderFlavors(flavors []postgresflex.Flavor) string { f := flavors[i] table.AddRow(*f.Id, *f.Cpu, *f.Memory, *f.Description) } - return table.Render() + return table } -func renderVersions(versions []string) string { - if len(versions) == 0 { - return "" - } - +func buildVersionsTable(versions []string) tables.Table { table := tables.NewTable() table.SetTitle("Versions") table.SetHeader("VERSION") @@ -252,22 +245,17 @@ func renderVersions(versions []string) string { v := versions[i] table.AddRow(v) } - return table.Render() + return table } -func renderStorages(resp *postgresflex.ListStoragesResponse) string { - if resp.StorageClasses == nil || len(*resp.StorageClasses) == 0 { - return "" - } - storageClasses := *resp.StorageClasses - +func buildStoragesTable(storageClasses []string, min, max int64) tables.Table { table := tables.NewTable() table.SetTitle("Storages") table.SetHeader("MINIMUM", "MAXIMUM", "STORAGE CLASS") for i := range storageClasses { sc := storageClasses[i] - table.AddRow(*resp.StorageRange.Min, *resp.StorageRange.Max, sc) + table.AddRow(min, max, sc) } table.EnableAutoMergeOnColumns(1, 2, 3) - return table.Render() + return table } diff --git a/internal/cmd/ske/options/options.go b/internal/cmd/ske/options/options.go index 4982eaa49..fd0976997 100644 --- a/internal/cmd/ske/options/options.go +++ b/internal/cmd/ske/options/options.go @@ -178,20 +178,32 @@ func outputResult(p *print.Printer, model *inputModel, options *ske.ProviderOpti } func outputResultAsTable(p *print.Printer, options *ske.ProviderOptions) error { - content := "" - content += renderAvailabilityZones(options) + content := []tables.Table{} + if options.AvailabilityZones != nil && len(*options.AvailabilityZones) != 0 { + content = append(content, buildAvailabilityZonesTable(options)) + } - kubernetesVersionsRendered, err := renderKubernetesVersions(options) - if err != nil { - return fmt.Errorf("render Kubernetes versions: %w", err) + if options.KubernetesVersions != nil && len(*options.KubernetesVersions) != 0 { + kubernetesVersionsTable, err := buildKubernetesVersionsTable(options) + if err != nil { + return fmt.Errorf("build Kubernetes versions table: %w", err) + } + content = append(content, kubernetesVersionsTable) + } + + if options.MachineImages != nil && len(*options.MachineImages) != 0 { + content = append(content, buildMachineImagesTable(options)) } - content += kubernetesVersionsRendered - content += renderMachineImages(options) - content += renderMachineTypes(options) - content += renderVolumeTypes(options) + if options.MachineTypes != nil && len(*options.MachineTypes) != 0 { + content = append(content, buildMachineTypesTable(options)) + } - err = p.PagerDisplay(content) + if options.VolumeTypes != nil && len(*options.VolumeTypes) != 0 { + content = append(content, buildVolumeTypesTable(options)) + } + + err := tables.DisplayTables(p, content) if err != nil { return fmt.Errorf("display output: %w", err) } @@ -199,11 +211,7 @@ func outputResultAsTable(p *print.Printer, options *ske.ProviderOptions) error { return nil } -func renderAvailabilityZones(resp *ske.ProviderOptions) string { - if resp.AvailabilityZones == nil { - return "" - } - +func buildAvailabilityZonesTable(resp *ske.ProviderOptions) tables.Table { zones := *resp.AvailabilityZones table := tables.NewTable() @@ -213,14 +221,10 @@ func renderAvailabilityZones(resp *ske.ProviderOptions) string { z := zones[i] table.AddRow(*z.Name) } - return table.Render() + return table } -func renderKubernetesVersions(resp *ske.ProviderOptions) (string, error) { - if resp.KubernetesVersions == nil { - return "", nil - } - +func buildKubernetesVersionsTable(resp *ske.ProviderOptions) (tables.Table, error) { versions := *resp.KubernetesVersions table := tables.NewTable() @@ -230,7 +234,7 @@ func renderKubernetesVersions(resp *ske.ProviderOptions) (string, error) { v := versions[i] featureGate, err := json.Marshal(*v.FeatureGates) if err != nil { - return "", fmt.Errorf("marshal featureGates of Kubernetes version %q: %w", *v.Version, err) + return table, fmt.Errorf("marshal featureGates of Kubernetes version %q: %w", *v.Version, err) } expirationDate := "" if v.ExpirationDate != nil { @@ -238,14 +242,10 @@ func renderKubernetesVersions(resp *ske.ProviderOptions) (string, error) { } table.AddRow(*v.Version, *v.State, expirationDate, string(featureGate)) } - return table.Render(), nil + return table, nil } -func renderMachineImages(resp *ske.ProviderOptions) string { - if resp.MachineImages == nil { - return "" - } - +func buildMachineImagesTable(resp *ske.ProviderOptions) tables.Table { images := *resp.MachineImages table := tables.NewTable() @@ -271,14 +271,10 @@ func renderMachineImages(resp *ske.ProviderOptions) string { } } table.EnableAutoMergeOnColumns(1) - return table.Render() + return table } -func renderMachineTypes(resp *ske.ProviderOptions) string { - if resp.MachineTypes == nil { - return "" - } - +func buildMachineTypesTable(resp *ske.ProviderOptions) tables.Table { types := *resp.MachineTypes table := tables.NewTable() @@ -288,14 +284,10 @@ func renderMachineTypes(resp *ske.ProviderOptions) string { t := types[i] table.AddRow(*t.Name, *t.Cpu, *t.Memory) } - return table.Render() + return table } -func renderVolumeTypes(resp *ske.ProviderOptions) string { - if resp.VolumeTypes == nil { - return "" - } - +func buildVolumeTypesTable(resp *ske.ProviderOptions) tables.Table { types := *resp.VolumeTypes table := tables.NewTable() @@ -305,5 +297,5 @@ func renderVolumeTypes(resp *ske.ProviderOptions) string { z := types[i] table.AddRow(*z.Name) } - return table.Render() + return table } diff --git a/internal/pkg/tables/tables.go b/internal/pkg/tables/tables.go index de8e0b397..19f1eacd2 100644 --- a/internal/pkg/tables/tables.go +++ b/internal/pkg/tables/tables.go @@ -78,3 +78,14 @@ func (t *Table) Render() string { func (t *Table) Display(p *print.Printer) error { return p.PagerDisplay(t.Render()) } + +// Displays multiple tables in the command's stdout +func DisplayTables(p *print.Printer, tables []Table) error { + renderedTables := "" + + for _, t := range tables { + renderedTables += t.Render() + } + + return p.PagerDisplay(renderedTables) +} From 09c5ca92e359a2a5d9c46502cc22b79c28681d9b Mon Sep 17 00:00:00 2001 From: Vicente Pinto Date: Thu, 9 Jan 2025 17:00:44 +0000 Subject: [PATCH 2/2] Fix lint g --- internal/cmd/beta/sqlserverflex/options/options.go | 12 ++++++------ internal/cmd/mongodbflex/options/options.go | 12 ++++++------ internal/cmd/postgresflex/options/options.go | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/internal/cmd/beta/sqlserverflex/options/options.go b/internal/cmd/beta/sqlserverflex/options/options.go index 79a1b7796..1a3763735 100644 --- a/internal/cmd/beta/sqlserverflex/options/options.go +++ b/internal/cmd/beta/sqlserverflex/options/options.go @@ -308,8 +308,7 @@ func outputResultAsTable(p *print.Printer, model *inputModel, options *options) content = append(content, buildVersionsTable(*options.Versions)) } if model.Storages && options.Storages.Storages != nil && len(*options.Storages.Storages.StorageClasses) != 0 { - storagesTable := buildStoragesTable(*options.Storages.Storages.StorageClasses, *options.Storages.Storages.StorageRange.Min, *options.Storages.Storages.StorageRange.Max) - content = append(content, storagesTable) + content = append(content, buildStoragesTable(*options.Storages.Storages)) } if model.UserRoles && len(options.UserRoles.UserRoles) != 0 { content = append(content, buildUserRoles(options.UserRoles)) @@ -352,13 +351,14 @@ func buildVersionsTable(versions []string) tables.Table { return table } -func buildStoragesTable(storageClasses []string, min, max int64) tables.Table { +func buildStoragesTable(storagesResp sqlserverflex.ListStoragesResponse) tables.Table { + storages := *storagesResp.StorageClasses table := tables.NewTable() table.SetTitle("Storages") table.SetHeader("MINIMUM", "MAXIMUM", "STORAGE CLASS") - for i := range storageClasses { - sc := storageClasses[i] - table.AddRow(min, max, sc) + for i := range storages { + sc := storages[i] + table.AddRow(*storagesResp.StorageRange.Min, *storagesResp.StorageRange.Max, sc) } table.EnableAutoMergeOnColumns(1, 2, 3) return table diff --git a/internal/cmd/mongodbflex/options/options.go b/internal/cmd/mongodbflex/options/options.go index e63f387ae..e58a5e311 100644 --- a/internal/cmd/mongodbflex/options/options.go +++ b/internal/cmd/mongodbflex/options/options.go @@ -214,8 +214,7 @@ func outputResultAsTable(p *print.Printer, model *inputModel, options *options) content = append(content, buildVersionsTable(*options.Versions)) } if model.Storages && options.Storages.Storages != nil && len(*options.Storages.Storages.StorageClasses) == 0 { - storagesTable := buildStoragesTable(*options.Storages.Storages.StorageClasses, *options.Storages.Storages.StorageRange.Min, *options.Storages.Storages.StorageRange.Max) - content = append(content, storagesTable) + content = append(content, buildStoragesTable(*options.Storages.Storages)) } err := tables.DisplayTables(p, content) @@ -248,13 +247,14 @@ func buildVersionsTable(versions []string) tables.Table { return table } -func buildStoragesTable(storageClasses []string, min, max int64) tables.Table { +func buildStoragesTable(storagesResp mongodbflex.ListStoragesResponse) tables.Table { + storages := *storagesResp.StorageClasses table := tables.NewTable() table.SetTitle("Storages") table.SetHeader("MINIMUM", "MAXIMUM", "STORAGE CLASS") - for i := range storageClasses { - sc := storageClasses[i] - table.AddRow(min, max, sc) + for i := range storages { + sc := storages[i] + table.AddRow(*storagesResp.StorageRange.Min, *storagesResp.StorageRange.Max, sc) } table.EnableAutoMergeOnColumns(1, 2, 3) return table diff --git a/internal/cmd/postgresflex/options/options.go b/internal/cmd/postgresflex/options/options.go index d8d4ffb8d..f5833d151 100644 --- a/internal/cmd/postgresflex/options/options.go +++ b/internal/cmd/postgresflex/options/options.go @@ -214,8 +214,7 @@ func outputResultAsTable(p *print.Printer, model *inputModel, options *options) content = append(content, buildVersionsTable(*options.Versions)) } if model.Storages && options.Storages.Storages != nil && len(*options.Storages.Storages.StorageClasses) == 0 { - storagesTable := buildStoragesTable(*options.Storages.Storages.StorageClasses, *options.Storages.Storages.StorageRange.Min, *options.Storages.Storages.StorageRange.Max) - content = append(content, storagesTable) + content = append(content, buildStoragesTable(*options.Storages.Storages)) } err := tables.DisplayTables(p, content) @@ -248,13 +247,14 @@ func buildVersionsTable(versions []string) tables.Table { return table } -func buildStoragesTable(storageClasses []string, min, max int64) tables.Table { +func buildStoragesTable(storagesResp postgresflex.ListStoragesResponse) tables.Table { + storages := *storagesResp.StorageClasses table := tables.NewTable() table.SetTitle("Storages") table.SetHeader("MINIMUM", "MAXIMUM", "STORAGE CLASS") - for i := range storageClasses { - sc := storageClasses[i] - table.AddRow(min, max, sc) + for i := range storages { + sc := storages[i] + table.AddRow(*storagesResp.StorageRange.Min, *storagesResp.StorageRange.Max, sc) } table.EnableAutoMergeOnColumns(1, 2, 3) return table