From 8527d03a2926200d129292663a8d76920296d13a Mon Sep 17 00:00:00 2001 From: Nuno Diegues Date: Fri, 30 Jul 2021 12:00:26 +0100 Subject: [PATCH] TUN-4847: Allow to list tunnels by prefix name or exclusion prefix name --- cmd/cloudflared/tunnel/subcommands.go | 18 ++++++++++++++++++ tunnelstore/filter.go | 8 ++++++++ 2 files changed, 26 insertions(+) diff --git a/cmd/cloudflared/tunnel/subcommands.go b/cmd/cloudflared/tunnel/subcommands.go index 933b11bb..377230af 100644 --- a/cmd/cloudflared/tunnel/subcommands.go +++ b/cmd/cloudflared/tunnel/subcommands.go @@ -49,6 +49,16 @@ var ( Aliases: []string{"n"}, Usage: "List tunnels with the given `NAME`", } + listNamePrefixFlag = &cli.StringFlag{ + Name: "name-prefix", + Aliases: []string{"np"}, + Usage: "List tunnels that start with the give `NAME` prefix", + } + listExcludeNamePrefixFlag = &cli.StringFlag{ + Name: "exclude-name-prefix", + Aliases: []string{"enp"}, + Usage: "List tunnels whose `NAME` does not start with the given prefix", + } listExistedAtFlag = &cli.TimestampFlag{ Name: "when", Aliases: []string{"w"}, @@ -217,6 +227,8 @@ func buildListCommand() *cli.Command { outputFormatFlag, showDeletedFlag, listNameFlag, + listNamePrefixFlag, + listExcludeNamePrefixFlag, listExistedAtFlag, listIDFlag, showRecentlyDisconnected, @@ -243,6 +255,12 @@ func listCommand(c *cli.Context) error { if name := c.String("name"); name != "" { filter.ByName(name) } + if namePrefix := c.String("name-prefix"); namePrefix != "" { + filter.ByNamePrefix(namePrefix) + } + if excludePrefix := c.String("exclude-name-prefix"); excludePrefix != "" { + filter.ExcludeNameWithPrefix(excludePrefix) + } if existedAt := c.Timestamp("time"); existedAt != nil { filter.ByExistedAt(*existedAt) } diff --git a/tunnelstore/filter.go b/tunnelstore/filter.go index 141997f7..5cf2c3bf 100644 --- a/tunnelstore/filter.go +++ b/tunnelstore/filter.go @@ -25,6 +25,14 @@ func (f *Filter) ByName(name string) { f.queryParams.Set("name", name) } +func (f *Filter) ByNamePrefix(namePrefix string) { + f.queryParams.Set("name_prefix", namePrefix) +} + +func (f *Filter) ExcludeNameWithPrefix(excludePrefix string) { + f.queryParams.Set("exclude_prefix", excludePrefix) +} + func (f *Filter) NoDeleted() { f.queryParams.Set("is_deleted", "false") }