Skip to content

Commit 1c0da0f

Browse files
committed
adapted load balancers list command to return valid json/yaml for empty api responses
1 parent 1dc73b4 commit 1c0da0f

2 files changed

Lines changed: 14 additions & 12 deletions

File tree

internal/cmd/load-balancer/list/list.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,23 +67,20 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6767
return fmt.Errorf("get load balancers: %w", err)
6868
}
6969

70-
if resp.LoadBalancers == nil || (resp.LoadBalancers != nil && len(*resp.LoadBalancers) == 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 load balancers found for project %q\n", projectLabel)
77-
return nil
70+
loadBalancers := utils.GetSliceFromPointer(resp.LoadBalancers)
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
}
7977

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

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

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

126-
func outputResult(p *print.Printer, outputFormat string, loadBalancers []loadbalancer.LoadBalancer) error {
123+
func outputResult(p *print.Printer, outputFormat, projectLabel string, loadBalancers []loadbalancer.LoadBalancer) error {
127124
return p.OutputResult(outputFormat, loadBalancers, func() error {
125+
if len(loadBalancers) == 0 {
126+
p.Outputf("No load balancers found for project %q\n", projectLabel)
127+
return nil
128+
}
128129
table := tables.NewTable()
129130
table.SetHeader("NAME", "STATE", "IP ADDRESS", "LISTENERS", "TARGET POOLS")
130131
for i := range loadBalancers {

internal/cmd/load-balancer/list/list_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ func TestBuildRequest(t *testing.T) {
155155
func TestOutputResult(t *testing.T) {
156156
type args struct {
157157
outputFormat string
158+
projectLabel string
158159
loadBalancers []loadbalancer.LoadBalancer
159160
}
160161
tests := []struct {
@@ -185,7 +186,7 @@ func TestOutputResult(t *testing.T) {
185186
params := testparams.NewTestParams()
186187
for _, tt := range tests {
187188
t.Run(tt.name, func(t *testing.T) {
188-
if err := outputResult(params.Printer, tt.args.outputFormat, tt.args.loadBalancers); (err != nil) != tt.wantErr {
189+
if err := outputResult(params.Printer, tt.args.outputFormat, tt.args.projectLabel, tt.args.loadBalancers); (err != nil) != tt.wantErr {
189190
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
190191
}
191192
})

0 commit comments

Comments
 (0)