22
23
// root handler for all cli commands
24
>
func cliHandler(c *cli.Context, handler func(c *cli.Context, logger log.Logger) error, logger log.Logger) {
main.go
25
>
quiet := c.GlobalBool(schema.CLIOptQuiet)
26
>
err := handler(c, logger)
27
>
if err != nil && !quiet {
28
osExit(1)
29
}
30
}
31
32
>
func buildCLIOptions() *cli.App {
main.go
33
>
34
>
app := cli.NewApp()
35
>
app.Name = "temporal-cassandra-tool"
36
>
app.Usage = "Command line tool for temporal cassandra operations"
37
>
app.Version = headers.ServerVersion
38
>
logger := log.NewCLILogger()
39
>
40
>
app.Flags = []cli.Flag{
41
>
cli.StringFlag{
42
>
Name: schema.CLIFlagEndpoint,
43
>
Value: environment.GetCassandraAddress(),
44
>
Usage: "hostname or ip address of cassandra host to connect to",
45
>
EnvVar: "CASSANDRA_HOST",
46
>
},
47
>
cli.IntFlag{
48
>
Name: schema.CLIFlagPort,
49
>
Value: environment.GetCassandraPort(),
50
>
Usage: "Port of cassandra host to connect to",
51
>
EnvVar: "CASSANDRA_PORT",
52
>
},
53
>
cli.StringFlag{
54
>
Name: schema.CLIFlagUser,
55
>
Value: "",
56
>
Usage: "User name used for authentication for connecting to cassandra host",
57
>
EnvVar: "CASSANDRA_USER",
58
>
},
59
>
cli.StringFlag{
60
>
Name: schema.CLIFlagPassword,
61
>
Value: "",
62
>
Usage: "Password used for authentication for connecting to cassandra host",
63
>
EnvVar: "CASSANDRA_PASSWORD",
64
>
},
65
>
cli.StringSliceFlag{
66
>
Name: schema.CLIFlagAllowedAuthenticators,
67
>
Value: nil,
68
>
Usage: "List of authenticators allowed to be used by the gocql client while connecting to the server.",
69
>
EnvVar: "CASSANDRA_ALLOWED_AUTHENTICATORS",
70
>
},
71
>
cli.IntFlag{
72
>
Name: schema.CLIFlagTimeout,
73
>
Value: defaultTimeout,
74
>
Usage: "request Timeout in seconds used for cql client",
75
>
EnvVar: "CASSANDRA_TIMEOUT",
76
>
},
77
>
cli.StringFlag{
78
>
Name: schema.CLIFlagKeyspace,
79
>
Value: "temporal",
80
>
Usage: "name of the cassandra Keyspace",
81
>
EnvVar: "CASSANDRA_KEYSPACE",
82
>
},
83
>
cli.StringFlag{
84
>
Name: schema.CLIFlagDatacenter,
85
>
Value: "",
86
>
Usage: "enable NetworkTopologyStrategy by providing datacenter name",
87
>
EnvVar: "CASSANDRA_DATACENTER",
88
>
},
89
>
cli.StringFlag{
90
>
Name: schema.CLIOptAddressTranslator,
91
>
Value: "",
92
>
Usage: "name of address translator for cassandra hosts",
93
>
EnvVar: "CASSANDRA_ADDRESS_TRANSLATOR",
94
>
},
95
>
cli.StringFlag{
96
>
Name: schema.CLIOptAddressTranslatorOptions,
97
>
Value: "",
98
>
Usage: "colon-separated list of key=value pairs as options for address translator",
99
>
EnvVar: "CASSANDRA_ADDRESS_TRANSLATOR_OPTIONS_CLI",
100
>
},
101
>
cli.BoolFlag{
102
>
Name: schema.CLIFlagQuiet,
103
>
Usage: "Don't set exit status to 1 on error",
104
>
},
105
>
cli.BoolFlag{
106
>
Name: schema.CLIFlagDisableInitialHostLookup,
107
>
Usage: "instructs gocql driver to only connect to the supplied hosts vs. attempting to lookup additional hosts via the system.peers table",
108
>
EnvVar: "CASSANDRA_DISABLE_INITIAL_HOST_LOOKUP",
109
>
},
110
>
cli.BoolFlag{
111
>
Name: schema.CLIFlagEnableTLS,
112
>
Usage: "enable TLS",
113
>
EnvVar: "CASSANDRA_ENABLE_TLS",
114
>
},
115
>
cli.StringFlag{
116
>
Name: schema.CLIFlagTLSCertFile,
117
>
Usage: "TLS cert file",
118
>
EnvVar: "CASSANDRA_TLS_CERT",
119
>
},
120
>
cli.StringFlag{
121
>
Name: schema.CLIFlagTLSKeyFile,
122
>
Usage: "TLS key file",
123
>
EnvVar: "CASSANDRA_TLS_KEY",
124
>
},
125
>
cli.StringFlag{
126
>
Name: schema.CLIFlagTLSCaFile,
127
>
Usage: "TLS CA file",
128
>
EnvVar: "CASSANDRA_TLS_CA",
129
>
},
130
>
cli.StringFlag{
131
>
Name: schema.CLIFlagTLSHostName,
132
>
Value: "",
133
>
Usage: "override for target server name",
134
>
EnvVar: "CASSANDRA_TLS_SERVER_NAME",
135
>
},
136
>
cli.BoolFlag{
137
>
Name: schema.CLIFlagTLSDisableHostVerification,
138
>
Usage: "disable tls host name verification (tls must be enabled)",
139
>
EnvVar: "CASSANDRA_TLS_DISABLE_HOST_VERIFICATION",
140
>
},
141
>
}
142
>
143
>
app.Commands = []cli.Command{
144
>
{
145
>
Name: "setup-schema",
146
>
Aliases: []string{"setup"},
147
>
Usage: "setup initial version of cassandra schema",
148
>
Flags: []cli.Flag{
149
>
cli.StringFlag{
150
>
Name: schema.CLIFlagVersion,
151
>
Usage: "initial version of the schema, cannot be used with disable-versioning",
152
>
},
153
>
cli.StringFlag{
154
>
Name: schema.CLIFlagSchemaFile,
155
>
Usage: "path to the .cql schema file; if un-specified, will just setup versioning tables",
156
>
},
157
>
cli.StringFlag{
158
>
Name: schema.CLIFlagSchemaName,
159
>
Usage: fmt.Sprintf("name of embedded schema directory with .cql file, one of: %v",
160
>
dbschemas.PathsByDB("cassandra")),
161
>
},
162
>
cli.BoolFlag{
163
>
Name: schema.CLIFlagDisableVersioning,
164
>
Usage: "disable setup of schema versioning",
165
>
},
166
>
cli.BoolFlag{
167
>
Name: schema.CLIFlagOverwrite,
168
>
Usage: "drop all existing tables before setting up new schema",
169
>
},
170
>
},
171
>
Action: func(c *cli.Context) {
172
cliHandler(c, setupSchema, logger)
173
},