in tools/cassandra/main.go [59:231]
func BuildCLIOptions() *cli.App {
app := cli.NewApp()
app.Name = "cadence-cassandra-tool"
app.Usage = "Command line tool for cadence cassandra operations"
app.Version = "0.0.1"
app.Flags = []cli.Flag{
cli.StringFlag{
Name: schema.CLIFlagEndpoint,
Value: "127.0.0.1",
Usage: "hostname or ip address of cassandra host to connect to",
EnvVar: "CASSANDRA_HOST",
},
cli.IntFlag{
Name: schema.CLIFlagPort,
Value: DefaultCassandraPort,
Usage: "Port of cassandra host to connect to",
EnvVar: "CASSANDRA_DB_PORT",
},
cli.StringFlag{
Name: schema.CLIFlagUser,
Value: "",
Usage: "User name used for authentication for connecting to cassandra host",
EnvVar: "CASSANDRA_USER",
},
cli.StringFlag{
Name: schema.CLIFlagPassword,
Value: "",
Usage: "Password used for authentication for connecting to cassandra host",
EnvVar: "CASSANDRA_PASSWORD",
},
cli.StringSliceFlag{
Name: schema.CLIFlagAllowedAuthenticators,
Value: &cli.StringSlice{""},
Usage: "Set allowed authenticators for servers with custom authenticators",
},
cli.IntFlag{
Name: schema.CLIFlagTimeout,
Value: DefaultTimeout,
Usage: "request Timeout in seconds used for cql client",
EnvVar: "CASSANDRA_TIMEOUT",
},
cli.IntFlag{
Name: schema.CLIOptConnectTimeout,
Value: DefaultConnectTimeout,
Usage: "Connection Timeout in seconds used for cql client",
},
cli.StringFlag{
Name: schema.CLIFlagKeyspace,
Value: "cadence",
Usage: "name of the cassandra Keyspace",
EnvVar: "CASSANDRA_KEYSPACE",
},
cli.BoolFlag{
Name: schema.CLIFlagQuiet,
Usage: "Don't set exit status to 1 on error",
},
cli.IntFlag{
Name: schema.CLIFlagProtoVersion,
Usage: "Protocol Version to connect to cassandra host",
EnvVar: "CASSANDRA_PROTO_VERSION",
},
cli.BoolFlag{
Name: schema.CLIFlagEnableTLS,
Usage: "enable TLS",
EnvVar: "CASSANDRA_ENABLE_TLS",
},
cli.StringFlag{
Name: schema.CLIFlagTLSCertFile,
Usage: "TLS cert file",
EnvVar: "CASSANDRA_TLS_CERT",
},
cli.StringFlag{
Name: schema.CLIFlagTLSKeyFile,
Usage: "TLS key file",
EnvVar: "CASSANDRA_TLS_KEY",
},
cli.StringFlag{
Name: schema.CLIFlagTLSCaFile,
Usage: "TLS CA file",
EnvVar: "CASSANDRA_TLS_CA",
},
cli.BoolFlag{
Name: schema.CLIFlagTLSEnableHostVerification,
Usage: "TLS host verification",
EnvVar: "CASSANDRA_TLS_VERIFY_HOST",
},
cli.StringFlag{
Name: schema.CLIFlagTLSServerName,
Usage: "TLS ServerName",
EnvVar: "CASSANDRA_TLS_SERVER_NAME",
},
}
app.Commands = []cli.Command{
{
Name: "setup-schema",
Aliases: []string{"setup"},
Usage: "setup initial version of cassandra schema",
Flags: []cli.Flag{
cli.StringFlag{
Name: schema.CLIFlagVersion,
Usage: "initial version of the schema, cannot be used with disable-versioning",
},
cli.StringFlag{
Name: schema.CLIFlagSchemaFile,
Usage: "path to the .cql schema file; if un-specified, will just setup versioning tables",
},
cli.BoolFlag{
Name: schema.CLIFlagDisableVersioning,
Usage: "disable setup of schema versioning",
},
cli.BoolFlag{
Name: schema.CLIFlagOverwrite,
Usage: "drop all existing tables before setting up new schema",
},
},
Action: func(c *cli.Context) {
cliHandler(c, setupSchema)
},
},
{
Name: "update-schema",
Aliases: []string{"update"},
Usage: "update cassandra schema to a specific version",
Flags: []cli.Flag{
cli.StringFlag{
Name: schema.CLIFlagTargetVersion,
Usage: "target version for the schema update, defaults to latest",
},
cli.StringFlag{
Name: schema.CLIFlagSchemaDir,
Usage: "path to directory containing versioned schema",
},
cli.BoolFlag{
Name: schema.CLIFlagDryrun,
Usage: "do a dryrun",
},
},
Action: func(c *cli.Context) {
cliHandler(c, updateSchema)
},
},
{
Name: "create-Keyspace",
Aliases: []string{"create"},
Usage: "creates a Keyspace with simple strategy. If datacenter is provided, will use network topology strategy",
Flags: []cli.Flag{
cli.StringFlag{
Name: schema.CLIFlagKeyspace,
Usage: "name of the Keyspace",
},
cli.StringFlag{
Name: schema.CLIFlagDatacenter,
Value: "",
Usage: "name of the cassandra datacenter, used when creating the keyspace with network topology strategy",
},
cli.IntFlag{
Name: schema.CLIFlagReplicationFactor,
Value: 1,
Usage: "replication factor for the Keyspace",
},
},
Action: func(c *cli.Context) {
cliHandler(c, createKeyspace)
},
},
}
return app
}