diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d2a33f64..0152b763d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - [#2493](https://github.com/influxdata/kapacitor/pull/2493): Route kafka alerts to partitions by ID, and allow for configuring the hashing strategy. - [#2544](https://github.com/influxdata/kapacitor/pull/2544): flux tasks skeleton in Kapacitor - [#2555](https://github.com/influxdata/kapacitor/pull/2555): run flux tasks with built-in flux engine +- [#2559](https://github.com/influxdata/kapacitor/pull/2559): kapacitor cli supports flux tasks ## v1.5.9 [2021-04-01] diff --git a/cmd/kapacitor/fluxtask.go b/cmd/kapacitor/fluxtask.go new file mode 100644 index 000000000..6b073f0fc --- /dev/null +++ b/cmd/kapacitor/fluxtask.go @@ -0,0 +1,436 @@ +package main + +import ( + "crypto/tls" + "net" + "net/http" + "net/url" + "time" + + "github.com/influxdata/influx-cli/v2/api" + "github.com/influxdata/influx-cli/v2/clients" + "github.com/influxdata/influx-cli/v2/clients/task" + "github.com/influxdata/influx-cli/v2/pkg/stdio" + kclient "github.com/influxdata/kapacitor/client/v1" + "github.com/urfave/cli/v2" +) + +func createFluxTaskApp(url string, skipSSL bool) *cli.App { + return &cli.App{ + Name: "kapacitor flux", + Usage: "Kapacitor flux task management", + UsageText: "kapacitor flux [command]", + EnableBashCompletion: true, + Before: withApi(url, skipSSL), + Commands: []*cli.Command{ + { + Name: "task", + Usage: "Task management commands", + Subcommands: []*cli.Command{ + newTaskLogCmd(), + newTaskRunCmd(), + newTaskCreateCmd(), + newTaskDeleteCmd(), + newTaskFindCmd(), + newTaskUpdateCmd(), + newTaskRetryFailedCmd(), + }, + }, + }, + } +} + +const TaskMaxPageSize = 500 + +type urlPrefixer struct { + prefix string + roundTripper http.RoundTripper +} + +func (u urlPrefixer) RoundTrip(request *http.Request) (*http.Response, error) { + request = request.Clone(request.Context()) + request.URL.Path = u.prefix + request.URL.Path + return u.roundTripper.RoundTrip(request) +} + +var _ http.RoundTripper = urlPrefixer{} + +func withApi(u string, skipSsl bool) cli.BeforeFunc { + return func(ctx *cli.Context) error { + parsedUrl, err := url.Parse(u) + if err != nil { + return err + } + // copy of initialization for http.DefaultTransport, see https://pkg.go.dev/net/http#DefaultTransport + clientTransport := &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).DialContext, + ForceAttemptHTTP2: true, + MaxIdleConns: 100, + IdleConnTimeout: 90 * time.Second, + TLSHandshakeTimeout: 10 * time.Second, + ExpectContinueTimeout: 1 * time.Second, + } + // But set the InsecureSkipVerify flag properly + clientTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: skipSsl} + conf := api.NewConfiguration() + conf.Host = parsedUrl.Host + conf.Scheme = parsedUrl.Scheme + conf.UserAgent = kclient.DefaultUserAgent + // All the client code we share with influxdb assumes the /api/v2/tasks endpoint. Translate to + // the /kapacitor/v1/api/v2/tasks endpoint + conf.HTTPClient = &http.Client{Transport: urlPrefixer{ + prefix: "/kapacitor/v1", + roundTripper: clientTransport, + }} + apiClient := api.NewAPIClient(conf) + ctx.App.Metadata["api"] = apiClient + return nil + } +} + +func getAPI(ctx *cli.Context) *api.APIClient { + i, ok := ctx.App.Metadata["api"].(*api.APIClient) + if !ok { + panic("missing APIClient with token") + } + return i +} + +func withClient() cli.BeforeFunc { + return func(ctx *cli.Context) error { + apiClient := getAPI(ctx) + client := task.Client{ + CLI: clients.CLI{ + StdIO: stdio.TerminalStdio, + HideTableHeaders: false, + PrintAsJSON: ctx.Bool("json"), + }, + TasksApi: apiClient.TasksApi, + AllowEmptyOrg: true, + } + ctx.App.Metadata["client"] = client + return nil + } +} + +func getClient(ctx *cli.Context) task.Client { + i, ok := ctx.App.Metadata["client"].(task.Client) + if !ok { + panic("missing APIClient with token") + } + return i +} + +func commonFlags() []cli.Flag { + return []cli.Flag{&cli.BoolFlag{ + Name: "json", + Usage: "Output data as JSON", + }} +} + +func newTaskCreateCmd() *cli.Command { + var params task.CreateParams + return &cli.Command{ + Name: "create", + Usage: "Create a task with a Flux script provided via the first argument or a file or stdin", + ArgsUsage: "[flux script or '-' for stdin]", + Before: withClient(), + Flags: append(commonFlags(), &cli.StringFlag{ + Name: "file", + Usage: "Path to Flux script file", + Aliases: []string{"f"}, + TakesFile: true, + }), + Action: func(ctx *cli.Context) error { + client := getClient(ctx) + var err error + params.FluxQuery, err = clients.ReadQuery(ctx) + if err != nil { + return err + } + return client.Create(ctx.Context, ¶ms) + }, + } +} + +func newTaskFindCmd() *cli.Command { + var params task.FindParams + flags := append(commonFlags(), []cli.Flag{ + &cli.StringFlag{ + Name: "id", + Usage: "task ID", + Aliases: []string{"i"}, + Destination: ¶ms.TaskID, + }, + &cli.StringFlag{ + Name: "user-id", + Usage: "task owner ID", + Aliases: []string{"n"}, + Destination: ¶ms.UserID, + }, + &cli.IntFlag{ + Name: "limit", + Usage: "the number of tasks to find", + Destination: ¶ms.Limit, + Value: TaskMaxPageSize, + }, + }...) + return &cli.Command{ + Name: "list", + Usage: "List tasks", + Aliases: []string{"find", "ls"}, + Flags: flags, + Before: withClient(), + Action: func(ctx *cli.Context) error { + client := getClient(ctx) + return client.Find(ctx.Context, ¶ms) + }, + } +} + +func newTaskRetryFailedCmd() *cli.Command { + var params task.RetryFailedParams + flags := append(commonFlags(), []cli.Flag{ + &cli.StringFlag{ + Name: "id", + Usage: "task ID", + Aliases: []string{"i"}, + Destination: ¶ms.TaskID, + }, + &cli.StringFlag{ + Name: "before", + Usage: "runs before this time", + Destination: ¶ms.RunFilter.Before, + }, + &cli.StringFlag{ + Name: "after", + Usage: "runs after this time", + Destination: ¶ms.RunFilter.After, + }, + &cli.BoolFlag{ + Name: "dry-run", + Usage: "print info about runs that would be retried", + Destination: ¶ms.DryRun, + }, + &cli.IntFlag{ + Name: "task-limit", + Usage: "max number of tasks to retry failed runs for", + Destination: ¶ms.TaskLimit, + Value: 100, + }, + &cli.IntFlag{ + Name: "run-limit", + Usage: "max number of failed runs to retry per task", + Destination: ¶ms.RunFilter.Limit, + Value: 100, + }, + }...) + return &cli.Command{ + Name: "retry-failed", + Usage: "Retry failed runs", + Aliases: []string{"rtf"}, + Flags: flags, + Before: withClient(), + Action: func(ctx *cli.Context) error { + client := getClient(ctx) + return client.RetryFailed(ctx.Context, ¶ms) + }, + } +} + +func newTaskUpdateCmd() *cli.Command { + var params task.UpdateParams + flags := commonFlags() + flags = append(flags, []cli.Flag{ + &cli.StringFlag{ + Name: "id", + Usage: "task ID (required)", + Aliases: []string{"i"}, + Destination: ¶ms.TaskID, + Required: true, + }, + &cli.StringFlag{ + Name: "status", + Usage: "update tasks status", + Destination: ¶ms.Status, + }, + &cli.StringFlag{ + Name: "file", + Usage: "Path to Flux script file", + Aliases: []string{"f"}, + TakesFile: true, + }, + }...) + return &cli.Command{ + Name: "update", + Usage: "Update task status or script. Provide a Flux script via the first argument or a file.", + ArgsUsage: "[flux script or '-' for stdin]", + Flags: flags, + Before: withClient(), + Action: func(ctx *cli.Context) error { + client := getClient(ctx) + var err error + if ctx.String("file") != "" || ctx.NArg() != 0 { + params.FluxQuery, err = clients.ReadQuery(ctx) + if err != nil { + return err + } + } + return client.Update(ctx.Context, ¶ms) + }, + } +} + +func newTaskDeleteCmd() *cli.Command { + var params task.DeleteParams + flags := commonFlags() + flags = append(flags, []cli.Flag{ + &cli.StringFlag{ + Name: "id", + Usage: "task ID (required)", + Aliases: []string{"i"}, + Destination: ¶ms.TaskID, + Required: true, + }, + }...) + return &cli.Command{ + Name: "delete", + Usage: "Delete tasks", + Flags: flags, + Before: withClient(), + Action: func(ctx *cli.Context) error { + client := getClient(ctx) + return client.Delete(ctx.Context, ¶ms) + }, + } +} + +func newTaskLogCmd() *cli.Command { + return &cli.Command{ + Name: "log", + Usage: "Log related commands", + Subcommands: []*cli.Command{ + newTaskLogFindCmd(), + }, + } +} + +func newTaskLogFindCmd() *cli.Command { + var params task.LogFindParams + flags := commonFlags() + flags = append(flags, []cli.Flag{ + &cli.StringFlag{ + Name: "task-id", + Usage: "task id (required)", + Destination: ¶ms.TaskID, + Required: true, + }, + &cli.StringFlag{ + Name: "run-id", + Usage: "run id", + Destination: ¶ms.RunID, + }, + }...) + return &cli.Command{ + Name: "list", + Usage: "List logs for a task", + Aliases: []string{"find", "ls"}, + Flags: flags, + Before: withClient(), + Action: func(ctx *cli.Context) error { + client := getClient(ctx) + return client.FindLogs(ctx.Context, ¶ms) + }, + } +} + +func newTaskRunCmd() *cli.Command { + return &cli.Command{ + Name: "run", + Usage: "Run related commands", + Subcommands: []*cli.Command{ + newTaskRunFindCmd(), + newTaskRunRetryCmd(), + }, + } +} + +func newTaskRunFindCmd() *cli.Command { + var params task.RunFindParams + flags := commonFlags() + flags = append(flags, []cli.Flag{ + &cli.StringFlag{ + Name: "task-id", + Usage: "task ID (required)", + Destination: ¶ms.TaskID, + Required: true, + }, + &cli.StringFlag{ + Name: "run-id", + Usage: "run id", + Destination: ¶ms.RunID, + }, + &cli.StringFlag{ + Name: "before", + Usage: "runs before this time", + Destination: ¶ms.Filter.Before, + }, + &cli.StringFlag{ + Name: "after", + Usage: "runs after this time", + Destination: ¶ms.Filter.After, + }, + &cli.IntFlag{ + Name: "limit", + Usage: "limit the results", + Destination: ¶ms.Filter.Limit, + Value: 100, + }, + }...) + return &cli.Command{ + Name: "list", + Usage: "List runs for a tasks", + Aliases: []string{"find", "ls"}, + Flags: flags, + Before: withClient(), + Action: func(ctx *cli.Context) error { + client := getClient(ctx) + return client.FindRuns(ctx.Context, ¶ms) + }, + } +} + +func newTaskRunRetryCmd() *cli.Command { + var params task.RunRetryParams + flags := commonFlags() + flags = append(flags, []cli.Flag{ + &cli.StringFlag{ + Name: "task-id", + Usage: "task ID (required)", + Aliases: []string{"i"}, + Destination: ¶ms.TaskID, + Required: true, + }, + &cli.StringFlag{ + Name: "run-id", + Usage: "run ID (required)", + Aliases: []string{"r"}, + Destination: ¶ms.RunID, + Required: true, + }, + }...) + return &cli.Command{ + Name: "retry", + Usage: "Retry a run", + Flags: flags, + Before: withClient(), + Action: func(ctx *cli.Context) error { + client := getClient(ctx) + return client.RetryRun(ctx.Context, ¶ms) + }, + } +} diff --git a/cmd/kapacitor/main.go b/cmd/kapacitor/main.go index 1cc769495..071fd8e06 100644 --- a/cmd/kapacitor/main.go +++ b/cmd/kapacitor/main.go @@ -44,7 +44,7 @@ var skipVerify = mainFlags.Bool("skipVerify", false, "Disable SSL verification ( var l = log.New(os.Stderr, "[run] ", log.LstdFlags) -var cli *client.Client +var kCli *client.Client var usageStr = ` Usage: kapacitor [options] [command] [args] @@ -69,6 +69,7 @@ Commands: show-template Display detailed information about a template. show-topic-handler Display detailed information about an alert handler for a topic. show-topic Display detailed information about an alert topic. + flux Flux task information and management backup Backup the Kapacitor database. level Sets the logging level on the kapacitord server. stats Display various stats about Kapacitor. @@ -112,7 +113,7 @@ func main() { } var err error - cli, err = connect(url, skipSSL) + kCli, err = connect(url, skipSSL) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(4) @@ -194,6 +195,9 @@ func main() { case "show-topic": commandArgs = args commandF = doShowTopic + case "flux": + commandArgs = args + commandF = doFluxTasks(url, skipSSL) case "backup": commandArgs = args commandF = doBackup @@ -295,6 +299,9 @@ func doHelp(args []string) error { showTopicHandlerUsage() case "show-topic": showTopicUsage() + case "flux": + app := createFluxTaskApp("", false) + app.Run([]string{"", "-h"}) case "backup": backupUsage() case "watch": @@ -453,7 +460,7 @@ func doRecord(args []string) error { return err } noWait = *rsNowait - recording, err = cli.RecordStream(client.RecordStreamOptions{ + recording, err = kCli.RecordStream(client.RecordStreamOptions{ ID: *rsId, Task: *rsTask, Stop: time.Now().Add(duration), @@ -496,7 +503,7 @@ func doRecord(args []string) error { start = stop.Add(-1 * past) } noWait = *rbNowait - recording, err = cli.RecordBatch(client.RecordBatchOptions{ + recording, err = kCli.RecordBatch(client.RecordBatchOptions{ ID: *rbId, Task: *rbTask, Start: start, @@ -519,7 +526,7 @@ func doRecord(args []string) error { typ = client.BatchTask } noWait = *rqNowait - recording, err = cli.RecordQuery(client.RecordQueryOptions{ + recording, err = kCli.RecordQuery(client.RecordQueryOptions{ ID: *rqId, Query: *rqQuery, Type: typ, @@ -537,7 +544,7 @@ func doRecord(args []string) error { } for recording.Status == client.Running { time.Sleep(500 * time.Millisecond) - recording, err = cli.Recording(recording.Link) + recording, err = kCli.Recording(recording.Link) if err != nil { return err } @@ -746,8 +753,8 @@ func doDefine(args []string) error { } } - l := cli.TaskLink(id) - task, _ := cli.Task(l, nil) + l := kCli.TaskLink(id) + task, _ := kCli.Task(l, nil) var err error if task.ID == "" { if *dfile != "" { @@ -760,7 +767,7 @@ func doDefine(args []string) error { if err != nil { return err } - _, err = cli.CreateTask(o) + _, err = kCli.CreateTask(o) if err != nil { return err } @@ -774,7 +781,7 @@ func doDefine(args []string) error { Vars: vars, Status: client.Disabled, } - _, err = cli.CreateTask(o) + _, err = kCli.CreateTask(o) if err != nil { return err } @@ -792,7 +799,7 @@ func doDefine(args []string) error { return errors.New("Task id given on command line does not match id in " + *dfile) } - _, err = cli.UpdateTask( + _, err = kCli.UpdateTask( l, o, ) @@ -807,7 +814,7 @@ func doDefine(args []string) error { TICKscript: script, Vars: vars, } - _, err = cli.UpdateTask( + _, err = kCli.UpdateTask( l, o, ) @@ -818,11 +825,11 @@ func doDefine(args []string) error { } if !*dnoReload && task.Status == client.Enabled { - _, err := cli.UpdateTask(l, client.UpdateTaskOptions{Status: client.Disabled}) + _, err := kCli.UpdateTask(l, client.UpdateTaskOptions{Status: client.Disabled}) if err != nil { return err } - _, err = cli.UpdateTask(l, client.UpdateTaskOptions{Status: client.Enabled}) + _, err = kCli.UpdateTask(l, client.UpdateTaskOptions{Status: client.Enabled}) if err != nil { return err } @@ -901,17 +908,17 @@ func doDefineTemplate(args []string) error { ttype = client.BatchTask } - l := cli.TemplateLink(id) - template, _ := cli.Template(l, nil) + l := kCli.TemplateLink(id) + template, _ := kCli.Template(l, nil) var err error if template.ID == "" { - _, err = cli.CreateTemplate(client.CreateTemplateOptions{ + _, err = kCli.CreateTemplate(client.CreateTemplateOptions{ ID: id, Type: ttype, TICKscript: script, }) } else { - _, err = cli.UpdateTemplate( + _, err = kCli.UpdateTemplate( l, client.UpdateTemplateOptions{ Type: ttype, @@ -970,12 +977,12 @@ func doDefineTopicHandler(args []string) error { } } - l := cli.TopicHandlerLink(ho.Topic, ho.ID) - handler, _ := cli.TopicHandler(l) + l := kCli.TopicHandlerLink(ho.Topic, ho.ID) + handler, _ := kCli.TopicHandler(l) if handler.ID == "" { - _, err = cli.CreateTopicHandler(cli.TopicHandlersLink(ho.Topic), ho) + _, err = kCli.CreateTopicHandler(kCli.TopicHandlersLink(ho.Topic), ho) } else { - _, err = cli.ReplaceTopicHandler(l, ho) + _, err = kCli.ReplaceTopicHandler(l, ho) } return err } @@ -1023,7 +1030,7 @@ func doReplay(args []string) error { if *rreal { clk = client.Real } - replay, err := cli.CreateReplay(client.CreateReplayOptions{ + replay, err := kCli.CreateReplay(client.CreateReplayOptions{ ID: *rid, Task: *rtask, Recording: *rrecording, @@ -1039,7 +1046,7 @@ func doReplay(args []string) error { } for replay.Status == client.Running { time.Sleep(500 * time.Millisecond) - replay, err = cli.Replay(replay.Link) + replay, err = kCli.Replay(replay.Link) if err != nil { return err } @@ -1181,7 +1188,7 @@ func doReplayLive(args []string) error { if *rlbReal { clk = client.Real } - replay, err = cli.ReplayBatch(client.ReplayBatchOptions{ + replay, err = kCli.ReplayBatch(client.ReplayBatchOptions{ ID: *rlbId, Task: *rlbTask, Start: start, @@ -1203,7 +1210,7 @@ func doReplayLive(args []string) error { if *rlqReal { clk = client.Real } - replay, err = cli.ReplayQuery(client.ReplayQueryOptions{ + replay, err = kCli.ReplayQuery(client.ReplayQueryOptions{ ID: *rlqId, Task: *rlqTask, Query: *rlqQuery, @@ -1223,7 +1230,7 @@ func doReplayLive(args []string) error { } for replay.Status == client.Running { time.Sleep(500 * time.Millisecond) - replay, err = cli.Replay(replay.Link) + replay, err = kCli.Replay(replay.Link) if err != nil { return err } @@ -1268,7 +1275,7 @@ func doEnable(args []string) error { for _, pattern := range args { offset := 0 for { - tasks, err := cli.ListTasks(&client.ListTasksOptions{ + tasks, err := kCli.ListTasks(&client.ListTasksOptions{ Pattern: pattern, Fields: []string{"link"}, Offset: offset, @@ -1278,7 +1285,7 @@ func doEnable(args []string) error { return errors.Wrap(err, "listing tasks") } for _, task := range tasks { - _, err := cli.UpdateTask( + _, err := kCli.UpdateTask( task.Link, client.UpdateTaskOptions{Status: client.Enabled}, ) @@ -1326,7 +1333,7 @@ func doDisable(args []string) error { for _, pattern := range args { offset := 0 for { - tasks, err := cli.ListTasks(&client.ListTasksOptions{ + tasks, err := kCli.ListTasks(&client.ListTasksOptions{ Pattern: pattern, Fields: []string{"link"}, Offset: offset, @@ -1336,7 +1343,7 @@ func doDisable(args []string) error { return errors.Wrap(err, "listing tasks") } for _, task := range tasks { - _, err := cli.UpdateTask( + _, err := kCli.UpdateTask( task.Link, client.UpdateTaskOptions{Status: client.Disabled}, ) @@ -1411,8 +1418,8 @@ func doShow(args []string) error { os.Exit(2) } - t, err := cli.Task( - cli.TaskLink(args[0]), + t, err := kCli.Task( + kCli.TaskLink(args[0]), &client.TaskOptions{ReplayID: *sReplayId}, ) if err != nil { @@ -1495,7 +1502,7 @@ func doShowTemplate(args []string) error { os.Exit(2) } - t, err := cli.Template(cli.TemplateLink(args[0]), nil) + t, err := kCli.Template(kCli.TemplateLink(args[0]), nil) if err != nil { return err } @@ -1552,7 +1559,7 @@ func doShowTopicHandler(args []string) error { topic := args[0] handler := args[1] - h, err := cli.TopicHandler(cli.TopicHandlerLink(topic, handler)) + h, err := kCli.TopicHandler(kCli.TopicHandlerLink(topic, handler)) if err != nil { return err } @@ -1592,11 +1599,11 @@ func doShowTopic(args []string) error { os.Exit(2) } - topic, err := cli.Topic(cli.TopicLink(args[0])) + topic, err := kCli.Topic(kCli.TopicLink(args[0])) if err != nil { return err } - te, err := cli.ListTopicEvents(topic.EventsLink, nil) + te, err := kCli.ListTopicEvents(topic.EventsLink, nil) if err != nil { return err } @@ -1613,7 +1620,7 @@ func doShowTopic(args []string) error { sort.Sort(topicEvents(te.Events)) - th, err := cli.ListTopicHandlers(topic.HandlersLink, nil) + th, err := kCli.ListTopicHandlers(topic.HandlersLink, nil) if err != nil { return err } @@ -1635,6 +1642,13 @@ func doShowTopic(args []string) error { return nil } +func doFluxTasks(url string, skipSSL bool) func([]string) error { + return func(args []string) error { + app := createFluxTaskApp(url, skipSSL) + return app.Run(append([]string{""}, args...)) + } +} + // List func listUsage() { @@ -1695,7 +1709,7 @@ func doList(args []string) error { for _, pattern := range patterns { offset := 0 for { - tasks, err := cli.ListTasks(&client.ListTasksOptions{ + tasks, err := kCli.ListTasks(&client.ListTasksOptions{ Pattern: pattern, Fields: []string{"type", "status", "executing", "dbrps"}, Offset: offset, @@ -1728,7 +1742,7 @@ func doList(args []string) error { for _, pattern := range patterns { offset := 0 for { - templates, err := cli.ListTemplates(&client.ListTemplatesOptions{ + templates, err := kCli.ListTemplates(&client.ListTemplatesOptions{ Pattern: pattern, Fields: []string{"type", "vars"}, Offset: offset, @@ -1768,7 +1782,7 @@ func doList(args []string) error { for _, pattern := range patterns { offset := 0 for { - recordings, err := cli.ListRecordings(&client.ListRecordingsOptions{ + recordings, err := kCli.ListRecordings(&client.ListRecordingsOptions{ Pattern: pattern, Fields: []string{"type", "size", "date", "status"}, Offset: offset, @@ -1804,7 +1818,7 @@ func doList(args []string) error { for _, pattern := range patterns { offset := 0 for { - replays, err := cli.ListReplays(&client.ListReplaysOptions{ + replays, err := kCli.ListReplays(&client.ListReplaysOptions{ Pattern: pattern, Fields: []string{"task", "recording", "status", "clock", "date"}, Offset: offset, @@ -1841,7 +1855,7 @@ func doList(args []string) error { outFmt := "%s\n" fmt.Fprintf(os.Stdout, outFmt, "Service Name") for _, pattern := range patterns { - serviceTests, err := cli.ListServiceTests(&client.ListServiceTestsOptions{ + serviceTests, err := kCli.ListServiceTests(&client.ListServiceTestsOptions{ Pattern: pattern, }) if err != nil { @@ -1854,7 +1868,7 @@ func doList(args []string) error { } case "topic-handlers": topicPattern := patterns[0] - topics, err := cli.ListTopics(&client.ListTopicsOptions{ + topics, err := kCli.ListTopics(&client.ListTopicsOptions{ Pattern: topicPattern, }) if err != nil { @@ -1877,7 +1891,7 @@ func doList(args []string) error { var allHandlers []info for _, topic := range topics.Topics { for _, pattern := range patterns { - handlers, err := cli.ListTopicHandlers(topic.HandlersLink, &client.ListTopicHandlersOptions{ + handlers, err := kCli.ListTopicHandlers(topic.HandlersLink, &client.ListTopicHandlersOptions{ Pattern: pattern, }) if err != nil { @@ -1913,7 +1927,7 @@ func doList(args []string) error { // The topics are returned in sorted order already, no need to sort them here. var allTopics []client.Topic for _, pattern := range patterns { - topics, err := cli.ListTopics(&client.ListTopicsOptions{ + topics, err := kCli.ListTopics(&client.ListTopicsOptions{ Pattern: pattern, }) if err != nil { @@ -1987,7 +2001,7 @@ func doDelete(args []string) error { case "tasks": for _, pattern := range args[1:] { for { - tasks, err := cli.ListTasks(&client.ListTasksOptions{ + tasks, err := kCli.ListTasks(&client.ListTasksOptions{ Pattern: pattern, Fields: []string{"link"}, Limit: limit, @@ -1996,7 +2010,7 @@ func doDelete(args []string) error { return err } for _, task := range tasks { - err := cli.DeleteTask(task.Link) + err := kCli.DeleteTask(task.Link) if err != nil { return err } @@ -2009,7 +2023,7 @@ func doDelete(args []string) error { case "templates": for _, pattern := range args[1:] { for { - templates, err := cli.ListTemplates(&client.ListTemplatesOptions{ + templates, err := kCli.ListTemplates(&client.ListTemplatesOptions{ Pattern: pattern, Fields: []string{"link"}, Limit: limit, @@ -2018,7 +2032,7 @@ func doDelete(args []string) error { return err } for _, template := range templates { - err := cli.DeleteTemplate(template.Link) + err := kCli.DeleteTemplate(template.Link) if err != nil { return err } @@ -2031,7 +2045,7 @@ func doDelete(args []string) error { case "recordings": for _, pattern := range args[1:] { for { - recordings, err := cli.ListRecordings(&client.ListRecordingsOptions{ + recordings, err := kCli.ListRecordings(&client.ListRecordingsOptions{ Pattern: pattern, Fields: []string{"link"}, Limit: limit, @@ -2040,7 +2054,7 @@ func doDelete(args []string) error { return err } for _, recording := range recordings { - err := cli.DeleteRecording(recording.Link) + err := kCli.DeleteRecording(recording.Link) if err != nil { return err } @@ -2053,7 +2067,7 @@ func doDelete(args []string) error { case "replays": for _, pattern := range args[1:] { for { - replays, err := cli.ListReplays(&client.ListReplaysOptions{ + replays, err := kCli.ListReplays(&client.ListReplaysOptions{ Pattern: pattern, Fields: []string{"link"}, Limit: limit, @@ -2062,7 +2076,7 @@ func doDelete(args []string) error { return err } for _, replay := range replays { - err := cli.DeleteReplay(replay.Link) + err := kCli.DeleteReplay(replay.Link) if err != nil { return err } @@ -2074,14 +2088,14 @@ func doDelete(args []string) error { } case "topics": for _, pattern := range args[1:] { - topics, err := cli.ListTopics(&client.ListTopicsOptions{ + topics, err := kCli.ListTopics(&client.ListTopicsOptions{ Pattern: pattern, }) if err != nil { return err } for _, t := range topics.Topics { - err := cli.DeleteTopic(t.Link) + err := kCli.DeleteTopic(t.Link) if err != nil { return err } @@ -2090,14 +2104,14 @@ func doDelete(args []string) error { case "topic-handlers": topic := args[1] for _, pattern := range args[2:] { - handlers, err := cli.ListTopicHandlers(cli.TopicHandlersLink(topic), &client.ListTopicHandlersOptions{ + handlers, err := kCli.ListTopicHandlers(kCli.TopicHandlersLink(topic), &client.ListTopicHandlersOptions{ Pattern: pattern, }) if err != nil { return err } for _, h := range handlers.Handlers { - err := cli.DeleteTopicHandler(h.Link) + err := kCli.DeleteTopicHandler(h.Link) if err != nil { return err } @@ -2124,7 +2138,7 @@ func doLevel(args []string) error { levelUsage() os.Exit(2) } - return cli.LogLevel(args[0]) + return kCli.LogLevel(args[0]) } // Stats @@ -2165,7 +2179,7 @@ func doStats(args []string) error { statsUsage() return errors.New("must provide a stats category") } - vars, err := cli.DebugVars() + vars, err := kCli.DebugVars() if err != nil { return err } @@ -2262,7 +2276,7 @@ func varsUsage() { } func doVars(args []string) error { - r, err := http.Get(cli.URL() + "/kapacitor/v1/debug/vars") + r, err := http.Get(kCli.URL() + "/kapacitor/v1/debug/vars") if err != nil { return err } @@ -2287,7 +2301,7 @@ func doServiceTest(args []string) error { } var services []client.ServiceTest for _, nameOrPattern := range args { - s, err := cli.ListServiceTests(&client.ListServiceTestsOptions{ + s, err := kCli.ListServiceTests(&client.ListServiceTestsOptions{ Pattern: nameOrPattern, }) if err != nil { @@ -2297,7 +2311,7 @@ func doServiceTest(args []string) error { } results := make([]client.ServiceTestResult, len(services)) for i, s := range services { - tr, err := cli.DoServiceTest(s.Link, nil) + tr, err := kCli.DoServiceTest(s.Link, nil) if err != nil { return err } @@ -2332,7 +2346,7 @@ func doBackup(args []string) error { return errors.Wrap(err, "failed to create backup file") } defer f.Close() - size, backup, err := cli.Backup() + size, backup, err := kCli.Backup() if err != nil { return errors.Wrap(err, "failed to perform backup") } @@ -2414,7 +2428,7 @@ func tailLogs(m map[string]string) error { done = true }() - err := cli.Logs(ctx, os.Stdout, m) + err := kCli.Logs(ctx, os.Stdout, m) mu.Lock() defer mu.Unlock() if err != nil && !done { diff --git a/go.mod b/go.mod index b7090b439..635f88494 100644 --- a/go.mod +++ b/go.mod @@ -36,6 +36,7 @@ require ( github.com/influxdata/cron v0.0.0-20201006132531-4bb0a200dcbe github.com/influxdata/flux v0.116.1-0.20210519190248-4347b978c91a github.com/influxdata/httprouter v1.3.1-0.20191122104820-ee83e2772f69 + github.com/influxdata/influx-cli/v2 v2.0.0-20210526124422-63da8eccbdb7 github.com/influxdata/influxdb v1.8.4 github.com/influxdata/influxdb/v2 v2.0.1-alpha.10.0.20210507184756-dc72dc3f0c07 github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368 @@ -62,6 +63,7 @@ require ( github.com/shurcooL/markdownfmt v0.0.0-20170214213350-10aae0a270ab github.com/stretchr/testify v1.7.0 github.com/uber/jaeger-client-go v2.28.0+incompatible + github.com/urfave/cli/v2 v2.3.0 go.etcd.io/bbolt v1.3.5 go.uber.org/zap v1.14.1 golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad diff --git a/go.sum b/go.sum index 742624905..bbc7c2e0a 100644 --- a/go.sum +++ b/go.sum @@ -40,6 +40,8 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/AlecAivazis/survey/v2 v2.2.9 h1:LWvJtUswz/W9/zVVXELrmlvdwWcKE60ZAw0FWV9vssk= +github.com/AlecAivazis/survey/v2 v2.2.9/go.mod h1:9DYvHgXtiXm6nCn+jXnOXLKbH+Yo9u8fAS/SduGdoPk= github.com/Azure/azure-sdk-for-go v52.5.0+incompatible h1:/NLBWHCnIHtZyLPc1P7WIqi4Te4CC23kIQyK3Ep/7lA= github.com/Azure/azure-sdk-for-go v52.5.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= @@ -92,10 +94,11 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1MRDJM= github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/HdrHistogram/hdrhistogram-go v1.0.1 h1:GX8GAYDuhlFQnI2fRDHQhTlkHMz8bEn0jTI6LJU0mpw= github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= +github.com/HdrHistogram/hdrhistogram-go v1.1.0 h1:6dpdDPTRoo78HxAJ6T1HfMiKSnqhgRRqzCuPshRkQ7I= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/MakeNowJust/heredoc/v2 v2.0.1/go.mod h1:6/2Abh5s+hc3g9nbWLe9ObDIOhaRrqsyY9MWy+4JdRM= github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/sprig v2.16.0+incompatible h1:QZbMUPxRQ50EKAq3LFMnxddMu88/EUUG3qmxwtDmPsY= @@ -106,6 +109,8 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.0.1 h1:iLrQrdwjDd52kHDA5op2UBJFjmOb9g+7scBan4RN8F0= github.com/NYTimes/gziphandler v1.0.1/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8 h1:xzYJEypr/85nBpB11F9br+3HUrpgb+fcm5iADzXXYEw= +github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -215,14 +220,17 @@ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -304,10 +312,11 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fujiwara/shapeio v0.0.0-20170602072123-c073257dd745/go.mod h1:/WpqsrSkjgwEG2Es2qnZXbXwHDVbawpdlXJIjJMmnZs= +github.com/fujiwara/shapeio v1.0.0/go.mod h1:LmEmu6L/8jetyj1oewewFb7bZCNRwE7wLCUNzDLaLVA= github.com/geoffgarside/ber v0.0.0-20170306085127-854377f11dfb h1:iPZjQyOswR6paObEw+1XFfTV6isPKm3vWenA+6NF4AM= github.com/geoffgarside/ber v0.0.0-20170306085127-854377f11dfb/go.mod h1:x6zPZPDIQQKmaIDbeEzUGnxSmj7raqK6G8m6jkTlgbU= -github.com/getkin/kin-openapi v0.2.0 h1:PbHHtYZpjKwZtGlIyELgA2DploRrsaXztoNNx9HjwNY= github.com/getkin/kin-openapi v0.2.0/go.mod h1:V1z9xl9oF5Wt7v32ne4FmiF1alpS4dM6mNzoywPOXlk= +github.com/getkin/kin-openapi v0.53.0 h1:7WzP+MZRRe7YQz2Kc74Ley3dukJmXDvifVbElGmQfoA= github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= @@ -359,6 +368,7 @@ github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwds github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= @@ -409,6 +419,7 @@ github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfT github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= github.com/go-openapi/swag v0.19.12/go.mod h1:eFdyEBkTdoAf/9RXBvj4cr1nH7GD8Kzo5HTt47gr72M= github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= @@ -451,6 +462,7 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gocarina/gocsv v0.0.0-20210408192840-02d7211d929d/go.mod h1:5YoVOkjYAQumqlV356Hj3xeYh4BdZuLE0/nRkf2NKkI= github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -532,7 +544,6 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE= github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -571,8 +582,8 @@ github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75 h1:f0n1xnMSmBLzVf github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= @@ -654,6 +665,8 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hetznercloud/hcloud-go v1.24.0 h1:/CeHDzhH3Fhm83pjxvE3xNNLbvACl0Lu1/auJ83gG5U= github.com/hetznercloud/hcloud-go v1.24.0/go.mod h1:3YmyK8yaZZ48syie6xpm3dt26rtB6s65AisBHylXYFA= +github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174 h1:WlZsjVhE8Af9IcZDGgJGQpNflI3+MJSBhsgT5PCtzBQ= +github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= github.com/howeyc/fsnotify v0.9.0/go.mod h1:41HzSPxBGeFRQKEEwgh49TRw/nKBsYZ2cF1OzPjSJsA= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0 h1:pO2K/gKgKaat5LdpAhxhluX2GPQMaI3W5FUz/I/UnWk= @@ -670,20 +683,15 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/influxdata/cron v0.0.0-20191203200038-ded12750aac6/go.mod h1:XabtPPW2qsCg0tl+kjaPU+cFS+CjQXEXbT1VJvHT4og= github.com/influxdata/cron v0.0.0-20201006132531-4bb0a200dcbe h1:7j4SdN/BvQwN6WoUq7mv0kg5U9NhnFBxPGMafYRKym0= github.com/influxdata/cron v0.0.0-20201006132531-4bb0a200dcbe/go.mod h1:XabtPPW2qsCg0tl+kjaPU+cFS+CjQXEXbT1VJvHT4og= -github.com/influxdata/flux v0.114.1 h1:w6T08xPGDcO/aj6oyzWWMGO34sC4R8KAq1LZ+zdXDtI= github.com/influxdata/flux v0.114.1/go.mod h1:dfG4vbsLSehtyx2h75GQM64jiPx5IObAfSaVGYHjDrg= -github.com/influxdata/flux v0.115.1-0.20210517155239-5f7fef88f1f1 h1:QXOoymO/L+DtNfNRcbJoPAN9LPueoSnkxWK+PQWcD9M= -github.com/influxdata/flux v0.115.1-0.20210517155239-5f7fef88f1f1/go.mod h1:iiXVybz9mvIGJ5hvE3ymR3RdpJ9skukg1VQYxKQFdBo= -github.com/influxdata/flux v0.116.1-0.20210518210800-dea2590c5351 h1:sixyw+9cDeKLdW7UfBMpaonYRU3meg7I2w7trqRU5E4= -github.com/influxdata/flux v0.116.1-0.20210518210800-dea2590c5351/go.mod h1:N2AZHVBiOO+ZggrLyBqtmBZlawHW96cA7iPHsAPQAQE= github.com/influxdata/flux v0.116.1-0.20210519190248-4347b978c91a h1:7K4oTN/+jZmaW3KUk4SNODIe+AuqHUevbTWzutJF/ck= github.com/influxdata/flux v0.116.1-0.20210519190248-4347b978c91a/go.mod h1:d0Asx5xusUbp2d32ikmXMAiBabs5EFzz4yp1ykgE60U= github.com/influxdata/httprouter v1.3.1-0.20191122104820-ee83e2772f69 h1:WQsmW0fXO4ZE/lFGIE84G6rIV5SJN3P3sjIXAP1a8eU= github.com/influxdata/httprouter v1.3.1-0.20191122104820-ee83e2772f69/go.mod h1:pwymjR6SrP3gD3pRj9RJwdl1j5s3doEEV8gS4X9qSzA= +github.com/influxdata/influx-cli/v2 v2.0.0-20210526124422-63da8eccbdb7 h1:9ibK8LdGVXx90F31gUpHYzCCwgjR9/WnZz5l/EK2gq0= +github.com/influxdata/influx-cli/v2 v2.0.0-20210526124422-63da8eccbdb7/go.mod h1:A+JS4qejFQBmcfJIrYHVGejDcEOlcMVbCz4up86lAQ8= github.com/influxdata/influxdb v1.1.4 h1:VLf6ewC579GzI+JQCCZdU2Ijeb/bnf6L8u+ptZhKXVM= github.com/influxdata/influxdb v1.1.4/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= -github.com/influxdata/influxdb-client-go/v2 v2.3.0 h1:4YzLWRsPUoHuQYWDwPoybaJjN01e0/k0AIQO85ymCKI= -github.com/influxdata/influxdb-client-go/v2 v2.3.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= github.com/influxdata/influxdb-client-go/v2 v2.3.1-0.20210518120617-5d1fff431040 h1:MBLCfcSsUyFPDJp6T7EoHp/Ph3Jkrm4EuUKLD2rUWHg= github.com/influxdata/influxdb-client-go/v2 v2.3.1-0.20210518120617-5d1fff431040/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= github.com/influxdata/influxdb/v2 v2.0.1-alpha.10.0.20210507184756-dc72dc3f0c07 h1:ERHPVZofgMpPCS+vfWLOZk7UETeV/iVzsDhkEqkE8tY= @@ -691,7 +699,6 @@ github.com/influxdata/influxdb/v2 v2.0.1-alpha.10.0.20210507184756-dc72dc3f0c07/ github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/influxql v0.0.0-20180925231337-1cbfca8e56b6 h1:CFx+pP90q/qg3spoiZjf8donE4WpAdjeJfPOcoNqkWo= github.com/influxdata/influxql v0.0.0-20180925231337-1cbfca8e56b6/go.mod h1:KpVI7okXjK6PRi3Z5B+mtKZli+R1DnZgb3N+tzevNgo= -github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e h1:/o3vQtpWJhvnIbXley4/jwzzqNeigJK9z+LZcJZ9zfM= github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= @@ -742,6 +749,8 @@ github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQ github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/go-bindata v3.11.0+incompatible h1:RcC+GJNmrBHbGaOpQ9MBD8z22rdzlIm0esDRDkyxd4s= github.com/kevinburke/go-bindata v3.11.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= github.com/kimor79/gollectd v1.0.0 h1:6APoEersLJ2W0iwWj8C7COlienQ8XTWh8np4w0ggI8k= @@ -763,6 +772,8 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5 h1:hyz3dwM5QLc1Rfoz4FuWJQG5BN7tc6K1MndAUnGpQr4= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -770,7 +781,6 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -796,7 +806,6 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= @@ -812,7 +821,6 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.3 h1:a+kO+98RDGEfo6asOGMmpodZq4FNtnGP54yps8BzLR4= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= @@ -822,6 +830,8 @@ github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104 h1:d8RFOZ2IiFtFWBcKEH github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= @@ -1026,6 +1036,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -1051,6 +1062,7 @@ github.com/shurcooL/go v0.0.0-20170331015642-20b4b0a35211/go.mod h1:TDJrrUr11Vxr github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/markdownfmt v0.0.0-20170214213350-10aae0a270ab h1:3IXOl4NXdcTFFqBEjb4YESwjBVIz0bRdk4gq1OZBCbA= github.com/shurcooL/markdownfmt v0.0.0-20170214213350-10aae0a270ab/go.mod h1:VG1x2wwXWWypMlh60na9fO4qoO7SNkZbDyeZp+/Pt4g= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= @@ -1101,6 +1113,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -1127,19 +1140,20 @@ github.com/uber-go/tally v3.3.15+incompatible/go.mod h1:YDTIBxdXyOU/sCWilKB4bgyu github.com/uber/athenadriver v1.1.4 h1:k6k0RBeXjR7oZ8NO557MsRw3eX1cc/9B0GNx+W9eHiQ= github.com/uber/athenadriver v1.1.4/go.mod h1:tQjho4NzXw55LGfSZEcETuYydpY1vtmixUabHkC1K/E= github.com/uber/jaeger-client-go v2.16.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.28.0+incompatible h1:G4QSBfvPKvg5ZM2j9MrJFdfI5iSljY/WnJqOGFao6HI= github.com/uber/jaeger-client-go v2.28.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/uber/jaeger-lib v2.4.0+incompatible h1:fY7QsGQWiCt8pajv4r7JEvmATdCVaWxXbjwyYwsNaLQ= github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= @@ -1207,7 +1221,6 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.14.0 h1:/pduUoebOeeJzTDFuoMgC6nRkiasr1sBCIEorly7m4o= go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.1 h1:nYDKopTbvAPq/NrUVZwT15y2lpROBiLLyoRTbXOYWOo= go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= @@ -1377,6 +1390,7 @@ golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190530182044-ad28b68e88f1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1522,6 +1536,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201118003311-bd56c0adb394/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1534,11 +1549,11 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca h1:PupagGYwj8+I4ubCxcmcBRk3VlUWtTg5huQpZR9flmE= gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6 h1:4WsZyVtkthqrHTbDCJfiTs8IWNYE4uvsSDgaV6xpp+o= gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= @@ -1714,8 +1729,9 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3 h1:qTakTkI6ni6LFD5sBwwsdSO+AQqbSIxOauHTTQKZ/7o= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= istio.io/api v0.0.0-20190515205759-982e5c3888c6/go.mod h1:hhLFQmpHia8zgaM37vb2ml9iS5NfNfqZGRt1pS9aVEo= istio.io/pkg v0.0.0-20200606170016-70c5172b9cdf h1:iNpiPvg8fcQxebYPrd9Dhjvqd+SIF7OFH+1qp89/nHQ= istio.io/pkg v0.0.0-20200606170016-70c5172b9cdf/go.mod h1:EwvmercDF5DLCg5qUQlkM40xHwCxGoY1H/2LhI1p2YU= diff --git a/task/http/task_service.go b/task/http/task_service.go index 70189c1d4..84a0df168 100644 --- a/task/http/task_service.go +++ b/task/http/task_service.go @@ -134,6 +134,8 @@ func AddTaskServiceRoutes(handler *httpd.Handler, log *zap.Logger, svc taskmodel Method: method, Pattern: prefix, HandlerFunc: h.Handle, + NoJSON: true, // don't default to json headers (e.g. for DELETE which is 204) + NoGzip: true, // don't default to gzip, it has problems with openapi codegen and empty responses }) } }