223 lines
5.9 KiB
Go
223 lines
5.9 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/influxdata/influx-cli/v2/api"
|
|
"github.com/influxdata/influx-cli/v2/clients/bucket"
|
|
"github.com/influxdata/influx-cli/v2/pkg/cli/middleware"
|
|
"github.com/urfave/cli"
|
|
)
|
|
|
|
func newBucketCmd() cli.Command {
|
|
return cli.Command{
|
|
Name: "bucket",
|
|
Usage: "Bucket management commands",
|
|
Subcommands: []cli.Command{
|
|
newBucketCreateCmd(),
|
|
newBucketDeleteCmd(),
|
|
newBucketListCmd(),
|
|
newBucketUpdateCmd(),
|
|
},
|
|
}
|
|
}
|
|
|
|
func newBucketCreateCmd() cli.Command {
|
|
params := bucket.BucketsCreateParams{
|
|
SchemaType: api.SCHEMATYPE_IMPLICIT,
|
|
}
|
|
return cli.Command{
|
|
Name: "create",
|
|
Usage: "Create bucket",
|
|
Before: middleware.WithBeforeFns(
|
|
withCli(),
|
|
withApi(true),
|
|
),
|
|
Flags: append(
|
|
commonFlags(),
|
|
&cli.StringFlag{
|
|
Name: "name, n",
|
|
Usage: "New bucket name",
|
|
EnvVar: "INFLUX_BUCKET_NAME",
|
|
Destination: ¶ms.Name,
|
|
Required: true,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "description, d",
|
|
Usage: "Description of the bucket that will be created",
|
|
Destination: ¶ms.Description,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "retention, r",
|
|
Usage: "Duration bucket will retain data, or 0 for infinite",
|
|
Destination: ¶ms.Retention,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "shard-group-duration",
|
|
Usage: "Shard group duration used internally by the storage engine",
|
|
Destination: ¶ms.ShardGroupDuration,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "org-id",
|
|
Usage: "The ID of the organization",
|
|
EnvVar: "INFLUX_ORG_ID",
|
|
Destination: ¶ms.OrgID,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "org, o",
|
|
Usage: "The name of the organization",
|
|
EnvVar: "INFLUX_ORG",
|
|
Destination: ¶ms.OrgName,
|
|
},
|
|
&cli.GenericFlag{
|
|
Name: "schema-type",
|
|
Usage: "The schema type (implicit, explicit)",
|
|
Value: ¶ms.SchemaType,
|
|
},
|
|
),
|
|
Action: func(ctx *cli.Context) error {
|
|
api := getAPI(ctx)
|
|
client := bucket.Client{
|
|
CLI: getCLI(ctx),
|
|
BucketsApi: api.BucketsApi,
|
|
OrganizationsApi: api.OrganizationsApi,
|
|
}
|
|
return client.Create(getContext(ctx), ¶ms)
|
|
},
|
|
}
|
|
}
|
|
|
|
func newBucketDeleteCmd() cli.Command {
|
|
var params bucket.BucketsDeleteParams
|
|
return cli.Command{
|
|
Name: "delete",
|
|
Usage: "Delete bucket",
|
|
Before: middleware.WithBeforeFns(withCli(), withApi(true)),
|
|
Flags: append(
|
|
commonFlags(),
|
|
&cli.StringFlag{
|
|
Name: "id, i",
|
|
Usage: "The bucket ID, required if name isn't provided",
|
|
Destination: ¶ms.ID,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "name, n",
|
|
Usage: "The bucket name, org or org-id will be required by choosing this",
|
|
Destination: ¶ms.Name,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "org-id",
|
|
Usage: "The ID of the organization",
|
|
EnvVar: "INFLUX_ORG_ID",
|
|
Destination: ¶ms.OrgID,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "org, o",
|
|
Usage: "The name of the organization",
|
|
EnvVar: "INFLUX_ORG",
|
|
Destination: ¶ms.OrgName,
|
|
},
|
|
),
|
|
Action: func(ctx *cli.Context) error {
|
|
api := getAPI(ctx)
|
|
client := bucket.Client{
|
|
CLI: getCLI(ctx),
|
|
BucketsApi: api.BucketsApi,
|
|
OrganizationsApi: api.OrganizationsApi,
|
|
}
|
|
return client.Delete(getContext(ctx), ¶ms)
|
|
},
|
|
}
|
|
}
|
|
|
|
func newBucketListCmd() cli.Command {
|
|
var params bucket.BucketsListParams
|
|
return cli.Command{
|
|
Name: "list",
|
|
Usage: "List buckets",
|
|
Aliases: []string{"find", "ls"},
|
|
Before: middleware.WithBeforeFns(withCli(), withApi(true)),
|
|
Flags: append(
|
|
commonFlags(),
|
|
&cli.StringFlag{
|
|
Name: "id, i",
|
|
Usage: "The bucket ID, required if name isn't provided",
|
|
Destination: ¶ms.ID,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "name, n",
|
|
Usage: "The bucket name, org or org-id will be required by choosing this",
|
|
Destination: ¶ms.Name,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "org-id",
|
|
Usage: "The ID of the organization",
|
|
EnvVar: "INFLUX_ORG_ID",
|
|
Destination: ¶ms.OrgID,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "org, o",
|
|
Usage: "The name of the organization",
|
|
EnvVar: "INFLUX_ORG",
|
|
Destination: ¶ms.OrgName,
|
|
},
|
|
),
|
|
Action: func(ctx *cli.Context) error {
|
|
api := getAPI(ctx)
|
|
client := bucket.Client{
|
|
CLI: getCLI(ctx),
|
|
BucketsApi: api.BucketsApi,
|
|
OrganizationsApi: api.OrganizationsApi,
|
|
}
|
|
return client.List(getContext(ctx), ¶ms)
|
|
},
|
|
}
|
|
}
|
|
|
|
func newBucketUpdateCmd() cli.Command {
|
|
var params bucket.BucketsUpdateParams
|
|
return cli.Command{
|
|
Name: "update",
|
|
Usage: "Update bucket",
|
|
Aliases: []string{"find", "ls"},
|
|
Before: middleware.WithBeforeFns(withCli(), withApi(true)),
|
|
Flags: append(
|
|
commonFlags(),
|
|
&cli.StringFlag{
|
|
Name: "name, n",
|
|
Usage: "New name to set on the bucket",
|
|
EnvVar: "INFLUX_BUCKET_NAME",
|
|
Destination: ¶ms.Name,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "id, i",
|
|
Usage: "The bucket ID",
|
|
Required: true,
|
|
Destination: ¶ms.ID,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "description, d",
|
|
Usage: "New description to set on the bucket",
|
|
Destination: ¶ms.Description,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "retention, r",
|
|
Usage: "New retention duration to set on the bucket, or 0 for infinite",
|
|
Destination: ¶ms.Retention,
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "shard-group-duration",
|
|
Usage: "New shard group duration to set on the bucket, or 0 to have the server calculate a value",
|
|
Destination: ¶ms.ShardGroupDuration,
|
|
},
|
|
),
|
|
Action: func(ctx *cli.Context) error {
|
|
api := getAPI(ctx)
|
|
client := bucket.Client{
|
|
CLI: getCLI(ctx),
|
|
BucketsApi: api.BucketsApi,
|
|
OrganizationsApi: api.OrganizationsApi,
|
|
}
|
|
return client.Update(getContext(ctx), ¶ms)
|
|
},
|
|
}
|
|
}
|