Skip to content

Commit e989d88

Browse files
committed
- Change description for server service-account list
- Add `--limit` Flag to `server service-account list`
1 parent 7b1a738 commit e989d88

File tree

6 files changed

+59
-7
lines changed

6 files changed

+59
-7
lines changed

docs/stackit_beta_server_service-account.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ stackit beta server service-account [flags]
3131
* [stackit beta server](./stackit_beta_server.md) - Provides functionality for servers
3232
* [stackit beta server service-account attach](./stackit_beta_server_service-account_attach.md) - Attach a service account to a server
3333
* [stackit beta server service-account detach](./stackit_beta_server_service-account_detach.md) - Detach a service account from a server
34-
* [stackit beta server service-account list](./stackit_beta_server_service-account_list.md) - List all attached service accounts from a server
34+
* [stackit beta server service-account list](./stackit_beta_server_service-account_list.md) - List all attached service accounts for a server
3535

docs/stackit_beta_server_service-account_list.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
## stackit beta server service-account list
22

3-
List all attached service accounts from a server
3+
List all attached service accounts for a server
44

55
### Synopsis
66

7-
List all attached service accounts from a server
7+
List all attached service accounts for a server
88

99
```
1010
stackit beta server service-account list [flags]
@@ -16,6 +16,9 @@ stackit beta server service-account list [flags]
1616
List all attached service accounts for a server with ID "xxx"
1717
$ stackit beta server service-account list --server-id xxx
1818
19+
List up to 10 attached service accounts for a server with ID "xxx"
20+
$ stackit beta server service-account list --server-id xxx --limit 10
21+
1922
List all attached service accounts for a server with ID "xxx" in JSON format
2023
$ stackit beta server service-account list --server-id xxx --output-format json
2124
```
@@ -24,6 +27,7 @@ stackit beta server service-account list [flags]
2427

2528
```
2629
-h, --help Help for "stackit beta server service-account list"
30+
--limit int Maximum number of entries to list
2731
-s, --server-id string Server ID
2832
```
2933

internal/cmd/beta/server/service-account/attach/attach.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
)
2121

2222
const (
23-
serviceAccMailArg = "SERVICE_ACCOUNT_MAIL"
23+
serviceAccMailArg = "SERVICE_ACCOUNT_EMAIL"
2424

2525
serverIdFlag = "server-id"
2626
)

internal/cmd/beta/server/service-account/detach/detach.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
)
2121

2222
const (
23-
serviceAccMailArg = "SERVICE_ACCOUNT_MAIL"
23+
serviceAccMailArg = "SERVICE_ACCOUNT_EMAIL"
2424

2525
serverIdFlag = "server-id"
2626
)

internal/cmd/beta/server/service-account/list/list.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,30 @@ import (
2121

2222
const (
2323
serverIdFlag = "server-id"
24+
limitFlag = "limit"
2425
)
2526

2627
type inputModel struct {
2728
*globalflags.GlobalFlagModel
29+
Limit *int64
2830
ServerId *string
2931
}
3032

3133
func NewCmd(p *print.Printer) *cobra.Command {
3234
cmd := &cobra.Command{
3335
Use: "list",
34-
Short: "List all attached service accounts from a server",
35-
Long: "List all attached service accounts from a server",
36+
Short: "List all attached service accounts for a server",
37+
Long: "List all attached service accounts for a server",
3638
Args: cobra.NoArgs,
3739
Example: examples.Build(
3840
examples.NewExample(
3941
`List all attached service accounts for a server with ID "xxx"`,
4042
"$ stackit beta server service-account list --server-id xxx",
4143
),
44+
examples.NewExample(
45+
`List up to 10 attached service accounts for a server with ID "xxx"`,
46+
"$ stackit beta server service-account list --server-id xxx --limit 10",
47+
),
4248
examples.NewExample(
4349
`List all attached service accounts for a server with ID "xxx" in JSON format`,
4450
"$ stackit beta server service-account list --server-id xxx --output-format json",
@@ -75,6 +81,10 @@ func NewCmd(p *print.Printer) *cobra.Command {
7581
return nil
7682
}
7783

84+
if model.Limit != nil && len(serviceAccounts) > int(*model.Limit) {
85+
serviceAccounts = serviceAccounts[:int(*model.Limit)]
86+
}
87+
7888
return outputResult(p, model.OutputFormat, *model.ServerId, serverName, serviceAccounts)
7989
},
8090
}
@@ -84,6 +94,7 @@ func NewCmd(p *print.Printer) *cobra.Command {
8494

8595
func configureFlags(cmd *cobra.Command) {
8696
cmd.Flags().VarP(flags.UUIDFlag(), serverIdFlag, "s", "Server ID")
97+
cmd.Flags().Int64(limitFlag, 0, "Maximum number of entries to list")
8798

8899
err := flags.MarkFlagsRequired(cmd, serverIdFlag)
89100
cobra.CheckErr(err)
@@ -95,8 +106,17 @@ func parseInput(p *print.Printer, cmd *cobra.Command) (*inputModel, error) {
95106
return nil, &errors.ProjectIdError{}
96107
}
97108

109+
limit := flags.FlagToInt64Pointer(p, cmd, limitFlag)
110+
if limit != nil && *limit < 1 {
111+
return nil, &errors.FlagValidationError{
112+
Flag: limitFlag,
113+
Details: "must be greater than 0",
114+
}
115+
}
116+
98117
model := inputModel{
99118
GlobalFlagModel: globalFlags,
119+
Limit: limit,
100120
ServerId: flags.FlagToStringPointer(p, cmd, serverIdFlag),
101121
}
102122

internal/cmd/beta/server/service-account/list/list_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package list
22

33
import (
44
"context"
5+
"strconv"
56
"testing"
67

78
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
@@ -22,11 +23,13 @@ var testCtx = context.WithValue(context.Background(), &testCtxKey{}, "test")
2223
var testClient = &iaas.APIClient{}
2324
var testProjectId = uuid.NewString()
2425
var testServerId = uuid.NewString()
26+
var testLimit = int64(10)
2527

2628
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
2729
flagValues := map[string]string{
2830
projectIdFlag: testProjectId,
2931
serverIdFlag: testServerId,
32+
limitFlag: strconv.FormatInt(testLimit, 10),
3033
}
3134
for _, mod := range mods {
3235
mod(flagValues)
@@ -41,6 +44,7 @@ func fixtureInputModel(mods ...func(inputModel *inputModel)) *inputModel {
4144
ProjectId: testProjectId,
4245
},
4346
ServerId: utils.Ptr(testServerId),
47+
Limit: utils.Ptr(testLimit),
4448
}
4549
for _, mod := range mods {
4650
mod(model)
@@ -116,6 +120,30 @@ func TestParseInput(t *testing.T) {
116120
}),
117121
isValid: false,
118122
},
123+
{
124+
description: "without limit",
125+
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
126+
delete(flagValues, limitFlag)
127+
}),
128+
isValid: true,
129+
expectedModel: fixtureInputModel(func(model *inputModel) {
130+
model.Limit = nil
131+
}),
132+
},
133+
{
134+
description: "limit invalid 1",
135+
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
136+
flagValues[limitFlag] = "invalid"
137+
}),
138+
isValid: false,
139+
},
140+
{
141+
description: "limit invalid 2",
142+
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
143+
flagValues[limitFlag] = "0"
144+
}),
145+
isValid: false,
146+
},
119147
}
120148

121149
for _, tt := range tests {

0 commit comments

Comments
 (0)