Convert CLI to urfave v2
Followed the Migration Guide at https://cli.urfave.org/migrate-v1-to-v2/ The major changes not pointed out in the migration guide are: - context.Args() no longer produces a []slice, so context.Args().Slice() in substitued - All cli.Global***** are deprecated (the migration guide is somewhat unclear on this) Signed-off-by: Derek Nola <derek.nola@suse.com> Vendor in urfave cli/v2 Signed-off-by: Derek Nola <derek.nola@suse.com> Fix NewStringSlice calls Signed-off-by: Derek Nola <derek.nola@suse.com>
This commit is contained in:
@@ -34,14 +34,14 @@ import (
|
||||
"github.com/containerd/containerd/v2/pkg/namespaces"
|
||||
"github.com/containerd/containerd/v2/pkg/oci"
|
||||
"github.com/containerd/log"
|
||||
"github.com/urfave/cli"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
var densityCommand = cli.Command{
|
||||
var densityCommand = &cli.Command{
|
||||
Name: "density",
|
||||
Usage: "Stress tests density of containers running on a system",
|
||||
Flags: []cli.Flag{
|
||||
cli.IntFlag{
|
||||
&cli.IntFlag{
|
||||
Name: "count",
|
||||
Usage: "Number of containers to run",
|
||||
Value: 10,
|
||||
@@ -58,14 +58,14 @@ var densityCommand = cli.Command{
|
||||
}
|
||||
|
||||
config := config{
|
||||
Address: cliContext.GlobalString("address"),
|
||||
Duration: cliContext.GlobalDuration("duration"),
|
||||
Concurrency: cliContext.GlobalInt("concurrent"),
|
||||
Exec: cliContext.GlobalBool("exec"),
|
||||
Image: cliContext.GlobalString("image"),
|
||||
JSON: cliContext.GlobalBool("json"),
|
||||
Metrics: cliContext.GlobalString("metrics"),
|
||||
Snapshotter: cliContext.GlobalString("snapshotter"),
|
||||
Address: cliContext.String("address"),
|
||||
Duration: cliContext.Duration("duration"),
|
||||
Concurrency: cliContext.Int("concurrent"),
|
||||
Exec: cliContext.Bool("exec"),
|
||||
Image: cliContext.String("image"),
|
||||
JSON: cliContext.Bool("json"),
|
||||
Metrics: cliContext.String("metrics"),
|
||||
Snapshotter: cliContext.String("snapshotter"),
|
||||
}
|
||||
client, err := config.newClient()
|
||||
if err != nil {
|
||||
|
||||
@@ -34,7 +34,7 @@ import (
|
||||
"github.com/containerd/containerd/v2/plugins"
|
||||
"github.com/containerd/log"
|
||||
metrics "github.com/docker/go-metrics"
|
||||
"github.com/urfave/cli"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -63,9 +63,10 @@ func init() {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
cli.HelpFlag = cli.BoolFlag{
|
||||
Name: "help, h",
|
||||
Usage: "Show help",
|
||||
cli.HelpFlag = &cli.BoolFlag{
|
||||
Name: "help",
|
||||
Aliases: []string{"h"},
|
||||
Usage: "Show help",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,85 +130,91 @@ func main() {
|
||||
app.Name = "containerd-stress"
|
||||
app.Description = "stress test a containerd daemon"
|
||||
app.Flags = []cli.Flag{
|
||||
cli.BoolFlag{
|
||||
&cli.BoolFlag{
|
||||
Name: "debug",
|
||||
Usage: "Set debug output in the logs",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "address,a",
|
||||
Value: "/run/containerd/containerd.sock",
|
||||
Usage: "Path to the containerd socket",
|
||||
&cli.StringFlag{
|
||||
Name: "address",
|
||||
Aliases: []string{"a"},
|
||||
Value: "/run/containerd/containerd.sock",
|
||||
Usage: "Path to the containerd socket",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "concurrent,c",
|
||||
Value: 1,
|
||||
Usage: "Set the concurrency of the stress test",
|
||||
&cli.IntFlag{
|
||||
Name: "concurrent",
|
||||
Aliases: []string{"c"},
|
||||
Value: 1,
|
||||
Usage: "Set the concurrency of the stress test",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
&cli.BoolFlag{
|
||||
Name: "cri",
|
||||
Usage: "Utilize CRI to create pods for the stress test. This requires a runtime that matches CRI runtime handler. Example: --runtime runc",
|
||||
},
|
||||
cli.DurationFlag{
|
||||
Name: "duration,d",
|
||||
Value: 1 * time.Minute,
|
||||
Usage: "Set the duration of the stress test",
|
||||
&cli.DurationFlag{
|
||||
Name: "duration",
|
||||
Aliases: []string{"d"},
|
||||
Value: 1 * time.Minute,
|
||||
Usage: "Set the duration of the stress test",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
&cli.BoolFlag{
|
||||
Name: "exec",
|
||||
Usage: "Add execs to the stress tests (non-CRI only)",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "image,i",
|
||||
Value: "docker.io/library/alpine:latest",
|
||||
Usage: "Image to be utilized for testing",
|
||||
&cli.StringFlag{
|
||||
Name: "image",
|
||||
Aliases: []string{"i"},
|
||||
Value: "docker.io/library/alpine:latest",
|
||||
Usage: "Image to be utilized for testing",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "json,j",
|
||||
Usage: "Output results in json format",
|
||||
&cli.BoolFlag{
|
||||
Name: "json",
|
||||
Aliases: []string{"j"},
|
||||
Usage: "Output results in json format",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "metrics,m",
|
||||
Usage: "Address to serve the metrics API",
|
||||
&cli.StringFlag{
|
||||
Name: "metrics",
|
||||
Aliases: []string{"m"},
|
||||
Usage: "Address to serve the metrics API",
|
||||
},
|
||||
cli.StringFlag{
|
||||
&cli.StringFlag{
|
||||
Name: "runtime",
|
||||
Usage: "Set the runtime to stress test",
|
||||
Value: plugins.RuntimeRuncV2,
|
||||
},
|
||||
cli.StringFlag{
|
||||
&cli.StringFlag{
|
||||
Name: "snapshotter",
|
||||
Usage: "Set the snapshotter to use",
|
||||
Value: "overlayfs",
|
||||
},
|
||||
}
|
||||
app.Before = func(context *cli.Context) error {
|
||||
if context.GlobalBool("json") {
|
||||
if context.Bool("json") {
|
||||
if err := log.SetLevel("warn"); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if context.GlobalBool("debug") {
|
||||
if context.Bool("debug") {
|
||||
if err := log.SetLevel("debug"); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
app.Commands = []cli.Command{
|
||||
app.Commands = []*cli.Command{
|
||||
densityCommand,
|
||||
}
|
||||
app.Action = func(context *cli.Context) error {
|
||||
config := config{
|
||||
Address: context.GlobalString("address"),
|
||||
Duration: context.GlobalDuration("duration"),
|
||||
Concurrency: context.GlobalInt("concurrent"),
|
||||
CRI: context.GlobalBool("cri"),
|
||||
Exec: context.GlobalBool("exec"),
|
||||
Image: context.GlobalString("image"),
|
||||
JSON: context.GlobalBool("json"),
|
||||
Metrics: context.GlobalString("metrics"),
|
||||
Runtime: context.GlobalString("runtime"),
|
||||
Snapshotter: context.GlobalString("snapshotter"),
|
||||
Address: context.String("address"),
|
||||
Duration: context.Duration("duration"),
|
||||
Concurrency: context.Int("concurrent"),
|
||||
CRI: context.Bool("cri"),
|
||||
Exec: context.Bool("exec"),
|
||||
Image: context.String("image"),
|
||||
JSON: context.Bool("json"),
|
||||
Metrics: context.String("metrics"),
|
||||
Runtime: context.String("runtime"),
|
||||
Snapshotter: context.String("snapshotter"),
|
||||
}
|
||||
if config.Metrics != "" {
|
||||
return serve(config)
|
||||
|
||||
Reference in New Issue
Block a user