
* refactor: take clients out of internal * refactor: move stdio to pkg * Move internal/api to api * refactor: final changes for Kapacitor to access shared functionality * chore: regenerate mocks * fix: bad automated refactor * chore: extra formatting not caught by make fmt
99 lines
1.9 KiB
Go
99 lines
1.9 KiB
Go
package task
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/influxdata/influx-cli/v2/api"
|
|
"github.com/influxdata/influx-cli/v2/clients"
|
|
)
|
|
|
|
type Client struct {
|
|
clients.CLI
|
|
api.TasksApi
|
|
// AllowEmptyOrg will be useful for Kapacitor which doesn't use org / orgID
|
|
AllowEmptyOrg bool
|
|
}
|
|
|
|
type CreateParams struct {
|
|
clients.OrgParams
|
|
FluxQuery string
|
|
}
|
|
|
|
func (c Client) getOrg(params *clients.OrgParams) (string, error) {
|
|
if params.OrgID.Valid() {
|
|
return params.OrgID.String(), nil
|
|
}
|
|
if params.OrgName != "" {
|
|
return params.OrgName, nil
|
|
}
|
|
if c.ActiveConfig.Org != "" {
|
|
return c.ActiveConfig.Org, nil
|
|
}
|
|
if c.AllowEmptyOrg {
|
|
return "", nil
|
|
}
|
|
return "", clients.ErrMustSpecifyOrg
|
|
}
|
|
|
|
func (c Client) Create(ctx context.Context, params *CreateParams) error {
|
|
org, err := c.getOrg(¶ms.OrgParams)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
task, err := c.PostTasks(ctx).TaskCreateRequest(api.TaskCreateRequest{
|
|
Org: &org,
|
|
Flux: params.FluxQuery,
|
|
}).Execute()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return c.printTasks(taskPrintOpts{
|
|
task: &task,
|
|
})
|
|
}
|
|
|
|
type taskPrintOpts struct {
|
|
task *api.Task
|
|
tasks []*api.Task
|
|
}
|
|
|
|
func (c Client) printTasks(printOpts taskPrintOpts) error {
|
|
if c.PrintAsJSON {
|
|
var v interface{} = printOpts.tasks
|
|
if printOpts.task != nil {
|
|
v = printOpts.task
|
|
}
|
|
return c.PrintJSON(v)
|
|
}
|
|
|
|
headers := []string{
|
|
"ID",
|
|
"Name",
|
|
"Organization ID",
|
|
"Organization",
|
|
"Status",
|
|
"Every",
|
|
"Cron",
|
|
}
|
|
|
|
if printOpts.task != nil {
|
|
printOpts.tasks = append(printOpts.tasks, printOpts.task)
|
|
}
|
|
|
|
var rows []map[string]interface{}
|
|
for _, t := range printOpts.tasks {
|
|
row := map[string]interface{}{
|
|
"ID": t.Id,
|
|
"Name": t.Name,
|
|
"Organization ID": t.OrgID,
|
|
"Organization": t.Org,
|
|
"Status": t.Status,
|
|
"Every": t.Every,
|
|
"Cron": t.Cron,
|
|
}
|
|
rows = append(rows, row)
|
|
}
|
|
|
|
return c.PrintTable(headers, rows...)
|
|
}
|