Skip to content
40 changes: 22 additions & 18 deletions internal/cmd/network-area/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,31 +80,30 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
return fmt.Errorf("list network areas: %w", err)
}

if resp.Items == nil || len(*resp.Items) == 0 {
var orgLabel string
rmApiClient, err := rmClient.ConfigureClient(params.Printer, params.CliVersion)
if err == nil {
orgLabel, err = rmUtils.GetOrganizationName(ctx, rmApiClient, *model.OrganizationId)
if err != nil {
params.Printer.Debug(print.ErrorLevel, "get organization name: %v", err)
orgLabel = *model.OrganizationId
} else if orgLabel == "" {
orgLabel = *model.OrganizationId
}
} else {
params.Printer.Debug(print.ErrorLevel, "configure resource manager client: %v", err)
items := resp.GetItems()

var orgLabel string
rmApiClient, err := rmClient.ConfigureClient(params.Printer, params.CliVersion)
if err == nil {
orgLabel, err = rmUtils.GetOrganizationName(ctx, rmApiClient, *model.OrganizationId)
if err != nil {
params.Printer.Debug(print.ErrorLevel, "get organization name: %v", err)
orgLabel = *model.OrganizationId
}
params.Printer.Info("No STACKIT Network Areas found for organization %q\n", orgLabel)
return nil
} else {
params.Printer.Debug(print.ErrorLevel, "configure resource manager client: %v", err)
}

if orgLabel == "" {
orgLabel = *model.OrganizationId
}

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

return outputResult(params.Printer, model.OutputFormat, items)
return outputResult(params.Printer, orgLabel, model.OutputFormat, items)
},
}
configureFlags(cmd)
Expand Down Expand Up @@ -149,8 +148,13 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
return req
}

func outputResult(p *print.Printer, outputFormat string, networkAreas []iaas.NetworkArea) error {
func outputResult(p *print.Printer, orgLabel, outputFormat string, networkAreas []iaas.NetworkArea) error {
return p.OutputResult(outputFormat, networkAreas, func() error {
if len(networkAreas) == 0 {
p.Outputf("No STACKIT Network Areas found for organization %q\n", orgLabel)
return nil
}

table := tables.NewTable()
table.SetHeader("ID", "Name", "# Attached Projects")

Expand Down
3 changes: 2 additions & 1 deletion internal/cmd/network-area/list/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ func TestBuildRequest(t *testing.T) {
func TestOutputResult(t *testing.T) {
type args struct {
outputFormat string
orgLabel string
networkAreas []iaas.NetworkArea
}
tests := []struct {
Expand Down Expand Up @@ -200,7 +201,7 @@ func TestOutputResult(t *testing.T) {
p.Cmd = NewCmd(&types.CmdParams{Printer: p})
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := outputResult(p, tt.args.outputFormat, tt.args.networkAreas); (err != nil) != tt.wantErr {
if err := outputResult(p, tt.args.outputFormat, tt.args.orgLabel, tt.args.networkAreas); (err != nil) != tt.wantErr {
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
}
})
Expand Down
26 changes: 13 additions & 13 deletions internal/cmd/network/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,25 +77,20 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
return fmt.Errorf("list networks: %w", err)
}

if resp.Items == nil || len(*resp.Items) == 0 {
projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd)
if err != nil {
params.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
projectLabel = model.ProjectId
} else if projectLabel == "" {
projectLabel = model.ProjectId
}
params.Printer.Info("No networks found for project %q\n", projectLabel)
return nil
items := resp.GetItems()

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

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

return outputResult(params.Printer, model.OutputFormat, items)
return outputResult(params.Printer, model.OutputFormat, projectLabel, items)
},
}
configureFlags(cmd)
Expand Down Expand Up @@ -139,8 +134,13 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
return req
}

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

table := tables.NewTable()
table.SetHeader("ID", "NAME", "STATUS", "PUBLIC IP", "PREFIXES", "ROUTED", "ROUTING TABLE ID")

Expand Down
3 changes: 2 additions & 1 deletion internal/cmd/network/list/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ func TestBuildRequest(t *testing.T) {
func TestOutputResult(t *testing.T) {
type args struct {
outputFormat string
projectLabel string
networks []iaas.Network
}
tests := []struct {
Expand All @@ -202,7 +203,7 @@ func TestOutputResult(t *testing.T) {
p.Cmd = NewCmd(&types.CmdParams{Printer: p})
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := outputResult(p, tt.args.outputFormat, tt.args.networks); (err != nil) != tt.wantErr {
if err := outputResult(p, tt.args.outputFormat, tt.args.projectLabel, tt.args.networks); (err != nil) != tt.wantErr {
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
}
})
Expand Down
23 changes: 12 additions & 11 deletions internal/cmd/server/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,23 +78,20 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
return fmt.Errorf("list servers: %w", err)
}

if resp.Items == nil || len(*resp.Items) == 0 {
projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd)
if err != nil {
params.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
projectLabel = model.ProjectId
}
params.Printer.Info("No servers found for project %q\n", projectLabel)
return nil
items := resp.GetItems()

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

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

return outputResult(params.Printer, model.OutputFormat, items)
return outputResult(params.Printer, model.OutputFormat, projectLabel, items)
},
}
configureFlags(cmd)
Expand Down Expand Up @@ -140,7 +137,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
return req
}

func outputResult(p *print.Printer, outputFormat string, servers []iaas.Server) error {
func outputResult(p *print.Printer, outputFormat, projectLabel string, servers []iaas.Server) error {
switch outputFormat {
case print.JSONOutputFormat:
details, err := json.MarshalIndent(servers, "", " ")
Expand All @@ -164,6 +161,10 @@ func outputResult(p *print.Printer, outputFormat string, servers []iaas.Server)

return nil
default:
if len(servers) == 0 {
p.Outputf("No servers found for project %q\n", projectLabel)
return nil
}
table := tables.NewTable()
table.SetHeader("ID", "Name", "Status", "Machine Type", "Availability Zones", "Nic IPv4", "Public IPs")

Expand Down
3 changes: 2 additions & 1 deletion internal/cmd/server/list/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ func TestBuildRequest(t *testing.T) {
func TestOutputResult(t *testing.T) {
type args struct {
outputFormat string
projectLabel string
servers []iaas.Server
}
tests := []struct {
Expand All @@ -194,7 +195,7 @@ func TestOutputResult(t *testing.T) {
p.Cmd = NewCmd(&types.CmdParams{Printer: 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 {
if err := outputResult(p, tt.args.outputFormat, tt.args.projectLabel, tt.args.servers); (err != nil) != tt.wantErr {
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
}
})
Expand Down
Loading