Skip to content

Commit 1dc73b4

Browse files
authored
fix(serverupdate): print valid JSON/YAML output for list cmds (#1380)
relates to relates to STACKITCLI-387 and #893
1 parent 6d3be8e commit 1dc73b4

4 files changed

Lines changed: 37 additions & 32 deletions

File tree

internal/cmd/server/os-update/list/list.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -67,27 +67,24 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6767
if err != nil {
6868
return fmt.Errorf("list server os-update: %w", err)
6969
}
70-
updates := *resp.Items
71-
if len(updates) == 0 {
72-
serverLabel := model.ServerId
73-
// Get server name
74-
if iaasApiClient, err := iaasClient.ConfigureClient(params.Printer, params.CliVersion); err == nil {
75-
serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.Region, model.ServerId)
76-
if err != nil {
77-
params.Printer.Debug(print.ErrorLevel, "get server name: %v", err)
78-
} else if serverName != "" {
79-
serverLabel = serverName
80-
}
70+
updates := resp.GetItems()
71+
72+
serverLabel := model.ServerId
73+
// Get server name
74+
if iaasApiClient, err := iaasClient.ConfigureClient(params.Printer, params.CliVersion); err == nil {
75+
serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.Region, model.ServerId)
76+
if err != nil {
77+
params.Printer.Debug(print.ErrorLevel, "get server name: %v", err)
78+
} else if serverName != "" {
79+
serverLabel = serverName
8180
}
82-
params.Printer.Info("No os-updates found for server %s\n", serverLabel)
83-
return nil
8481
}
8582

8683
// Truncate output
8784
if model.Limit != nil && len(updates) > int(*model.Limit) {
8885
updates = updates[:*model.Limit]
8986
}
90-
return outputResult(params.Printer, model.OutputFormat, updates)
87+
return outputResult(params.Printer, model.OutputFormat, serverLabel, updates)
9188
},
9289
}
9390
configureFlags(cmd)
@@ -131,8 +128,12 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverupdat
131128
return req
132129
}
133130

134-
func outputResult(p *print.Printer, outputFormat string, updates []serverupdate.Update) error {
131+
func outputResult(p *print.Printer, outputFormat, serverLabel string, updates []serverupdate.Update) error {
135132
return p.OutputResult(outputFormat, updates, func() error {
133+
if len(updates) == 0 {
134+
p.Outputf("No os-updates found for server %s\n", serverLabel)
135+
return nil
136+
}
136137
table := tables.NewTable()
137138
table.SetHeader("ID", "STATUS", "INSTALLED UPDATES", "FAILED UPDATES", "START DATE", "END DATE")
138139
for i := range updates {

internal/cmd/server/os-update/list/list_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ func TestBuildRequest(t *testing.T) {
157157
func TestOutputResult(t *testing.T) {
158158
type args struct {
159159
outputFormat string
160+
serverLabel string
160161
updates []serverupdate.Update
161162
}
162163
tests := []struct {
@@ -173,7 +174,7 @@ func TestOutputResult(t *testing.T) {
173174
params := testparams.NewTestParams()
174175
for _, tt := range tests {
175176
t.Run(tt.name, func(t *testing.T) {
176-
if err := outputResult(params.Printer, tt.args.outputFormat, tt.args.updates); (err != nil) != tt.wantErr {
177+
if err := outputResult(params.Printer, tt.args.outputFormat, tt.args.serverLabel, tt.args.updates); (err != nil) != tt.wantErr {
177178
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
178179
}
179180
})

internal/cmd/server/os-update/schedule/list/list.go

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -67,27 +67,25 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6767
if err != nil {
6868
return fmt.Errorf("list server os-update schedules: %w", err)
6969
}
70-
schedules := *resp.Items
71-
if len(schedules) == 0 {
72-
serverLabel := model.ServerId
73-
// Get server name
74-
if iaasApiClient, err := iaasClient.ConfigureClient(params.Printer, params.CliVersion); err == nil {
75-
serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.Region, model.ServerId)
76-
if err != nil {
77-
params.Printer.Debug(print.ErrorLevel, "get server name: %v", err)
78-
} else if serverName != "" {
79-
serverLabel = serverName
80-
}
70+
71+
schedules := resp.GetItems()
72+
73+
serverLabel := model.ServerId
74+
// Get server name
75+
if iaasApiClient, err := iaasClient.ConfigureClient(params.Printer, params.CliVersion); err == nil {
76+
serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.Region, model.ServerId)
77+
if err != nil {
78+
params.Printer.Debug(print.ErrorLevel, "get server name: %v", err)
79+
} else if serverName != "" {
80+
serverLabel = serverName
8181
}
82-
params.Printer.Info("No os-update schedules found for server %s\n", serverLabel)
83-
return nil
8482
}
8583

8684
// Truncate output
8785
if model.Limit != nil && len(schedules) > int(*model.Limit) {
8886
schedules = schedules[:*model.Limit]
8987
}
90-
return outputResult(params.Printer, model.OutputFormat, schedules)
88+
return outputResult(params.Printer, model.OutputFormat, serverLabel, schedules)
9189
},
9290
}
9391
configureFlags(cmd)
@@ -131,8 +129,12 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverupdat
131129
return req
132130
}
133131

134-
func outputResult(p *print.Printer, outputFormat string, schedules []serverupdate.UpdateSchedule) error {
132+
func outputResult(p *print.Printer, outputFormat, serverLabel string, schedules []serverupdate.UpdateSchedule) error {
135133
return p.OutputResult(outputFormat, schedules, func() error {
134+
if len(schedules) == 0 {
135+
p.Outputf("No os-update schedules found for server %s\n", serverLabel)
136+
return nil
137+
}
136138
table := tables.NewTable()
137139
table.SetHeader("SCHEDULE ID", "SCHEDULE NAME", "ENABLED", "RRULE", "MAINTENANCE WINDOW")
138140
for i := range schedules {

internal/cmd/server/os-update/schedule/list/list_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ func TestBuildRequest(t *testing.T) {
157157
func TestOutputResult(t *testing.T) {
158158
type args struct {
159159
outputFormat string
160+
serverLabel string
160161
schedules []serverupdate.UpdateSchedule
161162
}
162163
tests := []struct {
@@ -173,7 +174,7 @@ func TestOutputResult(t *testing.T) {
173174
params := testparams.NewTestParams()
174175
for _, tt := range tests {
175176
t.Run(tt.name, func(t *testing.T) {
176-
if err := outputResult(params.Printer, tt.args.outputFormat, tt.args.schedules); (err != nil) != tt.wantErr {
177+
if err := outputResult(params.Printer, tt.args.outputFormat, tt.args.serverLabel, tt.args.schedules); (err != nil) != tt.wantErr {
177178
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
178179
}
179180
})

0 commit comments

Comments
 (0)