Skip to content

Commit 78075a0

Browse files
hcsa73Henrique Santos
andauthored
Change flag behavior in "dns zone list" (#78)
* Change flag behavior * Fix example * Fix example --------- Co-authored-by: Henrique Santos <[email protected]>
1 parent ce6bc67 commit 78075a0

File tree

3 files changed

+33
-35
lines changed

3 files changed

+33
-35
lines changed

docs/stackit_dns_zone_list.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ stackit dns zone list [flags]
2222
List up to 10 DNS zones
2323
$ stackit dns zone list --limit 10
2424
25-
List the deleted DNS zones
26-
$ stackit dns zone list --deleted
25+
List DNS zones, including deleted
26+
$ stackit dns zone list --include-deleted
2727
```
2828

2929
### Options
3030

3131
```
3232
--active Filter for active zones
33-
--deleted Filter for deleted zones
3433
-h, --help Help for "stackit dns zone list"
35-
--inactive Filter for inactive zones. Deleted zones are always inactive and will be included when this flag is set
34+
--inactive Filter for inactive zones
35+
--include-deleted Includes successfully deleted zones (if unset, these are filtered out)
3636
--limit int Maximum number of entries to list
3737
--name-like string Filter by name
3838
--order-by-name string Order by name, one of ["asc" "desc"]

internal/cmd/dns/zone/list/list.go

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ import (
2020
)
2121

2222
const (
23-
activeFlag = "active"
24-
inactiveFlag = "inactive"
25-
deletedFlag = "deleted"
26-
nameLikeFlag = "name-like"
27-
orderByNameFlag = "order-by-name"
28-
limitFlag = "limit"
29-
pageSizeFlag = "page-size"
23+
activeFlag = "active"
24+
inactiveFlag = "inactive"
25+
nameLikeFlag = "name-like"
26+
orderByNameFlag = "order-by-name"
27+
includeDeletedFlag = "include-deleted"
28+
limitFlag = "limit"
29+
pageSizeFlag = "page-size"
3030

3131
pageSizeDefault = 100
3232
deleteSucceededState = "DELETE_SUCCEEDED"
@@ -35,13 +35,13 @@ const (
3535
type inputModel struct {
3636
*globalflags.GlobalFlagModel
3737

38-
Active bool
39-
Inactive bool
40-
Deleted bool
41-
NameLike *string
42-
OrderByName *string
43-
Limit *int64
44-
PageSize int64
38+
Active bool
39+
Inactive bool
40+
NameLike *string
41+
OrderByName *string
42+
IncludeDeleted bool
43+
Limit *int64
44+
PageSize int64
4545
}
4646

4747
func NewCmd() *cobra.Command {
@@ -61,8 +61,8 @@ func NewCmd() *cobra.Command {
6161
`List up to 10 DNS zones`,
6262
"$ stackit dns zone list --limit 10"),
6363
examples.NewExample(
64-
`List the deleted DNS zones`,
65-
"$ stackit dns zone list --deleted"),
64+
`List DNS zones, including deleted`,
65+
"$ stackit dns zone list --include-deleted"),
6666
),
6767
RunE: func(cmd *cobra.Command, args []string) error {
6868
ctx := context.Background()
@@ -102,10 +102,10 @@ func configureFlags(cmd *cobra.Command) {
102102
orderByNameFlagOptions := []string{"asc", "desc"}
103103

104104
cmd.Flags().Bool(activeFlag, false, "Filter for active zones")
105-
cmd.Flags().Bool(inactiveFlag, false, "Filter for inactive zones. Deleted zones are always inactive and will be included when this flag is set")
106-
cmd.Flags().Bool(deletedFlag, false, "Filter for deleted zones")
105+
cmd.Flags().Bool(inactiveFlag, false, "Filter for inactive zones")
107106
cmd.Flags().String(nameLikeFlag, "", "Filter by name")
108107
cmd.Flags().Var(flags.EnumFlag(true, "", orderByNameFlagOptions...), orderByNameFlag, fmt.Sprintf("Order by name, one of %q", orderByNameFlagOptions))
108+
cmd.Flags().Bool(includeDeletedFlag, false, "Includes successfully deleted zones (if unset, these are filtered out)")
109109
cmd.Flags().Int64(limitFlag, 0, "Maximum number of entries to list")
110110
cmd.Flags().Int64(pageSizeFlag, pageSizeDefault, "Number of items fetched in each API call. Does not affect the number of items in the command output")
111111
}
@@ -142,7 +142,7 @@ func parseInput(cmd *cobra.Command) (*inputModel, error) {
142142
GlobalFlagModel: globalFlags,
143143
Active: active,
144144
Inactive: inactive,
145-
Deleted: flags.FlagToBoolValue(cmd, deletedFlag),
145+
IncludeDeleted: flags.FlagToBoolValue(cmd, includeDeletedFlag),
146146
NameLike: flags.FlagToStringPointer(cmd, nameLikeFlag),
147147
OrderByName: flags.FlagToStringPointer(cmd, orderByNameFlag),
148148
Limit: limit,
@@ -158,17 +158,15 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient dnsClient, p
158158
if model.Inactive {
159159
req = req.ActiveEq(false)
160160
}
161-
if model.Deleted {
162-
req = req.StateEq(deleteSucceededState)
163-
} else if !model.Inactive {
164-
req = req.StateNeq(deleteSucceededState)
165-
}
166161
if model.NameLike != nil {
167162
req = req.NameLike(*model.NameLike)
168163
}
169164
if model.OrderByName != nil {
170165
req = req.OrderByName(strings.ToUpper(*model.OrderByName))
171166
}
167+
if !model.IncludeDeleted {
168+
req = req.StateNeq(deleteSucceededState)
169+
}
172170
req = req.PageSize(int32(model.PageSize))
173171
req = req.Page(int32(page))
174172
return req

internal/cmd/dns/zone/list/list_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ func TestParseInput(t *testing.T) {
7878
expectedModel: fixtureInputModel(),
7979
},
8080
{
81-
description: "deleted zones",
81+
description: "include deleted zones",
8282
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
83-
flagValues[deletedFlag] = "true"
83+
flagValues[includeDeletedFlag] = "true"
8484
}),
8585
isValid: true,
8686
expectedModel: fixtureInputModel(func(model *inputModel) {
87-
model.Deleted = true
87+
model.IncludeDeleted = true
8888
}),
8989
},
9090
{
@@ -269,12 +269,12 @@ func TestBuildRequest(t *testing.T) {
269269
expectedRequest: fixtureRequest().StateNeq(deleteSucceededState).Page(10),
270270
},
271271
{
272-
description: "deleted zones",
272+
description: "include deleted zones",
273273
model: fixtureInputModel(func(model *inputModel) {
274-
model.Deleted = true
274+
model.IncludeDeleted = true
275275
}),
276276
page: 1,
277-
expectedRequest: fixtureRequest().StateEq(deleteSucceededState).Page(1),
277+
expectedRequest: fixtureRequest().Page(1),
278278
},
279279
{
280280
description: "active zones",
@@ -290,7 +290,7 @@ func TestBuildRequest(t *testing.T) {
290290
model.Inactive = true
291291
}),
292292
page: 1,
293-
expectedRequest: fixtureRequest().ActiveEq(false).Page(1),
293+
expectedRequest: fixtureRequest().ActiveEq(false).StateNeq(deleteSucceededState).Page(1),
294294
},
295295
{
296296
description: "required fields only",

0 commit comments

Comments
 (0)