* add vtctlclient help to endtoend data

Signed-off-by: Andrew Mason <andrew@planetscale.com>

* [cmd/vtctlclient] Migrate to pflag

Closes #11281.

Signed-off-by: Andrew Mason <andrew@planetscale.com>
This commit is contained in:
Andrew Mason 2022-09-23 12:36:41 -04:00 коммит произвёл GitHub
Родитель 0c305d0269
Коммит d194a57570
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 65 добавлений и 17 удалений

Просмотреть файл

@ -19,7 +19,6 @@ package main
import (
"context"
"errors"
"flag"
"fmt"
"os"
"strings"
@ -31,21 +30,27 @@ import (
"vitess.io/vitess/go/trace"
"vitess.io/vitess/go/vt/log"
"vitess.io/vitess/go/vt/logutil"
"vitess.io/vitess/go/vt/servenv"
"vitess.io/vitess/go/vt/vtctl/vtctlclient"
logutilpb "vitess.io/vitess/go/vt/proto/logutil"
// Include deprecation warnings for soon-to-be-unsupported flag invocations.
_flag "vitess.io/vitess/go/internal/flag"
)
// The default values used by these flags cannot be taken from wrangler and
// actionnode modules, as we don't want to depend on them at all.
var (
actionTimeout = flag.Duration("action_timeout", time.Hour, "timeout for the total command")
server = flag.String("server", "", "server to use for connection")
actionTimeout = time.Hour
server string
)
func init() {
servenv.OnParse(func(fs *pflag.FlagSet) {
fs.DurationVar(&actionTimeout, "action_timeout", actionTimeout, "timeout for the total command")
fs.StringVar(&server, "server", server, "server to use for connection")
})
}
// checkDeprecations runs quick and dirty checks to see whether any command or flag are deprecated.
// For any depracated command or flag, the function issues a warning message.
// this function will change on each Vitess version. Each depracation message should only last a version.
@ -72,9 +77,7 @@ func checkDeprecations(args []string) {
func main() {
defer exit.Recover()
fs := pflag.NewFlagSet("vtctlclient", pflag.ExitOnError)
log.RegisterFlags(fs)
_flag.Parse(fs)
args := servenv.ParseFlagsWithArgs("vtctlclient")
closer := trace.StartTracing("vtctlclient")
defer trace.LogErrorsWhenClosing(closer)
@ -82,28 +85,26 @@ func main() {
logger := logutil.NewConsoleLogger()
// We can't do much without a --server flag
if *server == "" {
if server == "" {
log.Error(errors.New("please specify --server <vtctld_host:vtctld_port> to specify the vtctld server to connect to"))
os.Exit(1)
}
ctx, cancel := context.WithTimeout(context.Background(), *actionTimeout)
ctx, cancel := context.WithTimeout(context.Background(), actionTimeout)
defer cancel()
checkDeprecations(flag.Args())
checkDeprecations(args)
err := vtctlclient.RunCommandAndWait(
ctx, *server, _flag.Args(),
func(e *logutilpb.Event) {
logutil.LogEvent(logger, e)
})
err := vtctlclient.RunCommandAndWait(ctx, server, args, func(e *logutilpb.Event) {
logutil.LogEvent(logger, e)
})
if err != nil {
if strings.Contains(err.Error(), "flag: help requested") {
return
}
errStr := strings.Replace(err.Error(), "remote error: ", "", -1)
fmt.Printf("%s Error: %s\n", _flag.Arg(0), errStr)
fmt.Printf("%s Error: %s\n", args[0], errStr)
log.Error(err)
os.Exit(1)
}

Просмотреть файл

@ -0,0 +1,47 @@
Usage of vtctlclient:
--action_timeout duration timeout for the total command (default 1h0m0s)
--alsologtostderr log to standard error as well as files
--datadog-agent-host string host to send spans to. if empty, no tracing will be done
--datadog-agent-port string port to send spans to. if empty, no tracing will be done
--emit_stats If set, emit stats to push-based monitoring and stats backends
--grpc_auth_static_client_creds string when using grpc_static_auth in the server, this file provides the credentials to use to authenticate with server
--grpc_compression string Which protocol to use for compressing gRPC. Default: nothing. Supported: snappy
--grpc_enable_tracing Enable gRPC tracing.
--grpc_initial_conn_window_size int gRPC initial connection window size
--grpc_initial_window_size int gRPC initial window size
--grpc_keepalive_time duration After a duration of this time, if the client doesn't see any activity, it pings the server to see if the transport is still alive. (default 10s)
--grpc_keepalive_timeout duration After having pinged for keepalive check, the client waits for a duration of Timeout and if no activity is seen even after that the connection is closed. (default 10s)
--grpc_max_message_size int Maximum allowed RPC message size. Larger messages will be rejected by gRPC with the error 'exceeding the max size'. (default 16777216)
--grpc_prometheus Enable gRPC monitoring with Prometheus.
-h, --help display usage and exit
--jaeger-agent-host string host and port to send spans to. if empty, no tracing will be done
--keep_logs duration keep logs for this long (using ctime) (zero to keep forever)
--keep_logs_by_mtime duration keep logs for this long (using mtime) (zero to keep forever)
--log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0)
--log_dir string If non-empty, write log files in this directory
--log_err_stacks log stack traces for errors
--log_rotate_max_size uint size in bytes at which logs are rotated (glog.MaxSize) (default 1887436800)
--logtostderr log to standard error instead of files
--pprof strings enable profiling
--purge_logs_interval duration how often try to remove old logs (default 1h0m0s)
--security_policy string the name of a registered security policy to use for controlling access to URLs - empty means allow all for anyone (built-in policies: deny-all, read-only)
--server string server to use for connection
--stats_backend string The name of the registered push-based monitoring/stats backend to use
--stats_combine_dimensions string List of dimensions to be combined into a single "all" value in exported stats vars
--stats_common_tags string Comma-separated list of common tags for the stats backend. It provides both label and values. Example: label1:value1,label2:value2
--stats_drop_variables string Variables to be dropped from the list of exported variables.
--stats_emit_period duration Interval between emitting stats to all registered backends (default 1m0s)
--stderrthreshold severity logs at or above this threshold go to stderr (default 1)
--tracer string tracing service to use (default "noop")
--tracing-enable-logging whether to enable logging in the tracing service
--tracing-sampling-rate float sampling rate for the probabilistic jaeger sampler (default 0.1)
--tracing-sampling-type string sampling strategy to use for jaeger. possible values are 'const', 'probabilistic', 'rateLimiting', or 'remote' (default "const")
-v, --v Level log level for V logs
--version print binary version
--vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging
--vtctl_client_protocol string the protocol to use to talk to the vtctl server (default "grpc")
--vtctld_grpc_ca string the server ca to use to validate servers when connecting
--vtctld_grpc_cert string the cert to use to connect
--vtctld_grpc_crl string the server crl to use to validate server certificates when connecting
--vtctld_grpc_key string the key to use to connect
--vtctld_grpc_server_name string the server name to use to validate server certificate