Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions internal/cmd/beta/network/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"strings"

"github.com/goccy/go-yaml"
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
Expand Down Expand Up @@ -151,7 +152,7 @@ func outputResult(p *print.Printer, outputFormat string, networks []iaas.Network
return nil
default:
table := tables.NewTable()
table.SetHeader("ID", "NAME", "STATUS", "PUBLIC IP", "ROUTED")
table.SetHeader("ID", "NAME", "STATUS", "PUBLIC IP", "PREFIXES", "ROUTED")

for _, network := range networks {
publicIp := ""
Expand All @@ -163,8 +164,12 @@ func outputResult(p *print.Printer, outputFormat string, networks []iaas.Network
if network.Routed != nil {
routed = *network.Routed
}
prefixes := ""
if network.Prefixes != nil && len(*network.Prefixes) > 0 {
prefixes = strings.Join(*network.Prefixes, ", ")
}

table.AddRow(*network.NetworkId, *network.Name, *network.State, publicIp, routed)
table.AddRow(*network.NetworkId, *network.Name, *network.State, publicIp, prefixes, routed)
table.AddSeparator()
}

Expand Down
77 changes: 73 additions & 4 deletions internal/cmd/beta/security-group/describe/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import (
"fmt"
"strings"

"github.com/goccy/go-yaml"
"github.com/spf13/cobra"
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
Expand All @@ -16,6 +14,9 @@ import (
"github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client"
"github.com/stackitcloud/stackit-cli/internal/pkg/tables"
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"

"github.com/goccy/go-yaml"
"github.com/spf13/cobra"
"github.com/stackitcloud/stackit-sdk-go/services/iaas"
)

Expand Down Expand Up @@ -114,7 +115,11 @@ func outputResult(p *print.Printer, model *inputModel, resp *iaas.SecurityGroup)

return nil
default:
var content []tables.Table

table := tables.NewTable()
table.SetTitle("SECURITY GROUP")

if id := resp.Id; id != nil {
table.AddRow("ID", *id)
}
Expand All @@ -130,16 +135,80 @@ func outputResult(p *print.Printer, model *inputModel, resp *iaas.SecurityGroup)
table.AddSeparator()
}

if stateful := resp.Stateful; stateful != nil {
table.AddRow("STATEFUL", *stateful)
table.AddSeparator()
}

if resp.Labels != nil && len(*resp.Labels) > 0 {
labels := []string{}
var labels []string
for key, value := range *resp.Labels {
labels = append(labels, fmt.Sprintf("%s: %s", key, value))
}
table.AddRow("LABELS", strings.Join(labels, "\n"))
table.AddSeparator()
}

if err := table.Display(p); err != nil {
if resp.CreatedAt != nil {
table.AddRow("CREATED AT", utils.ConvertTimePToDateTimeString(resp.CreatedAt))
table.AddSeparator()
}

if resp.UpdatedAt != nil {
table.AddRow("UPDATED AT", utils.ConvertTimePToDateTimeString(resp.UpdatedAt))
table.AddSeparator()
}

content = append(content, table)

if resp.Rules != nil && len(*resp.Rules) > 0 {
rulesTable := tables.NewTable()
rulesTable.SetTitle("RULES")
rulesTable.SetHeader(
"ID",
"DESCRIPTION",
"PROTOCOL",
"DIRECTION",
"ETHER TYPE",
"PORT RANGE",
"IP RANGE",
"ICMP PARAMETERS",
"REMOTE SECURITY GROUP ID",
)

for _, rule := range *resp.Rules {
var portRange string
if rule.PortRange != nil {
portRange = fmt.Sprintf("%s-%s", utils.PtrString(rule.PortRange.Min), utils.PtrString(rule.PortRange.Max))
}

var protocol string
if rule.Protocol != nil {
protocol = utils.PtrString(rule.Protocol.Name)
}

var icmpParameter string
if rule.IcmpParameters != nil {
icmpParameter = fmt.Sprintf("type: %s, code: %s", utils.PtrString(rule.IcmpParameters.Type), utils.PtrString(rule.IcmpParameters.Code))
}

rulesTable.AddRow(
utils.PtrString(rule.Id),
utils.PtrString(rule.Description),
protocol,
utils.PtrString(rule.Direction),
utils.PtrString(rule.Ethertype),
portRange,
utils.PtrString(rule.IpRange),
icmpParameter,
utils.PtrString(rule.RemoteSecurityGroupId),
)
}

content = append(content, rulesTable)
}

if err := tables.DisplayTables(p, content); err != nil {
return fmt.Errorf("render table: %w", err)
}

Expand Down
20 changes: 18 additions & 2 deletions internal/cmd/beta/security-group/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"strings"

"github.com/goccy/go-yaml"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -137,9 +138,24 @@ func outputResult(p *print.Printer, outputFormat string, items []iaas.SecurityGr
return nil
default:
table := tables.NewTable()
table.SetHeader("ID", "NAME", "STATEFUL")
table.SetHeader("ID", "NAME", "STATEFUL", "DESCRIPTION", "LABELS")
for _, item := range items {
table.AddRow(utils.PtrString(item.Id), utils.PtrString(item.Name), utils.PtrString(item.Stateful))
var labelsString string
if item.Labels != nil {
var labels []string
for key, value := range *item.Labels {
labels = append(labels, fmt.Sprintf("%s: %s", key, value))
}
labelsString = strings.Join(labels, ", ")
}

table.AddRow(
utils.PtrString(item.Id),
utils.PtrString(item.Name),
utils.PtrString(item.Stateful),
utils.PtrString(item.Description),
labelsString,
)
}
err := table.Display(p)
if err != nil {
Expand Down
15 changes: 11 additions & 4 deletions internal/cmd/beta/security-group/rule/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"encoding/json"
"fmt"

"github.com/goccy/go-yaml"
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
Expand All @@ -16,9 +15,11 @@ import (
"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/tables"
"github.com/stackitcloud/stackit-sdk-go/services/iaas"
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"

"github.com/goccy/go-yaml"
"github.com/spf13/cobra"
"github.com/stackitcloud/stackit-sdk-go/services/iaas"
)

const (
Expand Down Expand Up @@ -166,7 +167,7 @@ func outputResult(p *print.Printer, outputFormat string, securityGroupRules []ia
return nil
default:
table := tables.NewTable()
table.SetHeader("ID", "ETHER TYPE", "DIRECTION", "PROTOCOL")
table.SetHeader("ID", "ETHER TYPE", "DIRECTION", "PROTOCOL", "REMOTE SECURITY GROUP ID")

for _, securityGroupRule := range securityGroupRules {
etherType := ""
Expand All @@ -181,7 +182,13 @@ func outputResult(p *print.Printer, outputFormat string, securityGroupRules []ia
}
}

table.AddRow(*securityGroupRule.Id, etherType, *securityGroupRule.Direction, protocolName)
table.AddRow(
utils.PtrString(securityGroupRule.Id),
etherType,
utils.PtrString(securityGroupRule.Direction),
protocolName,
utils.PtrString(securityGroupRule.RemoteSecurityGroupId),
)
table.AddSeparator()
}

Expand Down
62 changes: 51 additions & 11 deletions internal/cmd/beta/server/describe/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import (
"encoding/json"
"fmt"
"strings"

"github.com/goccy/go-yaml"
"time"

"github.com/stackitcloud/stackit-cli/internal/pkg/args"
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
Expand All @@ -16,9 +15,10 @@ import (
"github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client"
"github.com/stackitcloud/stackit-cli/internal/pkg/tables"
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
"github.com/stackitcloud/stackit-sdk-go/services/iaas"

"github.com/goccy/go-yaml"
"github.com/spf13/cobra"
"github.com/stackitcloud/stackit-sdk-go/services/iaas"
)

const (
Expand Down Expand Up @@ -138,8 +138,10 @@ func outputResult(p *print.Printer, model *inputModel, server *iaas.Server) erro
table.AddSeparator()
table.AddRow("AVAILABILITY ZONE", *server.AvailabilityZone)
table.AddSeparator()
table.AddRow("BOOT VOLUME", *server.BootVolume.Id)
table.AddSeparator()
if server.BootVolume != nil && server.BootVolume.Id != nil {
table.AddRow("BOOT VOLUME", *server.BootVolume.Id)
table.AddSeparator()
}
table.AddRow("POWER STATUS", *server.PowerStatus)
table.AddSeparator()

Expand Down Expand Up @@ -189,20 +191,58 @@ func outputResult(p *print.Printer, model *inputModel, server *iaas.Server) erro
if server.Nics != nil && len(*server.Nics) > 0 {
nicsTable := tables.NewTable()
nicsTable.SetTitle("Attached Network Interfaces")
nicsTable.SetHeader("ID", "NETWORK ID", "NETWORK NAME", "PUBLIC IP")
nicsTable.SetHeader("ID", "NETWORK ID", "NETWORK NAME", "IPv4", "PUBLIC IP")

for _, nic := range *server.Nics {
publicIp := ""
if nic.PublicIp != nil {
publicIp = *nic.PublicIp
}
nicsTable.AddRow(*nic.NicId, *nic.NetworkId, *nic.NetworkName, publicIp)
nicsTable.AddRow(
utils.PtrString(nic.NicId),
utils.PtrString(nic.NetworkId),
utils.PtrString(nic.NetworkName),
utils.PtrString(nic.Ipv4),
utils.PtrString(nic.PublicIp),
)
nicsTable.AddSeparator()
}

content = append(content, nicsTable)
}

server.MaintenanceWindow = &iaas.ServerMaintenance{
Details: utils.Ptr("Details about maintenance"),
EndsAt: utils.Ptr(time.Now()),
StartsAt: utils.Ptr(time.Now()),
Status: utils.Ptr("PLANNED"),
}
if server.MaintenanceWindow != nil {
maintenanceWindow := tables.NewTable()
maintenanceWindow.SetTitle("Maintenance Window")

if server.MaintenanceWindow.Status != nil {
maintenanceWindow.AddRow("STATUS", *server.MaintenanceWindow.Status)
maintenanceWindow.AddSeparator()
}
if server.MaintenanceWindow.Details != nil {
maintenanceWindow.AddRow("DETAILS", *server.MaintenanceWindow.Details)
maintenanceWindow.AddSeparator()
}
if server.MaintenanceWindow.StartsAt != nil {
maintenanceWindow.AddRow(
"STARTS AT",
utils.ConvertTimePToDateTimeString(server.MaintenanceWindow.StartsAt),
)
maintenanceWindow.AddSeparator()
}
if server.MaintenanceWindow.EndsAt != nil {
maintenanceWindow.AddRow(
"ENDS AT",
utils.ConvertTimePToDateTimeString(server.MaintenanceWindow.EndsAt),
)
maintenanceWindow.AddSeparator()
}

content = append(content, maintenanceWindow)
}

err := tables.DisplayTables(p, content)
if err != nil {
return fmt.Errorf("render table: %w", err)
Expand Down
35 changes: 31 additions & 4 deletions internal/cmd/beta/server/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"encoding/json"
"fmt"

"github.com/goccy/go-yaml"
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
Expand All @@ -15,9 +14,11 @@ import (
"github.com/stackitcloud/stackit-cli/internal/pkg/projectname"
"github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client"
"github.com/stackitcloud/stackit-cli/internal/pkg/tables"
"github.com/stackitcloud/stackit-sdk-go/services/iaas"
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"

"github.com/goccy/go-yaml"
"github.com/spf13/cobra"
"github.com/stackitcloud/stackit-sdk-go/services/iaas"
)

const (
Expand Down Expand Up @@ -140,6 +141,7 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
if model.LabelSelector != nil {
req = req.LabelSelector(*model.LabelSelector)
}
req = req.Details(true)

return req
}
Expand All @@ -164,11 +166,36 @@ func outputResult(p *print.Printer, outputFormat string, servers []iaas.Server)
return nil
default:
table := tables.NewTable()
table.SetHeader("ID", "Name", "Status", "Availability Zones")
table.SetHeader("ID", "Name", "Status", "Machine Types", "Availability Zones", "Nic IPv4", "Public IPs")

for i := range servers {
server := servers[i]
table.AddRow(*server.Id, *server.Name, *server.Status, *server.AvailabilityZone)

nicIPv4 := ""
publicIPs := ""
if server.Nics != nil && len(*server.Nics) > 0 {
for i, nic := range *server.Nics {
if nic.Ipv4 != nil || nic.PublicIp != nil {
nicIPv4 += utils.PtrString(nic.Ipv4)
publicIPs = utils.PtrString(nic.PublicIp)

if i != len(*server.Nics)-1 {
publicIPs += "\n"
nicIPv4 += "\n"
}
}
}
}

table.AddRow(
utils.PtrString(server.Id),
utils.PtrString(server.Name),
utils.PtrString(server.Status),
utils.PtrString(server.MachineType),
utils.PtrString(server.AvailabilityZone),
nicIPv4,
publicIPs,
)
}

p.Outputln(table.Render())
Expand Down
Loading
Loading