From 72b451d281c63f17bc3316e10823bfe7bc44e734 Mon Sep 17 00:00:00 2001 From: Marcel Jacek Date: Tue, 18 Feb 2025 15:54:03 +0100 Subject: [PATCH 1/3] Add nil pointer checks and tests for the outputResult functions --- .../cmd/beta/server/backup/create/create.go | 21 ++++-- .../beta/server/backup/create/create_test.go | 28 ++++++++ .../beta/server/backup/describe/describe.go | 11 ++- .../server/backup/describe/describe_test.go | 35 ++++++++++ .../cmd/beta/server/backup/disable/disable.go | 19 +++++- .../cmd/beta/server/backup/enable/enable.go | 17 ++++- internal/cmd/beta/server/backup/list/list.go | 6 +- .../cmd/beta/server/backup/list/list_test.go | 36 ++++++++++ .../server/backup/schedule/create/create.go | 23 +++++-- .../backup/schedule/create/create_test.go | 27 ++++++++ .../server/backup/schedule/delete/delete.go | 15 +++- .../backup/schedule/describe/describe.go | 8 +-- .../backup/schedule/describe/describe_test.go | 68 ++++++++++++++++++- .../beta/server/backup/schedule/list/list.go | 15 +++- .../server/backup/schedule/list/list_test.go | 47 +++++++++++++ .../server/backup/schedule/update/update.go | 6 +- .../backup/schedule/update/update_test.go | 27 ++++++++ .../cmd/beta/server/command/create/create.go | 23 +++++-- .../beta/server/command/create/create_test.go | 27 ++++++++ .../beta/server/command/describe/describe.go | 4 +- .../server/command/describe/describe_test.go | 27 ++++++++ internal/cmd/beta/server/command/list/list.go | 20 ++++-- .../cmd/beta/server/command/list/list_test.go | 27 ++++++++ .../command/template/describe/describe.go | 7 +- .../template/describe/describe_test.go | 27 ++++++++ .../beta/server/command/template/list/list.go | 4 +- .../server/command/template/list/list_test.go | 35 ++++++++++ internal/cmd/beta/server/console/console.go | 6 +- .../cmd/beta/server/console/console_test.go | 37 ++++++++++ internal/cmd/beta/server/create/create.go | 9 ++- .../cmd/beta/server/create/create_test.go | 35 ++++++++++ internal/cmd/beta/server/describe/describe.go | 9 +-- .../cmd/beta/server/describe/describe_test.go | 35 ++++++++++ internal/cmd/beta/server/list/list_test.go | 27 ++++++++ internal/cmd/beta/server/log/log.go | 8 +-- internal/cmd/beta/server/log/log_test.go | 28 ++++++++ .../server/machine-type/describe/describe.go | 3 + .../machine-type/describe/describe_test.go | 27 ++++++++ .../cmd/beta/server/machine-type/list/list.go | 12 ++-- .../server/machine-type/list/list_test.go | 27 ++++++++ .../network-interface/list/list_test.go | 37 ++++++++++ .../beta/server/os-update/create/create.go | 23 +++++-- .../server/os-update/create/create_test.go | 28 ++++++++ .../server/os-update/describe/describe.go | 4 +- .../os-update/describe/describe_test.go | 27 ++++++++ .../beta/server/os-update/disable/disable.go | 17 ++++- .../beta/server/os-update/enable/enable.go | 17 ++++- .../cmd/beta/server/os-update/list/list.go | 14 +++- .../beta/server/os-update/list/list_test.go | 27 ++++++++ .../os-update/schedule/create/create.go | 23 +++++-- .../os-update/schedule/create/create_test.go | 28 ++++++++ .../os-update/schedule/describe/describe.go | 4 +- .../schedule/describe/describe_test.go | 27 ++++++++ .../server/os-update/schedule/list/list.go | 14 +++- .../os-update/schedule/list/list_test.go | 27 ++++++++ .../os-update/schedule/update/update.go | 6 +- .../os-update/schedule/update/update_test.go | 27 ++++++++ .../server/service-account/attach/attach.go | 4 +- .../service-account/attach/attach_test.go | 29 ++++++++ .../server/service-account/detach/detach.go | 4 +- .../service-account/detach/detach_test.go | 29 ++++++++ .../beta/server/service-account/list/list.go | 2 +- .../server/service-account/list/list_test.go | 38 +++++++++++ internal/cmd/beta/server/update/update.go | 6 +- .../cmd/beta/server/update/update_test.go | 28 ++++++++ .../cmd/beta/server/volume/attach/attach.go | 4 +- .../beta/server/volume/attach/attach_test.go | 29 ++++++++ .../beta/server/volume/describe/describe.go | 6 +- .../server/volume/describe/describe_test.go | 29 ++++++++ internal/cmd/beta/server/volume/list/list.go | 6 +- .../cmd/beta/server/volume/list/list_test.go | 38 +++++++++++ .../cmd/beta/server/volume/update/update.go | 4 +- .../beta/server/volume/update/update_test.go | 29 ++++++++ 73 files changed, 1400 insertions(+), 108 deletions(-) diff --git a/internal/cmd/beta/server/backup/create/create.go b/internal/cmd/beta/server/backup/create/create.go index f53f3b9ef..e7d1134e4 100644 --- a/internal/cmd/beta/server/backup/create/create.go +++ b/internal/cmd/beta/server/backup/create/create.go @@ -12,6 +12,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverbackup/client" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -65,6 +67,17 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to create a Backup for server %s?", model.ServerId) err = p.PromptForConfirmation(prompt) @@ -83,7 +96,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("create Server Backup: %w", err) } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, serverLabel, *resp) }, } configureFlags(cmd) @@ -140,8 +153,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverbacku return req, nil } -func outputResult(p *print.Printer, model *inputModel, resp *serverbackup.BackupJob) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, serverLabel string, resp serverbackup.BackupJob) error { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { @@ -159,7 +172,7 @@ func outputResult(p *print.Printer, model *inputModel, resp *serverbackup.Backup return nil default: - p.Outputf("Triggered creation of server backup for server %s. Backup ID: %s\n", model.ServerId, utils.PtrString(resp.Id)) + p.Outputf("Triggered creation of server backup for server %s. Backup ID: %s\n", serverLabel, utils.PtrString(resp.Id)) return nil } } diff --git a/internal/cmd/beta/server/backup/create/create_test.go b/internal/cmd/beta/server/backup/create/create_test.go index 18bf4046d..a4fd801f3 100644 --- a/internal/cmd/beta/server/backup/create/create_test.go +++ b/internal/cmd/beta/server/backup/create/create_test.go @@ -208,3 +208,31 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serverLabel string + resp serverbackup.BackupJob + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/backup/describe/describe.go b/internal/cmd/beta/server/backup/describe/describe.go index 3396fd18c..2f55048cd 100644 --- a/internal/cmd/beta/server/backup/describe/describe.go +++ b/internal/cmd/beta/server/backup/describe/describe.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "strconv" "github.com/goccy/go-yaml" "github.com/stackitcloud/stackit-cli/internal/pkg/args" @@ -64,7 +65,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("read server backup: %w", err) } - return outputResult(p, model.OutputFormat, resp) + return outputResult(p, model.OutputFormat, *resp) }, } configureFlags(cmd) @@ -109,7 +110,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverbacku return req } -func outputResult(p *print.Printer, outputFormat string, backup *serverbackup.Backup) error { +func outputResult(p *print.Printer, outputFormat string, backup serverbackup.Backup) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(backup, "", " ") @@ -145,7 +146,11 @@ func outputResult(p *print.Printer, outputFormat string, backup *serverbackup.Ba lastRestored := utils.PtrStringDefault(backup.LastRestoredAt, "") table.AddRow("LAST RESTORED AT", lastRestored) table.AddSeparator() - table.AddRow("VOLUME BACKUPS", len(*backup.VolumeBackups)) + volBackups := "" + if backups := backup.VolumeBackups; backups != nil { + volBackups = strconv.Itoa(len(*backups)) + } + table.AddRow("VOLUME BACKUPS", volBackups) table.AddSeparator() err := table.Display(p) diff --git a/internal/cmd/beta/server/backup/describe/describe_test.go b/internal/cmd/beta/server/backup/describe/describe_test.go index a4f979e0a..efa3e370a 100644 --- a/internal/cmd/beta/server/backup/describe/describe_test.go +++ b/internal/cmd/beta/server/backup/describe/describe_test.go @@ -209,3 +209,38 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + backup serverbackup.Backup + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "output format json", + args: args{ + outputFormat: print.JSONOutputFormat, + backup: serverbackup.Backup{}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.backup); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/backup/disable/disable.go b/internal/cmd/beta/server/backup/disable/disable.go index 3f3777ccb..084330a80 100644 --- a/internal/cmd/beta/server/backup/disable/disable.go +++ b/internal/cmd/beta/server/backup/disable/disable.go @@ -10,6 +10,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverbackup/client" serverbackupUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverbackup/utils" @@ -50,17 +52,28 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + canDisable, err := serverbackupUtils.CanDisableBackupService(ctx, apiClient, model.ProjectId, model.ServerId) if err != nil { return err } if !canDisable { - p.Info("Cannot disable backup service for server %s - existing backups or existing backup schedules found\n", model.ServerId) + p.Info("Cannot disable backup service for server %s - existing backups or existing backup schedules found\n", serverLabel) return nil } if !model.AssumeYes { - prompt := fmt.Sprintf("Are you sure you want to disable the backup service for server %s?", model.ServerId) + prompt := fmt.Sprintf("Are you sure you want to disable the backup service for server %s?", serverLabel) err = p.PromptForConfirmation(prompt) if err != nil { return err @@ -74,7 +87,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("disable server backup service: %w", err) } - p.Info("Disabled Server Backup service for server %s\n", model.ServerId) + p.Info("Disabled Server Backup service for server %s\n", serverLabel) return nil }, } diff --git a/internal/cmd/beta/server/backup/enable/enable.go b/internal/cmd/beta/server/backup/enable/enable.go index b4192a177..3d3fac594 100644 --- a/internal/cmd/beta/server/backup/enable/enable.go +++ b/internal/cmd/beta/server/backup/enable/enable.go @@ -11,6 +11,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverbackup/client" "github.com/spf13/cobra" @@ -50,8 +52,19 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + if !model.AssumeYes { - prompt := fmt.Sprintf("Are you sure you want to enable the Server Backup service for server %s?", model.ServerId) + prompt := fmt.Sprintf("Are you sure you want to enable the Server Backup service for server %s?", serverLabel) err = p.PromptForConfirmation(prompt) if err != nil { return err @@ -67,7 +80,7 @@ func NewCmd(p *print.Printer) *cobra.Command { } } - p.Info("Enabled backup service for server %s\n", model.ServerId) + p.Info("Enabled backup service for server %s\n", serverLabel) return nil }, } diff --git a/internal/cmd/beta/server/backup/list/list.go b/internal/cmd/beta/server/backup/list/list.go index 244444766..4aa06202e 100644 --- a/internal/cmd/beta/server/backup/list/list.go +++ b/internal/cmd/beta/server/backup/list/list.go @@ -150,6 +150,10 @@ func outputResult(p *print.Printer, outputFormat string, backups []serverbackup. s := backups[i] lastRestored := utils.PtrStringDefault(s.LastRestoredAt, "") + var volBackups int + if s.VolumeBackups != nil { + volBackups = len(*s.VolumeBackups) + } table.AddRow( utils.PtrString(s.Id), utils.PtrString(s.Name), @@ -158,7 +162,7 @@ func outputResult(p *print.Printer, outputFormat string, backups []serverbackup. utils.PtrString(s.CreatedAt), utils.PtrString(s.ExpireAt), lastRestored, - len(*s.VolumeBackups), + volBackups, ) } err := table.Display(p) diff --git a/internal/cmd/beta/server/backup/list/list_test.go b/internal/cmd/beta/server/backup/list/list_test.go index fccc16027..087803962 100644 --- a/internal/cmd/beta/server/backup/list/list_test.go +++ b/internal/cmd/beta/server/backup/list/list_test.go @@ -186,3 +186,39 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + backups []serverbackup.Backup + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "empty backup", + args: args{ + backups: []serverbackup.Backup{ + {}, + }, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.backups); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/backup/schedule/create/create.go b/internal/cmd/beta/server/backup/schedule/create/create.go index dc10d8bcd..56ba389ba 100644 --- a/internal/cmd/beta/server/backup/schedule/create/create.go +++ b/internal/cmd/beta/server/backup/schedule/create/create.go @@ -12,6 +12,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverbackup/client" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -73,8 +75,19 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + if !model.AssumeYes { - prompt := fmt.Sprintf("Are you sure you want to create a Backup Schedule for server %s?", model.ServerId) + prompt := fmt.Sprintf("Are you sure you want to create a Backup Schedule for server %s?", serverLabel) err = p.PromptForConfirmation(prompt) if err != nil { return err @@ -91,7 +104,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("create Server Backup Schedule: %w", err) } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, serverLabel, *resp) }, } configureFlags(cmd) @@ -159,8 +172,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverbacku return req, nil } -func outputResult(p *print.Printer, model *inputModel, resp *serverbackup.BackupSchedule) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, serverLabel string, resp serverbackup.BackupSchedule) error { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { @@ -178,7 +191,7 @@ func outputResult(p *print.Printer, model *inputModel, resp *serverbackup.Backup return nil default: - p.Outputf("Created server backup schedule for server %s. Backup Schedule ID: %s\n", model.ServerId, utils.PtrString(resp.Id)) + p.Outputf("Created server backup schedule for server %s. Backup Schedule ID: %s\n", serverLabel, utils.PtrString(resp.Id)) return nil } } diff --git a/internal/cmd/beta/server/backup/schedule/create/create_test.go b/internal/cmd/beta/server/backup/schedule/create/create_test.go index 54307cb30..fbbb4e08e 100644 --- a/internal/cmd/beta/server/backup/schedule/create/create_test.go +++ b/internal/cmd/beta/server/backup/schedule/create/create_test.go @@ -219,3 +219,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat, serverLabel string + resp serverbackup.BackupSchedule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/backup/schedule/delete/delete.go b/internal/cmd/beta/server/backup/schedule/delete/delete.go index 60e30643a..5f578b4cd 100644 --- a/internal/cmd/beta/server/backup/schedule/delete/delete.go +++ b/internal/cmd/beta/server/backup/schedule/delete/delete.go @@ -10,6 +10,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverbackup/client" "github.com/spf13/cobra" @@ -51,8 +53,19 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + if !model.AssumeYes { - prompt := fmt.Sprintf("Are you sure you want to delete server backup schedule %q? (This cannot be undone)", model.ScheduleId) + prompt := fmt.Sprintf("Are you sure you want to delete server backup schedule %q? (This cannot be undone)", serverLabel) err = p.PromptForConfirmation(prompt) if err != nil { return err diff --git a/internal/cmd/beta/server/backup/schedule/describe/describe.go b/internal/cmd/beta/server/backup/schedule/describe/describe.go index 7c91a0bee..4fd94511d 100644 --- a/internal/cmd/beta/server/backup/schedule/describe/describe.go +++ b/internal/cmd/beta/server/backup/schedule/describe/describe.go @@ -64,7 +64,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("read server backup schedule: %w", err) } - return outputResult(p, model.OutputFormat, resp) + return outputResult(p, model.OutputFormat, *resp) }, } configureFlags(cmd) @@ -109,7 +109,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverbacku return req } -func outputResult(p *print.Printer, outputFormat string, schedule *serverbackup.BackupSchedule) error { +func outputResult(p *print.Printer, outputFormat string, schedule serverbackup.BackupSchedule) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(schedule, "", " ") @@ -138,9 +138,9 @@ func outputResult(p *print.Printer, outputFormat string, schedule *serverbackup. table.AddRow("RRULE", utils.PtrString(schedule.Rrule)) table.AddSeparator() if schedule.BackupProperties != nil { - table.AddRow("BACKUP NAME", *schedule.BackupProperties.Name) + table.AddRow("BACKUP NAME", utils.PtrString(schedule.BackupProperties.Name)) table.AddSeparator() - table.AddRow("BACKUP RETENTION DAYS", *schedule.BackupProperties.RetentionPeriod) + table.AddRow("BACKUP RETENTION DAYS", utils.PtrString(schedule.BackupProperties.RetentionPeriod)) table.AddSeparator() ids := schedule.BackupProperties.VolumeIds table.AddRow("BACKUP VOLUME IDS", utils.JoinStringPtr(ids, "\n")) diff --git a/internal/cmd/beta/server/backup/schedule/describe/describe_test.go b/internal/cmd/beta/server/backup/schedule/describe/describe_test.go index 985989f62..d199f2dd3 100644 --- a/internal/cmd/beta/server/backup/schedule/describe/describe_test.go +++ b/internal/cmd/beta/server/backup/schedule/describe/describe_test.go @@ -4,12 +4,11 @@ import ( "context" "testing" - "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" - "github.com/stackitcloud/stackit-cli/internal/pkg/print" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" + "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" + "github.com/stackitcloud/stackit-cli/internal/pkg/print" "github.com/stackitcloud/stackit-sdk-go/services/serverbackup" ) @@ -209,3 +208,66 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + schedule serverbackup.BackupSchedule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "nil backup properties", + args: args{ + schedule: serverbackup.BackupSchedule{ + BackupProperties: nil, + }, + }, + }, + { + name: "empty backup properties", + args: args{ + schedule: serverbackup.BackupSchedule{ + BackupProperties: &serverbackup.BackupProperties{}, + }, + }, + }, + { + name: "nil volume ids", + args: args{ + schedule: serverbackup.BackupSchedule{ + BackupProperties: &serverbackup.BackupProperties{ + VolumeIds: nil, + }, + }, + }, + }, + { + name: "empty volume ids", + args: args{ + schedule: serverbackup.BackupSchedule{ + BackupProperties: &serverbackup.BackupProperties{ + VolumeIds: &[]string{}, + }, + }, + }, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.schedule); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/backup/schedule/list/list.go b/internal/cmd/beta/server/backup/schedule/list/list.go index 366d6a09b..2bbf43644 100644 --- a/internal/cmd/beta/server/backup/schedule/list/list.go +++ b/internal/cmd/beta/server/backup/schedule/list/list.go @@ -13,6 +13,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverbackup/client" "github.com/stackitcloud/stackit-cli/internal/pkg/tables" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -57,6 +59,17 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + // Call API req := buildRequest(ctx, model, apiClient) resp, err := req.Execute() @@ -65,7 +78,7 @@ func NewCmd(p *print.Printer) *cobra.Command { } schedules := *resp.Items if len(schedules) == 0 { - p.Info("No backup schedules found for server %s\n", model.ServerId) + p.Info("No backup schedules found for server %s\n", serverLabel) return nil } diff --git a/internal/cmd/beta/server/backup/schedule/list/list_test.go b/internal/cmd/beta/server/backup/schedule/list/list_test.go index e8667ba02..66bcf4748 100644 --- a/internal/cmd/beta/server/backup/schedule/list/list_test.go +++ b/internal/cmd/beta/server/backup/schedule/list/list_test.go @@ -186,3 +186,50 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + schedules []serverbackup.BackupSchedule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "empty backup properties", + args: args{ + outputFormat: "", + schedules: []serverbackup.BackupSchedule{ + { + BackupProperties: &serverbackup.BackupProperties{}, + }, + }, + }, + wantErr: false, + }, + { + name: "output format json", + args: args{ + outputFormat: print.JSONOutputFormat, + schedules: []serverbackup.BackupSchedule{}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.schedules); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/backup/schedule/update/update.go b/internal/cmd/beta/server/backup/schedule/update/update.go index 02fe6c92a..7c278c270 100644 --- a/internal/cmd/beta/server/backup/schedule/update/update.go +++ b/internal/cmd/beta/server/backup/schedule/update/update.go @@ -100,7 +100,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("update Server Backup Schedule: %w", err) } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, *resp) }, } configureFlags(cmd) @@ -184,8 +184,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverbacku return req, nil } -func outputResult(p *print.Printer, model *inputModel, resp *serverbackup.BackupSchedule) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat string, resp serverbackup.BackupSchedule) error { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { diff --git a/internal/cmd/beta/server/backup/schedule/update/update_test.go b/internal/cmd/beta/server/backup/schedule/update/update_test.go index 86a5be4bc..c30a67cbd 100644 --- a/internal/cmd/beta/server/backup/schedule/update/update_test.go +++ b/internal/cmd/beta/server/backup/schedule/update/update_test.go @@ -276,3 +276,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + resp serverbackup.BackupSchedule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/command/create/create.go b/internal/cmd/beta/server/command/create/create.go index 2729653f7..10e4a96d8 100644 --- a/internal/cmd/beta/server/command/create/create.go +++ b/internal/cmd/beta/server/command/create/create.go @@ -13,6 +13,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/runcommand/client" runcommandUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/runcommand/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -61,8 +63,19 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + if !model.AssumeYes { - prompt := fmt.Sprintf("Are you sure you want to create a Command for server %s?", model.ServerId) + prompt := fmt.Sprintf("Are you sure you want to create a Command for server %s?", serverLabel) err = p.PromptForConfirmation(prompt) if err != nil { return err @@ -79,7 +92,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("create Server Command: %w", err) } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, serverLabel, *resp) }, } configureFlags(cmd) @@ -137,8 +150,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *runcommand. return req, nil } -func outputResult(p *print.Printer, model *inputModel, resp *runcommand.NewCommandResponse) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, serverLabel string, resp runcommand.NewCommandResponse) error { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { @@ -156,7 +169,7 @@ func outputResult(p *print.Printer, model *inputModel, resp *runcommand.NewComma return nil default: - p.Outputf("Created server command for server %s. Command ID: %s\n", model.ServerId, utils.PtrString(resp.Id)) + p.Outputf("Created server command for server %s. Command ID: %s\n", serverLabel, utils.PtrString(resp.Id)) return nil } } diff --git a/internal/cmd/beta/server/command/create/create_test.go b/internal/cmd/beta/server/command/create/create_test.go index 31ea154bf..c1a72f8b6 100644 --- a/internal/cmd/beta/server/command/create/create_test.go +++ b/internal/cmd/beta/server/command/create/create_test.go @@ -201,3 +201,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat, serverLabel string + resp runcommand.NewCommandResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/command/describe/describe.go b/internal/cmd/beta/server/command/describe/describe.go index 7bc408969..cfc1f067f 100644 --- a/internal/cmd/beta/server/command/describe/describe.go +++ b/internal/cmd/beta/server/command/describe/describe.go @@ -63,7 +63,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("read server command: %w", err) } - return outputResult(p, model.OutputFormat, resp) + return outputResult(p, model.OutputFormat, *resp) }, } configureFlags(cmd) @@ -108,7 +108,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *runcommand. return req } -func outputResult(p *print.Printer, outputFormat string, command *runcommand.CommandDetails) error { +func outputResult(p *print.Printer, outputFormat string, command runcommand.CommandDetails) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(command, "", " ") diff --git a/internal/cmd/beta/server/command/describe/describe_test.go b/internal/cmd/beta/server/command/describe/describe_test.go index 46fac2707..0d0b76f25 100644 --- a/internal/cmd/beta/server/command/describe/describe_test.go +++ b/internal/cmd/beta/server/command/describe/describe_test.go @@ -239,3 +239,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + command runcommand.CommandDetails + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.command); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/command/list/list.go b/internal/cmd/beta/server/command/list/list.go index 5768eef26..6ef01a9f8 100644 --- a/internal/cmd/beta/server/command/list/list.go +++ b/internal/cmd/beta/server/command/list/list.go @@ -13,6 +13,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/runcommand/client" "github.com/stackitcloud/stackit-cli/internal/pkg/tables" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -57,18 +59,28 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + // Call API req := buildRequest(ctx, model, apiClient) resp, err := req.Execute() if err != nil { return fmt.Errorf("list server commands: %w", err) } - commands := *resp.Items - if len(commands) == 0 { - p.Info("No commands found for server %s\n", model.ServerId) + if commands := resp.Items; commands == nil || len(*commands) == 0 { + p.Info("No commands found for server %s\n", serverLabel) return nil } - + commands := *resp.Items // Truncate output if model.Limit != nil && len(commands) > int(*model.Limit) { commands = commands[:*model.Limit] diff --git a/internal/cmd/beta/server/command/list/list_test.go b/internal/cmd/beta/server/command/list/list_test.go index e49a614c7..3d8ced5f2 100644 --- a/internal/cmd/beta/server/command/list/list_test.go +++ b/internal/cmd/beta/server/command/list/list_test.go @@ -186,3 +186,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + commands []runcommand.Commands + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.commands); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/command/template/describe/describe.go b/internal/cmd/beta/server/command/template/describe/describe.go index c44216b17..fd60b8c46 100644 --- a/internal/cmd/beta/server/command/template/describe/describe.go +++ b/internal/cmd/beta/server/command/template/describe/describe.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "strings" "github.com/goccy/go-yaml" "github.com/spf13/cobra" @@ -64,7 +63,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("read server command template: %w", err) } - return outputResult(p, model.OutputFormat, resp) + return outputResult(p, model.OutputFormat, *resp) }, } configureFlags(cmd) @@ -109,7 +108,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *runcommand. return req } -func outputResult(p *print.Printer, outputFormat string, commandTemplate *runcommand.CommandTemplateSchema) error { +func outputResult(p *print.Printer, outputFormat string, commandTemplate runcommand.CommandTemplateSchema) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(commandTemplate, "", " ") @@ -136,7 +135,7 @@ func outputResult(p *print.Printer, outputFormat string, commandTemplate *runcom table.AddRow("DESCRIPTION", utils.PtrString(commandTemplate.Description)) table.AddSeparator() if commandTemplate.OsType != nil { - table.AddRow("OS TYPE", strings.Join(*commandTemplate.OsType, "\n")) + table.AddRow("OS TYPE", utils.JoinStringPtr(commandTemplate.OsType, "\n")) table.AddSeparator() } if commandTemplate.ParameterSchema != nil { diff --git a/internal/cmd/beta/server/command/template/describe/describe_test.go b/internal/cmd/beta/server/command/template/describe/describe_test.go index 560d0ee93..b01268ae6 100644 --- a/internal/cmd/beta/server/command/template/describe/describe_test.go +++ b/internal/cmd/beta/server/command/template/describe/describe_test.go @@ -239,3 +239,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + commandTemplate runcommand.CommandTemplateSchema + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.commandTemplate); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/command/template/list/list.go b/internal/cmd/beta/server/command/template/list/list.go index 5290173a2..8be97f03b 100644 --- a/internal/cmd/beta/server/command/template/list/list.go +++ b/internal/cmd/beta/server/command/template/list/list.go @@ -61,11 +61,11 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { return fmt.Errorf("list server command templates: %w", err) } - templates := *resp.Items - if len(templates) == 0 { + if templates := resp.Items; templates == nil || len(*templates) == 0 { p.Info("No commands templates found\n") return nil } + templates := *resp.Items // Truncate output if model.Limit != nil && len(templates) > int(*model.Limit) { diff --git a/internal/cmd/beta/server/command/template/list/list_test.go b/internal/cmd/beta/server/command/template/list/list_test.go index 119302574..5c6cb12c8 100644 --- a/internal/cmd/beta/server/command/template/list/list_test.go +++ b/internal/cmd/beta/server/command/template/list/list_test.go @@ -183,3 +183,38 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + templates []runcommand.CommandTemplate + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "empty command template", + args: args{ + templates: []runcommand.CommandTemplate{ + {}, + }, + }, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.templates); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/console/console.go b/internal/cmd/beta/server/console/console.go index d5af1372e..b2fab88a0 100644 --- a/internal/cmd/beta/server/console/console.go +++ b/internal/cmd/beta/server/console/console.go @@ -71,7 +71,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("server console: %w", err) } - return outputResult(p, model, serverLabel, resp) + return outputResult(p, model.OutputFormat, serverLabel, *resp) }, } return cmd @@ -106,9 +106,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return apiClient.GetServerConsole(ctx, model.ProjectId, model.ServerId) } -func outputResult(p *print.Printer, model *inputModel, serverLabel string, serverUrl *iaas.ServerConsoleUrl) error { - outputFormat := model.OutputFormat - +func outputResult(p *print.Printer, outputFormat, serverLabel string, serverUrl iaas.ServerConsoleUrl) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(serverUrl, "", " ") diff --git a/internal/cmd/beta/server/console/console_test.go b/internal/cmd/beta/server/console/console_test.go index 1dfc48384..4d9b9e6c1 100644 --- a/internal/cmd/beta/server/console/console_test.go +++ b/internal/cmd/beta/server/console/console_test.go @@ -6,6 +6,7 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" @@ -206,3 +207,39 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat, serverLabel string + serverUrl iaas.ServerConsoleUrl + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "set server url", + args: args{ + serverUrl: iaas.ServerConsoleUrl{ + Url: utils.Ptr(""), + }, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.serverUrl); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/create/create.go b/internal/cmd/beta/server/create/create.go index 23a22a3ba..fb0cb24f6 100644 --- a/internal/cmd/beta/server/create/create.go +++ b/internal/cmd/beta/server/create/create.go @@ -155,7 +155,7 @@ func NewCmd(p *print.Printer) *cobra.Command { s.Stop() } - return outputResult(p, model, projectLabel, resp) + return outputResult(p, model.OutputFormat, projectLabel, resp) }, } configureFlags(cmd) @@ -334,8 +334,11 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req.CreateServerPayload(payload) } -func outputResult(p *print.Printer, model *inputModel, projectLabel string, server *iaas.Server) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, projectLabel string, server *iaas.Server) error { + if server == nil { + return fmt.Errorf("server response is empty") + } + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(server, "", " ") if err != nil { diff --git a/internal/cmd/beta/server/create/create_test.go b/internal/cmd/beta/server/create/create_test.go index 2ac1afcac..b5ffb23f9 100644 --- a/internal/cmd/beta/server/create/create_test.go +++ b/internal/cmd/beta/server/create/create_test.go @@ -408,3 +408,38 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + projectLabel string + server *iaas.Server + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "empty with iaas server", + args: args{ + server: &iaas.Server{}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.projectLabel, tt.args.server); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/describe/describe.go b/internal/cmd/beta/server/describe/describe.go index 3b4b0cef8..ab87b4ba5 100644 --- a/internal/cmd/beta/server/describe/describe.go +++ b/internal/cmd/beta/server/describe/describe.go @@ -65,7 +65,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("read server: %w", err) } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, resp) }, } return cmd @@ -103,9 +103,10 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req } -func outputResult(p *print.Printer, model *inputModel, server *iaas.Server) error { - outputFormat := model.OutputFormat - +func outputResult(p *print.Printer, outputFormat string, server *iaas.Server) error { + if server == nil { + return fmt.Errorf("api response is empty") + } switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(server, "", " ") diff --git a/internal/cmd/beta/server/describe/describe_test.go b/internal/cmd/beta/server/describe/describe_test.go index defc5dec6..d16a3ec04 100644 --- a/internal/cmd/beta/server/describe/describe_test.go +++ b/internal/cmd/beta/server/describe/describe_test.go @@ -217,3 +217,38 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + server *iaas.Server + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "empty server", + args: args{ + outputFormat: "", + server: &iaas.Server{}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.server); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/list/list_test.go b/internal/cmd/beta/server/list/list_test.go index 8cc72571b..a8dfe0e1e 100644 --- a/internal/cmd/beta/server/list/list_test.go +++ b/internal/cmd/beta/server/list/list_test.go @@ -203,3 +203,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + servers []iaas.Server + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.servers); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/log/log.go b/internal/cmd/beta/server/log/log.go index 2de1b3246..2fbc211ca 100644 --- a/internal/cmd/beta/server/log/log.go +++ b/internal/cmd/beta/server/log/log.go @@ -86,10 +86,10 @@ func NewCmd(p *print.Printer) *cobra.Command { if len(lines) > int(*model.Length) { // Truncate output and show most recent logs start := len(lines) - int(*model.Length) - return outputResult(p, model, serverLabel, strings.Join(lines[start:], "\n")) + return outputResult(p, model.OutputFormat, serverLabel, strings.Join(lines[start:], "\n")) } - return outputResult(p, model, serverLabel, log) + return outputResult(p, model.OutputFormat, serverLabel, log) }, } configureFlags(cmd) @@ -138,9 +138,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return apiClient.GetServerLog(ctx, model.ProjectId, model.ServerId) } -func outputResult(p *print.Printer, model *inputModel, serverLabel, log string) error { - outputFormat := model.OutputFormat - +func outputResult(p *print.Printer, outputFormat, serverLabel, log string) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(log, "", " ") diff --git a/internal/cmd/beta/server/log/log_test.go b/internal/cmd/beta/server/log/log_test.go index 5e10870d6..50ce7c723 100644 --- a/internal/cmd/beta/server/log/log_test.go +++ b/internal/cmd/beta/server/log/log_test.go @@ -220,3 +220,31 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serverLabel string + log string + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.log); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/machine-type/describe/describe.go b/internal/cmd/beta/server/machine-type/describe/describe.go index 6274f85ac..365a07205 100644 --- a/internal/cmd/beta/server/machine-type/describe/describe.go +++ b/internal/cmd/beta/server/machine-type/describe/describe.go @@ -101,6 +101,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli } func outputResult(p *print.Printer, outputFormat string, machineType *iaas.MachineType) error { + if machineType == nil { + return fmt.Errorf("api response for machine type is empty") + } switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(machineType, "", " ") diff --git a/internal/cmd/beta/server/machine-type/describe/describe_test.go b/internal/cmd/beta/server/machine-type/describe/describe_test.go index 44c5bcb78..32f6d9a0b 100644 --- a/internal/cmd/beta/server/machine-type/describe/describe_test.go +++ b/internal/cmd/beta/server/machine-type/describe/describe_test.go @@ -204,3 +204,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + machineType *iaas.MachineType + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.machineType); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/machine-type/list/list.go b/internal/cmd/beta/server/machine-type/list/list.go index ffa6343b5..a8511e53a 100644 --- a/internal/cmd/beta/server/machine-type/list/list.go +++ b/internal/cmd/beta/server/machine-type/list/list.go @@ -85,7 +85,7 @@ func NewCmd(p *print.Printer) *cobra.Command { *resp.Items = (*resp.Items)[:*model.Limit] } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, *resp) }, } @@ -132,9 +132,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return apiClient.ListMachineTypes(ctx, model.ProjectId) } -func outputResult(p *print.Printer, model *inputModel, machineTypes *iaas.MachineTypeListResponse) error { - outputFormat := model.OutputFormat - +func outputResult(p *print.Printer, outputFormat string, machineTypes iaas.MachineTypeListResponse) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(machineTypes, "", " ") @@ -157,8 +155,10 @@ func outputResult(p *print.Printer, model *inputModel, machineTypes *iaas.Machin table.SetTitle("Machine-Types") table.SetHeader("NAME", "DESCRIPTION") - for _, machineType := range *machineTypes.GetItems() { - table.AddRow(*machineType.Name, utils.PtrString(machineType.Description)) + if items := machineTypes.GetItems(); items != nil && len(*items) > 0 { + for _, machineType := range *items { + table.AddRow(*machineType.Name, utils.PtrString(machineType.Description)) + } } err := table.Display(p) diff --git a/internal/cmd/beta/server/machine-type/list/list_test.go b/internal/cmd/beta/server/machine-type/list/list_test.go index a76fcf00b..a38d4f386 100644 --- a/internal/cmd/beta/server/machine-type/list/list_test.go +++ b/internal/cmd/beta/server/machine-type/list/list_test.go @@ -188,3 +188,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + machineTypes iaas.MachineTypeListResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.machineTypes); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/network-interface/list/list_test.go b/internal/cmd/beta/server/network-interface/list/list_test.go index 9f729b86a..5ce4e90c6 100644 --- a/internal/cmd/beta/server/network-interface/list/list_test.go +++ b/internal/cmd/beta/server/network-interface/list/list_test.go @@ -209,3 +209,40 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serverId string + serverNics []iaas.NIC + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "empty nic", + args: args{ + serverNics: []iaas.NIC{ + {}, + }, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverId, tt.args.serverNics); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/os-update/create/create.go b/internal/cmd/beta/server/os-update/create/create.go index db998a374..b55bb47b7 100644 --- a/internal/cmd/beta/server/os-update/create/create.go +++ b/internal/cmd/beta/server/os-update/create/create.go @@ -12,6 +12,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverosupdate/client" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -60,8 +62,19 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + if !model.AssumeYes { - prompt := fmt.Sprintf("Are you sure you want to create a os-update for server %s?", model.ServerId) + prompt := fmt.Sprintf("Are you sure you want to create a os-update for server %s?", serverLabel) err = p.PromptForConfirmation(prompt) if err != nil { return err @@ -78,7 +91,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("create Server os-update: %w", err) } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, serverLabel, *resp) }, } configureFlags(cmd) @@ -123,8 +136,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverupdat return req, nil } -func outputResult(p *print.Printer, model *inputModel, resp *serverupdate.Update) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, serverLabel string, resp serverupdate.Update) error { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { @@ -142,7 +155,7 @@ func outputResult(p *print.Printer, model *inputModel, resp *serverupdate.Update return nil default: - p.Outputf("Triggered creation of server os-update for server %s. Update ID: %s\n", model.ServerId, utils.PtrString(resp.Id)) + p.Outputf("Triggered creation of server os-update for server %s. Update ID: %s\n", serverLabel, utils.PtrString(resp.Id)) return nil } } diff --git a/internal/cmd/beta/server/os-update/create/create_test.go b/internal/cmd/beta/server/os-update/create/create_test.go index 2402f81a8..e2a38ea36 100644 --- a/internal/cmd/beta/server/os-update/create/create_test.go +++ b/internal/cmd/beta/server/os-update/create/create_test.go @@ -203,3 +203,31 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serverLabel string + resp serverupdate.Update + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/os-update/describe/describe.go b/internal/cmd/beta/server/os-update/describe/describe.go index 820edddda..ac3a588d7 100644 --- a/internal/cmd/beta/server/os-update/describe/describe.go +++ b/internal/cmd/beta/server/os-update/describe/describe.go @@ -63,7 +63,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("read server os-update: %w", err) } - return outputResult(p, model.OutputFormat, resp) + return outputResult(p, model.OutputFormat, *resp) }, } configureFlags(cmd) @@ -108,7 +108,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverupdat return req } -func outputResult(p *print.Printer, outputFormat string, update *serverupdate.Update) error { +func outputResult(p *print.Printer, outputFormat string, update serverupdate.Update) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(update, "", " ") diff --git a/internal/cmd/beta/server/os-update/describe/describe_test.go b/internal/cmd/beta/server/os-update/describe/describe_test.go index e02f0298f..fb345e40a 100644 --- a/internal/cmd/beta/server/os-update/describe/describe_test.go +++ b/internal/cmd/beta/server/os-update/describe/describe_test.go @@ -209,3 +209,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + update serverupdate.Update + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.update); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/os-update/disable/disable.go b/internal/cmd/beta/server/os-update/disable/disable.go index 1fbc89823..70ceba436 100644 --- a/internal/cmd/beta/server/os-update/disable/disable.go +++ b/internal/cmd/beta/server/os-update/disable/disable.go @@ -10,6 +10,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverosupdate/client" "github.com/spf13/cobra" @@ -49,8 +51,19 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + if !model.AssumeYes { - prompt := fmt.Sprintf("Are you sure you want to disable the os-update service for server %s?", model.ServerId) + prompt := fmt.Sprintf("Are you sure you want to disable the os-update service for server %s?", serverLabel) err = p.PromptForConfirmation(prompt) if err != nil { return err @@ -64,7 +77,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("disable server os-update service: %w", err) } - p.Info("Disabled Server os-update service for server %s\n", model.ServerId) + p.Info("Disabled Server os-update service for server %s\n", serverLabel) return nil }, } diff --git a/internal/cmd/beta/server/os-update/enable/enable.go b/internal/cmd/beta/server/os-update/enable/enable.go index c16d19318..ac5e9a1e7 100644 --- a/internal/cmd/beta/server/os-update/enable/enable.go +++ b/internal/cmd/beta/server/os-update/enable/enable.go @@ -11,6 +11,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverosupdate/client" "github.com/spf13/cobra" @@ -50,8 +52,19 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + if !model.AssumeYes { - prompt := fmt.Sprintf("Are you sure you want to enable the server os-update service for server %s?", model.ServerId) + prompt := fmt.Sprintf("Are you sure you want to enable the server os-update service for server %s?", serverLabel) err = p.PromptForConfirmation(prompt) if err != nil { return err @@ -67,7 +80,7 @@ func NewCmd(p *print.Printer) *cobra.Command { } } - p.Info("Enabled os-update service for server %s\n", model.ServerId) + p.Info("Enabled os-update service for server %s\n", serverLabel) return nil }, } diff --git a/internal/cmd/beta/server/os-update/list/list.go b/internal/cmd/beta/server/os-update/list/list.go index 10e71108f..254030636 100644 --- a/internal/cmd/beta/server/os-update/list/list.go +++ b/internal/cmd/beta/server/os-update/list/list.go @@ -12,6 +12,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverosupdate/client" "github.com/stackitcloud/stackit-cli/internal/pkg/tables" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -67,7 +69,17 @@ func NewCmd(p *print.Printer) *cobra.Command { } updates := *resp.Items if len(updates) == 0 { - p.Info("No os-updates found for server %s\n", model.ServerId) + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + p.Info("No os-updates found for server %s\n", serverLabel) return nil } diff --git a/internal/cmd/beta/server/os-update/list/list_test.go b/internal/cmd/beta/server/os-update/list/list_test.go index 32f75311c..4b6df9161 100644 --- a/internal/cmd/beta/server/os-update/list/list_test.go +++ b/internal/cmd/beta/server/os-update/list/list_test.go @@ -186,3 +186,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + updates []serverupdate.Update + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.updates); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/os-update/schedule/create/create.go b/internal/cmd/beta/server/os-update/schedule/create/create.go index 861ec9629..be44fa557 100644 --- a/internal/cmd/beta/server/os-update/schedule/create/create.go +++ b/internal/cmd/beta/server/os-update/schedule/create/create.go @@ -12,6 +12,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverosupdate/client" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -69,8 +71,19 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + if !model.AssumeYes { - prompt := fmt.Sprintf("Are you sure you want to create a os-update Schedule for server %s?", model.ServerId) + prompt := fmt.Sprintf("Are you sure you want to create a os-update Schedule for server %s?", serverLabel) err = p.PromptForConfirmation(prompt) if err != nil { return err @@ -87,7 +100,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("create Server os-update Schedule: %w", err) } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, serverLabel, *resp) }, } configureFlags(cmd) @@ -143,8 +156,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverupdat return req, nil } -func outputResult(p *print.Printer, model *inputModel, resp *serverupdate.UpdateSchedule) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, serverLabel string, resp serverupdate.UpdateSchedule) error { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { @@ -162,7 +175,7 @@ func outputResult(p *print.Printer, model *inputModel, resp *serverupdate.Update return nil default: - p.Outputf("Created server os-update schedule for server %s. os-update Schedule ID: %s\n", model.ServerId, utils.PtrString(resp.Id)) + p.Outputf("Created server os-update schedule for server %s. os-update Schedule ID: %s\n", serverLabel, utils.PtrString(resp.Id)) return nil } } diff --git a/internal/cmd/beta/server/os-update/schedule/create/create_test.go b/internal/cmd/beta/server/os-update/schedule/create/create_test.go index 31e6f781b..169167532 100644 --- a/internal/cmd/beta/server/os-update/schedule/create/create_test.go +++ b/internal/cmd/beta/server/os-update/schedule/create/create_test.go @@ -210,3 +210,31 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serverLabel string + resp serverupdate.UpdateSchedule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/os-update/schedule/describe/describe.go b/internal/cmd/beta/server/os-update/schedule/describe/describe.go index e0a20bf1f..efacb1fbe 100644 --- a/internal/cmd/beta/server/os-update/schedule/describe/describe.go +++ b/internal/cmd/beta/server/os-update/schedule/describe/describe.go @@ -63,7 +63,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("read server os-update schedule: %w", err) } - return outputResult(p, model.OutputFormat, resp) + return outputResult(p, model.OutputFormat, *resp) }, } configureFlags(cmd) @@ -108,7 +108,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverupdat return req } -func outputResult(p *print.Printer, outputFormat string, schedule *serverupdate.UpdateSchedule) error { +func outputResult(p *print.Printer, outputFormat string, schedule serverupdate.UpdateSchedule) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(schedule, "", " ") diff --git a/internal/cmd/beta/server/os-update/schedule/describe/describe_test.go b/internal/cmd/beta/server/os-update/schedule/describe/describe_test.go index f1165bb00..411148262 100644 --- a/internal/cmd/beta/server/os-update/schedule/describe/describe_test.go +++ b/internal/cmd/beta/server/os-update/schedule/describe/describe_test.go @@ -209,3 +209,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + schedule serverupdate.UpdateSchedule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.schedule); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/os-update/schedule/list/list.go b/internal/cmd/beta/server/os-update/schedule/list/list.go index 8efd95198..996528247 100644 --- a/internal/cmd/beta/server/os-update/schedule/list/list.go +++ b/internal/cmd/beta/server/os-update/schedule/list/list.go @@ -13,6 +13,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverosupdate/client" "github.com/stackitcloud/stackit-cli/internal/pkg/tables" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -65,7 +67,17 @@ func NewCmd(p *print.Printer) *cobra.Command { } schedules := *resp.Items if len(schedules) == 0 { - p.Info("No os-update schedules found for server %s\n", model.ServerId) + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else { + serverLabel = serverName + } + } + p.Info("No os-update schedules found for server %s\n", serverLabel) return nil } diff --git a/internal/cmd/beta/server/os-update/schedule/list/list_test.go b/internal/cmd/beta/server/os-update/schedule/list/list_test.go index 6c0ce72f7..61a3ca5ca 100644 --- a/internal/cmd/beta/server/os-update/schedule/list/list_test.go +++ b/internal/cmd/beta/server/os-update/schedule/list/list_test.go @@ -186,3 +186,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + schedules []serverupdate.UpdateSchedule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.schedules); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/os-update/schedule/update/update.go b/internal/cmd/beta/server/os-update/schedule/update/update.go index 7b4b057a3..cea340336 100644 --- a/internal/cmd/beta/server/os-update/schedule/update/update.go +++ b/internal/cmd/beta/server/os-update/schedule/update/update.go @@ -92,7 +92,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("update Server os-update Schedule: %w", err) } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, *resp) }, } configureFlags(cmd) @@ -166,8 +166,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *serverupdat return req, nil } -func outputResult(p *print.Printer, model *inputModel, resp *serverupdate.UpdateSchedule) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat string, resp serverupdate.UpdateSchedule) error { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { diff --git a/internal/cmd/beta/server/os-update/schedule/update/update_test.go b/internal/cmd/beta/server/os-update/schedule/update/update_test.go index 20d8afe36..a821be003 100644 --- a/internal/cmd/beta/server/os-update/schedule/update/update_test.go +++ b/internal/cmd/beta/server/os-update/schedule/update/update_test.go @@ -263,3 +263,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + resp serverupdate.UpdateSchedule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/service-account/attach/attach.go b/internal/cmd/beta/server/service-account/attach/attach.go index 87bfbaa31..95fb3f90b 100644 --- a/internal/cmd/beta/server/service-account/attach/attach.go +++ b/internal/cmd/beta/server/service-account/attach/attach.go @@ -76,7 +76,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("attach service account to server: %w", err) } - return outputResult(p, model.OutputFormat, model.ServiceAccMail, serverLabel, resp) + return outputResult(p, model.OutputFormat, model.ServiceAccMail, serverLabel, *resp) }, } configureFlags(cmd) @@ -120,7 +120,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req } -func outputResult(p *print.Printer, outputFormat, serviceAccMail, serverLabel string, serviceAccounts *iaas.ServiceAccountMailListResponse) error { +func outputResult(p *print.Printer, outputFormat, serviceAccMail, serverLabel string, serviceAccounts iaas.ServiceAccountMailListResponse) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(serviceAccounts, "", " ") diff --git a/internal/cmd/beta/server/service-account/attach/attach_test.go b/internal/cmd/beta/server/service-account/attach/attach_test.go index f7854c24b..fddde577b 100644 --- a/internal/cmd/beta/server/service-account/attach/attach_test.go +++ b/internal/cmd/beta/server/service-account/attach/attach_test.go @@ -224,3 +224,32 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serviceAccMail string + serverLabel string + serviceAccounts iaas.ServiceAccountMailListResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serviceAccMail, tt.args.serverLabel, tt.args.serviceAccounts); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/service-account/detach/detach.go b/internal/cmd/beta/server/service-account/detach/detach.go index 7c5587842..4615bca26 100644 --- a/internal/cmd/beta/server/service-account/detach/detach.go +++ b/internal/cmd/beta/server/service-account/detach/detach.go @@ -76,7 +76,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("detach service account request: %w", err) } - return outputResult(p, model.OutputFormat, model.ServiceAccMail, serverLabel, resp) + return outputResult(p, model.OutputFormat, model.ServiceAccMail, serverLabel, *resp) }, } configureFlags(cmd) @@ -120,7 +120,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req } -func outputResult(p *print.Printer, outputFormat, serviceAccMail, serverLabel string, service *iaas.ServiceAccountMailListResponse) error { +func outputResult(p *print.Printer, outputFormat, serviceAccMail, serverLabel string, service iaas.ServiceAccountMailListResponse) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(service, "", " ") diff --git a/internal/cmd/beta/server/service-account/detach/detach_test.go b/internal/cmd/beta/server/service-account/detach/detach_test.go index 5250e0a6f..ffee083d4 100644 --- a/internal/cmd/beta/server/service-account/detach/detach_test.go +++ b/internal/cmd/beta/server/service-account/detach/detach_test.go @@ -224,3 +224,32 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serviceAccMail string + serverLabel string + service iaas.ServiceAccountMailListResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serviceAccMail, tt.args.serverLabel, tt.args.service); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/service-account/list/list.go b/internal/cmd/beta/server/service-account/list/list.go index e02b9d3ae..75dfcf128 100644 --- a/internal/cmd/beta/server/service-account/list/list.go +++ b/internal/cmd/beta/server/service-account/list/list.go @@ -77,7 +77,7 @@ func NewCmd(p *print.Printer) *cobra.Command { } serviceAccounts := *resp.Items if len(serviceAccounts) == 0 { - p.Info("No service accounts found for server %s\n", *model.ServerId) + p.Info("No service accounts found for server %s\n", serverName) return nil } diff --git a/internal/cmd/beta/server/service-account/list/list_test.go b/internal/cmd/beta/server/service-account/list/list_test.go index 04ba8c721..961ba2a0a 100644 --- a/internal/cmd/beta/server/service-account/list/list_test.go +++ b/internal/cmd/beta/server/service-account/list/list_test.go @@ -219,3 +219,41 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serverId string + serverName string + serviceAccounts []string + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "empty service account", + args: args{ + serviceAccounts: []string{ + "", + }, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverId, tt.args.serverName, tt.args.serviceAccounts); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/update/update.go b/internal/cmd/beta/server/update/update.go index 9067d5a45..93e1e6404 100644 --- a/internal/cmd/beta/server/update/update.go +++ b/internal/cmd/beta/server/update/update.go @@ -84,7 +84,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("update server: %w", err) } - return outputResult(p, model, serverLabel, resp) + return outputResult(p, model.OutputFormat, serverLabel, resp) }, } configureFlags(cmd) @@ -143,8 +143,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req.UpdateServerPayload(payload) } -func outputResult(p *print.Printer, model *inputModel, serverLabel string, server *iaas.Server) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, serverLabel string, server *iaas.Server) error { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(server, "", " ") if err != nil { diff --git a/internal/cmd/beta/server/update/update_test.go b/internal/cmd/beta/server/update/update_test.go index f06cbd6a5..5286eb70f 100644 --- a/internal/cmd/beta/server/update/update_test.go +++ b/internal/cmd/beta/server/update/update_test.go @@ -250,3 +250,31 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serverLabel string + server *iaas.Server + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.server); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/volume/attach/attach.go b/internal/cmd/beta/server/volume/attach/attach.go index 25b2a722a..e50738ff6 100644 --- a/internal/cmd/beta/server/volume/attach/attach.go +++ b/internal/cmd/beta/server/volume/attach/attach.go @@ -94,7 +94,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("attach server volume: %w", err) } - return outputResult(p, model.OutputFormat, volumeLabel, serverLabel, resp) + return outputResult(p, model.OutputFormat, volumeLabel, serverLabel, *resp) }, } configureFlags(cmd) @@ -143,7 +143,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req.AddVolumeToServerPayload(payload) } -func outputResult(p *print.Printer, outputFormat, volumeLabel, serverLabel string, volume *iaas.VolumeAttachment) error { +func outputResult(p *print.Printer, outputFormat, volumeLabel, serverLabel string, volume iaas.VolumeAttachment) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(volume, "", " ") diff --git a/internal/cmd/beta/server/volume/attach/attach_test.go b/internal/cmd/beta/server/volume/attach/attach_test.go index 9dd33f77f..29dd0ff1f 100644 --- a/internal/cmd/beta/server/volume/attach/attach_test.go +++ b/internal/cmd/beta/server/volume/attach/attach_test.go @@ -249,3 +249,32 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + volumeLabel string + serverLabel string + volume iaas.VolumeAttachment + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.volumeLabel, tt.args.serverLabel, tt.args.volume); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/volume/describe/describe.go b/internal/cmd/beta/server/volume/describe/describe.go index 29648759e..02e891e85 100644 --- a/internal/cmd/beta/server/volume/describe/describe.go +++ b/internal/cmd/beta/server/volume/describe/describe.go @@ -83,7 +83,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("describe server volume: %w", err) } - return outputResult(p, model.OutputFormat, serverLabel, volumeLabel, resp) + return outputResult(p, model.OutputFormat, serverLabel, volumeLabel, *resp) }, } configureFlags(cmd) @@ -127,7 +127,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req } -func outputResult(p *print.Printer, outputFormat, serverLabel, volumeLabel string, volume *iaas.VolumeAttachment) error { +func outputResult(p *print.Printer, outputFormat, serverLabel, volumeLabel string, volume iaas.VolumeAttachment) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(volume, "", " ") @@ -158,7 +158,7 @@ func outputResult(p *print.Printer, outputFormat, serverLabel, volumeLabel strin table.AddRow("VOLUME NAME", volumeLabel) table.AddSeparator() } - table.AddRow("DELETE ON TERMINATION", *volume.DeleteOnTermination) + table.AddRow("DELETE ON TERMINATION", utils.PtrString(volume.DeleteOnTermination)) table.AddSeparator() err := table.Display(p) diff --git a/internal/cmd/beta/server/volume/describe/describe_test.go b/internal/cmd/beta/server/volume/describe/describe_test.go index 1d53423de..c86b57259 100644 --- a/internal/cmd/beta/server/volume/describe/describe_test.go +++ b/internal/cmd/beta/server/volume/describe/describe_test.go @@ -225,3 +225,32 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serverLabel string + volumeLabel string + volume iaas.VolumeAttachment + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.volumeLabel, tt.args.volume); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/volume/list/list.go b/internal/cmd/beta/server/volume/list/list.go index f6f39e7ad..8f6f450a6 100644 --- a/internal/cmd/beta/server/volume/list/list.go +++ b/internal/cmd/beta/server/volume/list/list.go @@ -149,7 +149,11 @@ func outputResult(p *print.Printer, outputFormat, serverLabel string, volumeName table.SetHeader("SERVER ID", "SERVER NAME", "VOLUME ID", "VOLUME NAME") for i := range volumes { s := volumes[i] - table.AddRow(utils.PtrString(s.ServerId), serverLabel, utils.PtrString(s.VolumeId), volumeNames[i]) + var volumeName string + if len(volumeNames)-1 > i { + volumeName = volumeNames[i] + } + table.AddRow(utils.PtrString(s.ServerId), serverLabel, utils.PtrString(s.VolumeId), volumeName) } err := table.Display(p) if err != nil { diff --git a/internal/cmd/beta/server/volume/list/list_test.go b/internal/cmd/beta/server/volume/list/list_test.go index 288c65fd6..b9c37814f 100644 --- a/internal/cmd/beta/server/volume/list/list_test.go +++ b/internal/cmd/beta/server/volume/list/list_test.go @@ -191,3 +191,41 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + serverLabel string + volumeNames []string + volumes []iaas.VolumeAttachment + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "empty volume", + args: args{ + volumes: []iaas.VolumeAttachment{ + {}, + }, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.serverLabel, tt.args.volumeNames, tt.args.volumes); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/server/volume/update/update.go b/internal/cmd/beta/server/volume/update/update.go index 289593b65..76c8febb8 100644 --- a/internal/cmd/beta/server/volume/update/update.go +++ b/internal/cmd/beta/server/volume/update/update.go @@ -90,7 +90,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("update server volume: %w", err) } - return outputResult(p, model.OutputFormat, volumeLabel, serverLabel, resp) + return outputResult(p, model.OutputFormat, volumeLabel, serverLabel, *resp) }, } configureFlags(cmd) @@ -139,7 +139,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req.UpdateAttachedVolumePayload(payload) } -func outputResult(p *print.Printer, outputFormat, volumeLabel, serverLabel string, volume *iaas.VolumeAttachment) error { +func outputResult(p *print.Printer, outputFormat, volumeLabel, serverLabel string, volume iaas.VolumeAttachment) error { switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(volume, "", " ") diff --git a/internal/cmd/beta/server/volume/update/update_test.go b/internal/cmd/beta/server/volume/update/update_test.go index 5d8171fbf..46d5a0d20 100644 --- a/internal/cmd/beta/server/volume/update/update_test.go +++ b/internal/cmd/beta/server/volume/update/update_test.go @@ -248,3 +248,32 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + volumeLabel string + serverLabel string + volume iaas.VolumeAttachment + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.volumeLabel, tt.args.serverLabel, tt.args.volume); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} From 5bb16271d4b95502fc6d9088d8d864927a8602bd Mon Sep 17 00:00:00 2001 From: Marcel Jacek Date: Wed, 19 Feb 2025 11:24:27 +0100 Subject: [PATCH 2/3] Add checks if serverLabel is empty --- internal/cmd/beta/server/backup/create/create.go | 2 +- internal/cmd/beta/server/backup/disable/disable.go | 2 +- internal/cmd/beta/server/backup/enable/enable.go | 2 +- internal/cmd/beta/server/backup/list/list.go | 14 +++++++++++++- .../beta/server/backup/schedule/create/create.go | 2 +- .../beta/server/backup/schedule/delete/delete.go | 2 +- .../cmd/beta/server/backup/schedule/list/list.go | 2 +- internal/cmd/beta/server/command/create/create.go | 2 +- internal/cmd/beta/server/command/list/list.go | 2 +- internal/cmd/beta/server/console/console.go | 3 +++ internal/cmd/beta/server/deallocate/deallocate.go | 3 +++ internal/cmd/beta/server/delete/delete.go | 3 +++ internal/cmd/beta/server/log/log.go | 3 +++ .../beta/server/network-interface/detach/detach.go | 3 +++ .../cmd/beta/server/network-interface/list/list.go | 3 +++ .../cmd/beta/server/os-update/create/create.go | 2 +- .../cmd/beta/server/os-update/disable/disable.go | 2 +- .../cmd/beta/server/os-update/enable/enable.go | 2 +- internal/cmd/beta/server/os-update/list/list.go | 2 +- .../server/os-update/schedule/create/create.go | 2 +- .../beta/server/os-update/schedule/list/list.go | 2 +- .../cmd/beta/server/public-ip/attach/attach.go | 3 +++ .../cmd/beta/server/public-ip/detach/detach.go | 3 +++ internal/cmd/beta/server/reboot/reboot.go | 4 +++- internal/cmd/beta/server/rescue/rescue.go | 3 +++ internal/cmd/beta/server/resize/resize.go | 3 +++ .../beta/server/service-account/attach/attach.go | 3 +++ .../beta/server/service-account/detach/detach.go | 3 +++ .../cmd/beta/server/service-account/list/list.go | 3 +++ internal/cmd/beta/server/start/start.go | 3 +++ internal/cmd/beta/server/stop/stop.go | 3 +++ internal/cmd/beta/server/unrescue/unrescue.go | 3 +++ internal/cmd/beta/server/update/update.go | 3 +++ internal/cmd/beta/server/volume/attach/attach.go | 3 +++ .../cmd/beta/server/volume/describe/describe.go | 6 ++++++ internal/cmd/beta/server/volume/detach/detach.go | 3 +++ internal/cmd/beta/server/volume/list/list.go | 5 ++++- internal/cmd/beta/server/volume/update/update.go | 3 +++ 38 files changed, 100 insertions(+), 17 deletions(-) diff --git a/internal/cmd/beta/server/backup/create/create.go b/internal/cmd/beta/server/backup/create/create.go index e7d1134e4..d64d14c0a 100644 --- a/internal/cmd/beta/server/backup/create/create.go +++ b/internal/cmd/beta/server/backup/create/create.go @@ -73,7 +73,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/backup/disable/disable.go b/internal/cmd/beta/server/backup/disable/disable.go index 084330a80..1d1ff797b 100644 --- a/internal/cmd/beta/server/backup/disable/disable.go +++ b/internal/cmd/beta/server/backup/disable/disable.go @@ -58,7 +58,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/backup/enable/enable.go b/internal/cmd/beta/server/backup/enable/enable.go index 3d3fac594..c6e6bc01c 100644 --- a/internal/cmd/beta/server/backup/enable/enable.go +++ b/internal/cmd/beta/server/backup/enable/enable.go @@ -58,7 +58,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/backup/list/list.go b/internal/cmd/beta/server/backup/list/list.go index 4aa06202e..fa060a413 100644 --- a/internal/cmd/beta/server/backup/list/list.go +++ b/internal/cmd/beta/server/backup/list/list.go @@ -13,6 +13,8 @@ import ( "github.com/stackitcloud/stackit-cli/internal/pkg/flags" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" + iaasClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client" + iaasUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/services/serverbackup/client" "github.com/stackitcloud/stackit-cli/internal/pkg/tables" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" @@ -65,7 +67,17 @@ func NewCmd(p *print.Printer) *cobra.Command { } backups := *resp.Items if len(backups) == 0 { - p.Info("No backups found for server %s\n", model.ServerId) + serverLabel := model.ServerId + // Get server name + if iaasApiClient, err := iaasClient.ConfigureClient(p); err == nil { + serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) + if err != nil { + p.Debug(print.ErrorLevel, "get server name: %v", err) + } else if serverName != "" { + serverLabel = serverName + } + } + p.Info("No backups found for server %s\n", serverLabel) return nil } diff --git a/internal/cmd/beta/server/backup/schedule/create/create.go b/internal/cmd/beta/server/backup/schedule/create/create.go index 56ba389ba..19b789291 100644 --- a/internal/cmd/beta/server/backup/schedule/create/create.go +++ b/internal/cmd/beta/server/backup/schedule/create/create.go @@ -81,7 +81,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/backup/schedule/delete/delete.go b/internal/cmd/beta/server/backup/schedule/delete/delete.go index 5f578b4cd..1417aba8e 100644 --- a/internal/cmd/beta/server/backup/schedule/delete/delete.go +++ b/internal/cmd/beta/server/backup/schedule/delete/delete.go @@ -59,7 +59,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/backup/schedule/list/list.go b/internal/cmd/beta/server/backup/schedule/list/list.go index 2bbf43644..ff8ba067d 100644 --- a/internal/cmd/beta/server/backup/schedule/list/list.go +++ b/internal/cmd/beta/server/backup/schedule/list/list.go @@ -65,7 +65,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/command/create/create.go b/internal/cmd/beta/server/command/create/create.go index 10e4a96d8..1ca0577f9 100644 --- a/internal/cmd/beta/server/command/create/create.go +++ b/internal/cmd/beta/server/command/create/create.go @@ -69,7 +69,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/command/list/list.go b/internal/cmd/beta/server/command/list/list.go index 6ef01a9f8..8db186da9 100644 --- a/internal/cmd/beta/server/command/list/list.go +++ b/internal/cmd/beta/server/command/list/list.go @@ -65,7 +65,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/console/console.go b/internal/cmd/beta/server/console/console.go index b2fab88a0..3dd3a8a57 100644 --- a/internal/cmd/beta/server/console/console.go +++ b/internal/cmd/beta/server/console/console.go @@ -63,6 +63,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ServerId + } // Call API req := buildRequest(ctx, model, apiClient) diff --git a/internal/cmd/beta/server/deallocate/deallocate.go b/internal/cmd/beta/server/deallocate/deallocate.go index 0bfe4205a..eebd1b05b 100644 --- a/internal/cmd/beta/server/deallocate/deallocate.go +++ b/internal/cmd/beta/server/deallocate/deallocate.go @@ -58,6 +58,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to deallocate server %q?", serverLabel) diff --git a/internal/cmd/beta/server/delete/delete.go b/internal/cmd/beta/server/delete/delete.go index 43b2a77cb..651481ea0 100644 --- a/internal/cmd/beta/server/delete/delete.go +++ b/internal/cmd/beta/server/delete/delete.go @@ -61,6 +61,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ProjectId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to delete server %q?", serverLabel) diff --git a/internal/cmd/beta/server/log/log.go b/internal/cmd/beta/server/log/log.go index 2fbc211ca..19f6c3d0d 100644 --- a/internal/cmd/beta/server/log/log.go +++ b/internal/cmd/beta/server/log/log.go @@ -72,6 +72,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ServerId + } // Call API req := buildRequest(ctx, model, apiClient) diff --git a/internal/cmd/beta/server/network-interface/detach/detach.go b/internal/cmd/beta/server/network-interface/detach/detach.go index 57e9c1f7a..9b31e3a9c 100644 --- a/internal/cmd/beta/server/network-interface/detach/detach.go +++ b/internal/cmd/beta/server/network-interface/detach/detach.go @@ -69,6 +69,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } // if the delete flag is provided a network interface is detached and deleted if model.Delete != nil && *model.Delete { diff --git a/internal/cmd/beta/server/network-interface/list/list.go b/internal/cmd/beta/server/network-interface/list/list.go index 8f0d3b928..218ad8a71 100644 --- a/internal/cmd/beta/server/network-interface/list/list.go +++ b/internal/cmd/beta/server/network-interface/list/list.go @@ -77,6 +77,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } p.Info("No attached network interfaces found for server %q\n", serverLabel) return nil } diff --git a/internal/cmd/beta/server/os-update/create/create.go b/internal/cmd/beta/server/os-update/create/create.go index b55bb47b7..ac00b378e 100644 --- a/internal/cmd/beta/server/os-update/create/create.go +++ b/internal/cmd/beta/server/os-update/create/create.go @@ -68,7 +68,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/os-update/disable/disable.go b/internal/cmd/beta/server/os-update/disable/disable.go index 70ceba436..cfd937ec1 100644 --- a/internal/cmd/beta/server/os-update/disable/disable.go +++ b/internal/cmd/beta/server/os-update/disable/disable.go @@ -57,7 +57,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/os-update/enable/enable.go b/internal/cmd/beta/server/os-update/enable/enable.go index ac5e9a1e7..9cb96b806 100644 --- a/internal/cmd/beta/server/os-update/enable/enable.go +++ b/internal/cmd/beta/server/os-update/enable/enable.go @@ -58,7 +58,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/os-update/list/list.go b/internal/cmd/beta/server/os-update/list/list.go index 254030636..6da7e4fcc 100644 --- a/internal/cmd/beta/server/os-update/list/list.go +++ b/internal/cmd/beta/server/os-update/list/list.go @@ -75,7 +75,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/os-update/schedule/create/create.go b/internal/cmd/beta/server/os-update/schedule/create/create.go index be44fa557..f36756391 100644 --- a/internal/cmd/beta/server/os-update/schedule/create/create.go +++ b/internal/cmd/beta/server/os-update/schedule/create/create.go @@ -77,7 +77,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/os-update/schedule/list/list.go b/internal/cmd/beta/server/os-update/schedule/list/list.go index 996528247..ad46f0de2 100644 --- a/internal/cmd/beta/server/os-update/schedule/list/list.go +++ b/internal/cmd/beta/server/os-update/schedule/list/list.go @@ -73,7 +73,7 @@ func NewCmd(p *print.Printer) *cobra.Command { serverName, err := iaasUtils.GetServerName(ctx, iaasApiClient, model.ProjectId, model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) - } else { + } else if serverName != "" { serverLabel = serverName } } diff --git a/internal/cmd/beta/server/public-ip/attach/attach.go b/internal/cmd/beta/server/public-ip/attach/attach.go index 47d55e750..bbbebc5e9 100644 --- a/internal/cmd/beta/server/public-ip/attach/attach.go +++ b/internal/cmd/beta/server/public-ip/attach/attach.go @@ -66,6 +66,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to attach public IP %q to server %q?", publicIpLabel, serverLabel) diff --git a/internal/cmd/beta/server/public-ip/detach/detach.go b/internal/cmd/beta/server/public-ip/detach/detach.go index d476db50f..9701f2fff 100644 --- a/internal/cmd/beta/server/public-ip/detach/detach.go +++ b/internal/cmd/beta/server/public-ip/detach/detach.go @@ -68,6 +68,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to detach public IP %q from server %q?", publicIpLabel, serverLabel) diff --git a/internal/cmd/beta/server/reboot/reboot.go b/internal/cmd/beta/server/reboot/reboot.go index d5ec2bae5..4ec5de2d4 100644 --- a/internal/cmd/beta/server/reboot/reboot.go +++ b/internal/cmd/beta/server/reboot/reboot.go @@ -66,7 +66,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } - + if serverLabel == "" { + serverLabel = model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to reboot server %q?", serverLabel) err = p.PromptForConfirmation(prompt) diff --git a/internal/cmd/beta/server/rescue/rescue.go b/internal/cmd/beta/server/rescue/rescue.go index ef6474220..84e3c8a48 100644 --- a/internal/cmd/beta/server/rescue/rescue.go +++ b/internal/cmd/beta/server/rescue/rescue.go @@ -62,6 +62,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to rescue server %q?", serverLabel) diff --git a/internal/cmd/beta/server/resize/resize.go b/internal/cmd/beta/server/resize/resize.go index 105967c6e..1b2774ec5 100644 --- a/internal/cmd/beta/server/resize/resize.go +++ b/internal/cmd/beta/server/resize/resize.go @@ -62,6 +62,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to resize server %q to machine type %q?", serverLabel, *model.MachineType) diff --git a/internal/cmd/beta/server/service-account/attach/attach.go b/internal/cmd/beta/server/service-account/attach/attach.go index 95fb3f90b..b13f564c4 100644 --- a/internal/cmd/beta/server/service-account/attach/attach.go +++ b/internal/cmd/beta/server/service-account/attach/attach.go @@ -60,6 +60,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to attach service account %q to server %q?", model.ServiceAccMail, serverLabel) diff --git a/internal/cmd/beta/server/service-account/detach/detach.go b/internal/cmd/beta/server/service-account/detach/detach.go index 4615bca26..5538b73b2 100644 --- a/internal/cmd/beta/server/service-account/detach/detach.go +++ b/internal/cmd/beta/server/service-account/detach/detach.go @@ -60,6 +60,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are your sure you want to detach service account %q from a server %q?", model.ServiceAccMail, serverLabel) diff --git a/internal/cmd/beta/server/service-account/list/list.go b/internal/cmd/beta/server/service-account/list/list.go index 75dfcf128..05797df64 100644 --- a/internal/cmd/beta/server/service-account/list/list.go +++ b/internal/cmd/beta/server/service-account/list/list.go @@ -68,6 +68,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverName = *model.ServerId } + if serverName == "" { + serverName = *model.ServerId + } // Call API req := buildRequest(ctx, model, apiClient) diff --git a/internal/cmd/beta/server/start/start.go b/internal/cmd/beta/server/start/start.go index 9c8447982..d23df5f3a 100644 --- a/internal/cmd/beta/server/start/start.go +++ b/internal/cmd/beta/server/start/start.go @@ -58,6 +58,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ServerId + } // Call API req := buildRequest(ctx, model, apiClient) diff --git a/internal/cmd/beta/server/stop/stop.go b/internal/cmd/beta/server/stop/stop.go index d16a636de..2df691f87 100644 --- a/internal/cmd/beta/server/stop/stop.go +++ b/internal/cmd/beta/server/stop/stop.go @@ -58,6 +58,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to stop server %q?", serverLabel) diff --git a/internal/cmd/beta/server/unrescue/unrescue.go b/internal/cmd/beta/server/unrescue/unrescue.go index 39a7040f7..72eb1e498 100644 --- a/internal/cmd/beta/server/unrescue/unrescue.go +++ b/internal/cmd/beta/server/unrescue/unrescue.go @@ -58,6 +58,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to unrescue server %q?", serverLabel) diff --git a/internal/cmd/beta/server/update/update.go b/internal/cmd/beta/server/update/update.go index 93e1e6404..5d06546cf 100644 --- a/internal/cmd/beta/server/update/update.go +++ b/internal/cmd/beta/server/update/update.go @@ -68,6 +68,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId } + if serverLabel == "" { + serverLabel = model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to update server %q?", serverLabel) diff --git a/internal/cmd/beta/server/volume/attach/attach.go b/internal/cmd/beta/server/volume/attach/attach.go index e50738ff6..3415ba19a 100644 --- a/internal/cmd/beta/server/volume/attach/attach.go +++ b/internal/cmd/beta/server/volume/attach/attach.go @@ -78,6 +78,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to attach volume %q to server %q?", volumeLabel, serverLabel) diff --git a/internal/cmd/beta/server/volume/describe/describe.go b/internal/cmd/beta/server/volume/describe/describe.go index 02e891e85..d591756b1 100644 --- a/internal/cmd/beta/server/volume/describe/describe.go +++ b/internal/cmd/beta/server/volume/describe/describe.go @@ -69,12 +69,18 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get volume name: %v", err) volumeLabel = model.VolumeId } + if volumeLabel == "" { + volumeLabel = model.VolumeId + } serverLabel, err := iaasUtils.GetServerName(ctx, apiClient, model.ProjectId, *model.ServerId) if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } // Call API req := buildRequest(ctx, model, apiClient) diff --git a/internal/cmd/beta/server/volume/detach/detach.go b/internal/cmd/beta/server/volume/detach/detach.go index 8e07fd216..f8a529135 100644 --- a/internal/cmd/beta/server/volume/detach/detach.go +++ b/internal/cmd/beta/server/volume/detach/detach.go @@ -68,6 +68,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to detach volume %q from server %q?", volumeLabel, serverLabel) diff --git a/internal/cmd/beta/server/volume/list/list.go b/internal/cmd/beta/server/volume/list/list.go index 8f6f450a6..02f54dfeb 100644 --- a/internal/cmd/beta/server/volume/list/list.go +++ b/internal/cmd/beta/server/volume/list/list.go @@ -61,6 +61,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } // Call API req := buildRequest(ctx, model, apiClient) @@ -70,7 +73,7 @@ func NewCmd(p *print.Printer) *cobra.Command { } volumes := *resp.Items if len(volumes) == 0 { - p.Info("No volumes found for server %s\n", *model.ServerId) + p.Info("No volumes found for server %s\n", serverLabel) return nil } diff --git a/internal/cmd/beta/server/volume/update/update.go b/internal/cmd/beta/server/volume/update/update.go index 76c8febb8..d17aa6a9c 100644 --- a/internal/cmd/beta/server/volume/update/update.go +++ b/internal/cmd/beta/server/volume/update/update.go @@ -74,6 +74,9 @@ func NewCmd(p *print.Printer) *cobra.Command { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId } + if serverLabel == "" { + serverLabel = *model.ServerId + } if !model.AssumeYes { prompt := fmt.Sprintf("Are you sure you want to update attached volume %q of server %q?", volumeLabel, serverLabel) From e1381de55912196c4c5f4fa2bb4b26f888d06bc6 Mon Sep 17 00:00:00 2001 From: Marcel Jacek Date: Thu, 20 Feb 2025 09:46:16 +0100 Subject: [PATCH 3/3] review feedback: different code style in get server name --- internal/cmd/beta/server/console/console.go | 3 +-- internal/cmd/beta/server/deallocate/deallocate.go | 3 +-- internal/cmd/beta/server/delete/delete.go | 3 +-- internal/cmd/beta/server/log/log.go | 3 +-- .../cmd/beta/server/network-interface/detach/detach.go | 3 +-- internal/cmd/beta/server/network-interface/list/list.go | 3 +-- internal/cmd/beta/server/public-ip/attach/attach.go | 7 +++---- internal/cmd/beta/server/public-ip/detach/detach.go | 6 ++---- internal/cmd/beta/server/reboot/reboot.go | 3 +-- internal/cmd/beta/server/rescue/rescue.go | 3 +-- internal/cmd/beta/server/resize/resize.go | 3 +-- internal/cmd/beta/server/service-account/attach/attach.go | 3 +-- internal/cmd/beta/server/service-account/detach/detach.go | 3 +-- internal/cmd/beta/server/service-account/list/list.go | 3 +-- internal/cmd/beta/server/start/start.go | 3 +-- internal/cmd/beta/server/stop/stop.go | 3 +-- internal/cmd/beta/server/unrescue/unrescue.go | 3 +-- internal/cmd/beta/server/update/update.go | 3 +-- internal/cmd/beta/server/volume/attach/attach.go | 6 ++---- internal/cmd/beta/server/volume/describe/describe.go | 6 ++---- internal/cmd/beta/server/volume/detach/detach.go | 6 ++---- internal/cmd/beta/server/volume/list/list.go | 3 +-- internal/cmd/beta/server/volume/update/update.go | 6 ++---- 23 files changed, 30 insertions(+), 58 deletions(-) diff --git a/internal/cmd/beta/server/console/console.go b/internal/cmd/beta/server/console/console.go index 3dd3a8a57..026c942cb 100644 --- a/internal/cmd/beta/server/console/console.go +++ b/internal/cmd/beta/server/console/console.go @@ -62,8 +62,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } diff --git a/internal/cmd/beta/server/deallocate/deallocate.go b/internal/cmd/beta/server/deallocate/deallocate.go index eebd1b05b..3cb27fb0b 100644 --- a/internal/cmd/beta/server/deallocate/deallocate.go +++ b/internal/cmd/beta/server/deallocate/deallocate.go @@ -57,8 +57,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } diff --git a/internal/cmd/beta/server/delete/delete.go b/internal/cmd/beta/server/delete/delete.go index 651481ea0..eaf994419 100644 --- a/internal/cmd/beta/server/delete/delete.go +++ b/internal/cmd/beta/server/delete/delete.go @@ -60,8 +60,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ProjectId } diff --git a/internal/cmd/beta/server/log/log.go b/internal/cmd/beta/server/log/log.go index 19f6c3d0d..3aaa51ed7 100644 --- a/internal/cmd/beta/server/log/log.go +++ b/internal/cmd/beta/server/log/log.go @@ -71,8 +71,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } diff --git a/internal/cmd/beta/server/network-interface/detach/detach.go b/internal/cmd/beta/server/network-interface/detach/detach.go index 9b31e3a9c..993c4426c 100644 --- a/internal/cmd/beta/server/network-interface/detach/detach.go +++ b/internal/cmd/beta/server/network-interface/detach/detach.go @@ -68,8 +68,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } diff --git a/internal/cmd/beta/server/network-interface/list/list.go b/internal/cmd/beta/server/network-interface/list/list.go index 218ad8a71..de6fd5100 100644 --- a/internal/cmd/beta/server/network-interface/list/list.go +++ b/internal/cmd/beta/server/network-interface/list/list.go @@ -76,8 +76,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } p.Info("No attached network interfaces found for server %q\n", serverLabel) diff --git a/internal/cmd/beta/server/public-ip/attach/attach.go b/internal/cmd/beta/server/public-ip/attach/attach.go index bbbebc5e9..ff6e6c05d 100644 --- a/internal/cmd/beta/server/public-ip/attach/attach.go +++ b/internal/cmd/beta/server/public-ip/attach/attach.go @@ -56,8 +56,8 @@ func NewCmd(p *print.Printer) *cobra.Command { publicIpLabel, _, err := iaasUtils.GetPublicIP(ctx, apiClient, model.ProjectId, model.PublicIpId) if err != nil { p.Debug(print.ErrorLevel, "get public ip name: %v", err) - } - if publicIpLabel == "" { + publicIpLabel = model.PublicIpId + } else if publicIpLabel == "" { publicIpLabel = model.PublicIpId } @@ -65,8 +65,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } diff --git a/internal/cmd/beta/server/public-ip/detach/detach.go b/internal/cmd/beta/server/public-ip/detach/detach.go index 9701f2fff..a5c0d366e 100644 --- a/internal/cmd/beta/server/public-ip/detach/detach.go +++ b/internal/cmd/beta/server/public-ip/detach/detach.go @@ -58,8 +58,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get public ip: %v", err) publicIpLabel = model.PublicIpId - } - if publicIpLabel == "" { + } else if publicIpLabel == "" { publicIpLabel = model.PublicIpId } @@ -67,8 +66,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } diff --git a/internal/cmd/beta/server/reboot/reboot.go b/internal/cmd/beta/server/reboot/reboot.go index 4ec5de2d4..2c32ac2c4 100644 --- a/internal/cmd/beta/server/reboot/reboot.go +++ b/internal/cmd/beta/server/reboot/reboot.go @@ -65,8 +65,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } if !model.AssumeYes { diff --git a/internal/cmd/beta/server/rescue/rescue.go b/internal/cmd/beta/server/rescue/rescue.go index 84e3c8a48..69f4be349 100644 --- a/internal/cmd/beta/server/rescue/rescue.go +++ b/internal/cmd/beta/server/rescue/rescue.go @@ -61,8 +61,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } diff --git a/internal/cmd/beta/server/resize/resize.go b/internal/cmd/beta/server/resize/resize.go index 1b2774ec5..6cd7da807 100644 --- a/internal/cmd/beta/server/resize/resize.go +++ b/internal/cmd/beta/server/resize/resize.go @@ -61,8 +61,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } diff --git a/internal/cmd/beta/server/service-account/attach/attach.go b/internal/cmd/beta/server/service-account/attach/attach.go index b13f564c4..cb822440d 100644 --- a/internal/cmd/beta/server/service-account/attach/attach.go +++ b/internal/cmd/beta/server/service-account/attach/attach.go @@ -59,8 +59,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } diff --git a/internal/cmd/beta/server/service-account/detach/detach.go b/internal/cmd/beta/server/service-account/detach/detach.go index 5538b73b2..e6ed7df88 100644 --- a/internal/cmd/beta/server/service-account/detach/detach.go +++ b/internal/cmd/beta/server/service-account/detach/detach.go @@ -59,8 +59,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } diff --git a/internal/cmd/beta/server/service-account/list/list.go b/internal/cmd/beta/server/service-account/list/list.go index 05797df64..0b5120e7d 100644 --- a/internal/cmd/beta/server/service-account/list/list.go +++ b/internal/cmd/beta/server/service-account/list/list.go @@ -67,8 +67,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverName = *model.ServerId - } - if serverName == "" { + } else if serverName == "" { serverName = *model.ServerId } diff --git a/internal/cmd/beta/server/start/start.go b/internal/cmd/beta/server/start/start.go index d23df5f3a..e9f908703 100644 --- a/internal/cmd/beta/server/start/start.go +++ b/internal/cmd/beta/server/start/start.go @@ -57,8 +57,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } diff --git a/internal/cmd/beta/server/stop/stop.go b/internal/cmd/beta/server/stop/stop.go index 2df691f87..53952101f 100644 --- a/internal/cmd/beta/server/stop/stop.go +++ b/internal/cmd/beta/server/stop/stop.go @@ -57,8 +57,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } diff --git a/internal/cmd/beta/server/unrescue/unrescue.go b/internal/cmd/beta/server/unrescue/unrescue.go index 72eb1e498..647a15e85 100644 --- a/internal/cmd/beta/server/unrescue/unrescue.go +++ b/internal/cmd/beta/server/unrescue/unrescue.go @@ -57,8 +57,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } diff --git a/internal/cmd/beta/server/update/update.go b/internal/cmd/beta/server/update/update.go index 5d06546cf..223942890 100644 --- a/internal/cmd/beta/server/update/update.go +++ b/internal/cmd/beta/server/update/update.go @@ -67,8 +67,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = model.ServerId } diff --git a/internal/cmd/beta/server/volume/attach/attach.go b/internal/cmd/beta/server/volume/attach/attach.go index 3415ba19a..5a5f3b484 100644 --- a/internal/cmd/beta/server/volume/attach/attach.go +++ b/internal/cmd/beta/server/volume/attach/attach.go @@ -68,8 +68,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get volume name: %v", err) volumeLabel = model.VolumeId - } - if volumeLabel == "" { + } else if volumeLabel == "" { volumeLabel = model.VolumeId } @@ -77,8 +76,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } diff --git a/internal/cmd/beta/server/volume/describe/describe.go b/internal/cmd/beta/server/volume/describe/describe.go index d591756b1..8ec3b488a 100644 --- a/internal/cmd/beta/server/volume/describe/describe.go +++ b/internal/cmd/beta/server/volume/describe/describe.go @@ -68,8 +68,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get volume name: %v", err) volumeLabel = model.VolumeId - } - if volumeLabel == "" { + } else if volumeLabel == "" { volumeLabel = model.VolumeId } @@ -77,8 +76,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } diff --git a/internal/cmd/beta/server/volume/detach/detach.go b/internal/cmd/beta/server/volume/detach/detach.go index f8a529135..858d749e5 100644 --- a/internal/cmd/beta/server/volume/detach/detach.go +++ b/internal/cmd/beta/server/volume/detach/detach.go @@ -58,8 +58,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get volume name: %v", err) volumeLabel = model.VolumeId - } - if volumeLabel == "" { + } else if volumeLabel == "" { volumeLabel = model.VolumeId } @@ -67,8 +66,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } diff --git a/internal/cmd/beta/server/volume/list/list.go b/internal/cmd/beta/server/volume/list/list.go index 02f54dfeb..54bde7194 100644 --- a/internal/cmd/beta/server/volume/list/list.go +++ b/internal/cmd/beta/server/volume/list/list.go @@ -60,8 +60,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId } diff --git a/internal/cmd/beta/server/volume/update/update.go b/internal/cmd/beta/server/volume/update/update.go index d17aa6a9c..7b90de143 100644 --- a/internal/cmd/beta/server/volume/update/update.go +++ b/internal/cmd/beta/server/volume/update/update.go @@ -64,8 +64,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get volume name: %v", err) volumeLabel = model.VolumeId - } - if volumeLabel == "" { + } else if volumeLabel == "" { volumeLabel = model.VolumeId } @@ -73,8 +72,7 @@ func NewCmd(p *print.Printer) *cobra.Command { if err != nil { p.Debug(print.ErrorLevel, "get server name: %v", err) serverLabel = *model.ServerId - } - if serverLabel == "" { + } else if serverLabel == "" { serverLabel = *model.ServerId }