Skip to content

Commit 1d1ce6f

Browse files
committed
feat: include uuid of created resource in create output
1 parent 21ea18d commit 1d1ce6f

8 files changed

Lines changed: 40 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
## [Unreleased]
9+
### Added
10+
- Include UUID (or address) of created resource in create command output
11+
912
### Changed
1013
- New go-api version v4.3.0
1114

internal/commands/ipaddress/assign.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,7 @@ func (s *assignCommand) ExecuteWithoutArguments(exec commands.Executor) (output.
9292
}
9393
logline.SetMessage(fmt.Sprintf("%s: success", msg))
9494
logline.MarkDone()
95-
return output.OnlyMarshaled{Value: res}, nil
95+
return output.MarshaledWithHumanDetails{Value: res, Details: []output.DetailRow{
96+
{Title: "IP Address", Value: res.Address, Colour: ui.DefaultAddressColours},
97+
}}, nil
9698
}

internal/commands/network/create.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,5 +120,7 @@ func (s *createCommand) ExecuteWithoutArguments(exec commands.Executor) (output.
120120
}
121121
logline.SetMessage(fmt.Sprintf("%s: success", msg))
122122
logline.MarkDone()
123-
return output.OnlyMarshaled{Value: res}, nil
123+
return output.MarshaledWithHumanDetails{Value: res, Details: []output.DetailRow{
124+
{Title: "UUID", Value: res.UUID, Colour: ui.DefaultUUUIDColours},
125+
}}, nil
124126
}

internal/commands/networkinterface/create.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ package networkinterface
22

33
import (
44
"fmt"
5+
"strings"
56

67
"github.com/UpCloudLtd/upcloud-cli/internal/commands"
78
"github.com/UpCloudLtd/upcloud-cli/internal/completion"
89
"github.com/UpCloudLtd/upcloud-cli/internal/config"
910
"github.com/UpCloudLtd/upcloud-cli/internal/output"
1011
"github.com/UpCloudLtd/upcloud-cli/internal/resolver"
1112
"github.com/UpCloudLtd/upcloud-cli/internal/ui"
13+
"github.com/jedib0t/go-pretty/v6/text"
1214

1315
"github.com/UpCloudLtd/upcloud-go-api/v4/upcloud"
1416
"github.com/UpCloudLtd/upcloud-go-api/v4/upcloud/request"
@@ -107,5 +109,23 @@ func (s *createCommand) ExecuteSingleArgument(exec commands.Executor, arg string
107109
logline.SetMessage(fmt.Sprintf("%s: done", msg))
108110
logline.MarkDone()
109111

110-
return output.OnlyMarshaled{Value: res}, nil
112+
return output.MarshaledWithHumanDetails{Value: res, Details: []output.DetailRow{
113+
{Title: "MAC Address", Value: res.MAC},
114+
{Title: "IP Addresses", Value: res, Format: formatIPAddresses},
115+
}}, nil
116+
}
117+
118+
func formatIPAddresses(val interface{}) (text.Colors, string, error) {
119+
iface, ok := val.(*upcloud.Interface)
120+
if !ok {
121+
return nil, "", fmt.Errorf("cannot parse IP addresses from %T, expected *upcloud.Interface", val)
122+
}
123+
124+
strs := make([]string, len(iface.IPAddresses))
125+
126+
for i, ipa := range iface.IPAddresses {
127+
strs[i] = ui.DefaultAddressColours.Sprint(ipa.Address)
128+
}
129+
130+
return nil, strings.Join(strs, ",\n"), nil
111131
}

internal/commands/router/create.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,7 @@ func (s *createCommand) ExecuteWithoutArguments(exec commands.Executor) (output.
5959
logline.SetMessage(fmt.Sprintf("%s: done", msg))
6060
logline.MarkDone()
6161

62-
return output.OnlyMarshaled{Value: res}, nil
62+
return output.MarshaledWithHumanDetails{Value: res, Details: []output.DetailRow{
63+
{Title: "UUID", Value: res.UUID, Colour: ui.DefaultUUUIDColours},
64+
}}, nil
6365
}

internal/commands/server/create.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ func formatIPAddresses(val interface{}) (text.Colors, string, error) {
400400

401401
var strs []string
402402
for ipa := range addresses {
403-
strs = append(strs, ipa)
403+
strs = append(strs, ui.DefaultAddressColours.Sprint(ipa))
404404
}
405405

406406
return nil, strings.Join(strs, ",\n"), nil

internal/commands/storage/backup_create.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,7 @@ func (s *createBackupCommand) Execute(exec commands.Executor, uuid string) (outp
7474
logline.SetMessage(fmt.Sprintf("%s: success", msg))
7575
logline.MarkDone()
7676

77-
return output.OnlyMarshaled{Value: res}, nil
77+
return output.MarshaledWithHumanDetails{Value: res, Details: []output.DetailRow{
78+
{Title: "UUID", Value: res.UUID, Colour: ui.DefaultUUUIDColours},
79+
}}, nil
7880
}

internal/commands/storage/create.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,5 +112,7 @@ func (s *createCommand) ExecuteWithoutArguments(exec commands.Executor) (output.
112112
logline.SetMessage(fmt.Sprintf("%s: success", msg))
113113
logline.MarkDone()
114114

115-
return output.OnlyMarshaled{Value: res}, nil
115+
return output.MarshaledWithHumanDetails{Value: res, Details: []output.DetailRow{
116+
{Title: "UUID", Value: res.UUID, Colour: ui.DefaultUUUIDColours},
117+
}}, nil
116118
}

0 commit comments

Comments
 (0)