mirror of
https://github.com/crowdsecurity/crowdsec.git
synced 2025-05-10 20:05:55 +02:00
custom duration type for "cscli bouncers prune"
This commit is contained in:
parent
f5e9424b4a
commit
662da8ce33
2 changed files with 15 additions and 7 deletions
|
@ -9,10 +9,14 @@ import (
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
"github.com/crowdsecurity/go-cs-lib/cstime"
|
||||||
|
|
||||||
"github.com/crowdsecurity/crowdsec/cmd/crowdsec-cli/args"
|
"github.com/crowdsecurity/crowdsec/cmd/crowdsec-cli/args"
|
||||||
"github.com/crowdsecurity/crowdsec/cmd/crowdsec-cli/ask"
|
"github.com/crowdsecurity/crowdsec/cmd/crowdsec-cli/ask"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const defaultPruneDuration = 60 * time.Minute
|
||||||
|
|
||||||
func (cli *cliBouncers) prune(ctx context.Context, duration time.Duration, force bool) error {
|
func (cli *cliBouncers) prune(ctx context.Context, duration time.Duration, force bool) error {
|
||||||
if duration < 2*time.Minute {
|
if duration < 2*time.Minute {
|
||||||
if yes, err := ask.YesNo(
|
if yes, err := ask.YesNo(
|
||||||
|
@ -59,12 +63,9 @@ func (cli *cliBouncers) prune(ctx context.Context, duration time.Duration, force
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cli *cliBouncers) newPruneCmd() *cobra.Command {
|
func (cli *cliBouncers) newPruneCmd() *cobra.Command {
|
||||||
var (
|
var force bool
|
||||||
duration time.Duration
|
|
||||||
force bool
|
|
||||||
)
|
|
||||||
|
|
||||||
const defaultDuration = 60 * time.Minute
|
duration := cstime.Duration(defaultPruneDuration)
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "prune",
|
Use: "prune",
|
||||||
|
@ -74,12 +75,12 @@ func (cli *cliBouncers) newPruneCmd() *cobra.Command {
|
||||||
Example: `cscli bouncers prune -d 45m
|
Example: `cscli bouncers prune -d 45m
|
||||||
cscli bouncers prune -d 45m --force`,
|
cscli bouncers prune -d 45m --force`,
|
||||||
RunE: func(cmd *cobra.Command, _ []string) error {
|
RunE: func(cmd *cobra.Command, _ []string) error {
|
||||||
return cli.prune(cmd.Context(), duration, force)
|
return cli.prune(cmd.Context(), time.Duration(duration), force)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
flags := cmd.Flags()
|
flags := cmd.Flags()
|
||||||
flags.DurationVarP(&duration, "duration", "d", defaultDuration, "duration of time since last pull")
|
flags.VarP(&duration, "duration", "d", "duration of time since last pull")
|
||||||
flags.BoolVar(&force, "force", false, "force prune without asking for confirmation")
|
flags.BoolVar(&force, "force", false, "force prune without asking for confirmation")
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
|
|
|
@ -133,6 +133,13 @@ teardown() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "cscli bouncers prune" {
|
@test "cscli bouncers prune" {
|
||||||
|
rune -1 cscli bouncers prune --duration foobar
|
||||||
|
assert_stderr 'Error: invalid argument "foobar" for "-d, --duration" flag: time: invalid duration "foobar"'
|
||||||
|
|
||||||
|
# duration takes days as well
|
||||||
|
rune -0 cscli bouncers prune --duration 1d30m
|
||||||
|
assert_output 'No bouncers to prune.'
|
||||||
|
|
||||||
rune -0 cscli bouncers prune
|
rune -0 cscli bouncers prune
|
||||||
assert_output 'No bouncers to prune.'
|
assert_output 'No bouncers to prune.'
|
||||||
rune -0 cscli bouncers add ciTestBouncer
|
rune -0 cscli bouncers add ciTestBouncer
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue