diff --git a/pkg/kopia/cli/internal/opts/opts.go b/pkg/kopia/cli/internal/opts/opts.go index f5d07fc2ff..fb53f5d679 100644 --- a/pkg/kopia/cli/internal/opts/opts.go +++ b/pkg/kopia/cli/internal/opts/opts.go @@ -36,6 +36,11 @@ func ReadOnly(enabled bool) command.Applier { return command.NewOption("--readonly", enabled) } +// GRPC creates a new gRPC option. +func GRPC(enabled bool) command.Applier { + return command.NewToggleOption("--grpc", "--no-grpc", enabled) +} + // CheckForUpdates creates a new check for updates option. func CheckForUpdates(enabled bool) command.Applier { return command.NewToggleOption("--check-for-updates", "--no-check-for-updates", enabled) diff --git a/pkg/kopia/cli/internal/opts/opts_test.go b/pkg/kopia/cli/internal/opts/opts_test.go index 810aecf9bf..c0e955fd85 100644 --- a/pkg/kopia/cli/internal/opts/opts_test.go +++ b/pkg/kopia/cli/internal/opts/opts_test.go @@ -47,6 +47,11 @@ var _ = check.Suite(&test.ArgumentSuite{Cmd: "cmd", Arguments: []test.ArgumentTe Argument: command.NewArguments(opts.ReadOnly(true), opts.ReadOnly(false)), ExpectedCLI: []string{"cmd", "--readonly"}, }, + { + Name: "GRPC", + Argument: command.NewArguments(opts.GRPC(true), opts.GRPC(false)), + ExpectedCLI: []string{"cmd", "--grpc", "--no-grpc"}, + }, { Name: "CheckForUpdates", Argument: command.NewArguments(opts.CheckForUpdates(true), opts.CheckForUpdates(false)), diff --git a/pkg/kopia/cli/repository/repository_connect_server.go b/pkg/kopia/cli/repository/repository_connect_server.go index e9314cdb13..da4f2925b8 100644 --- a/pkg/kopia/cli/repository/repository_connect_server.go +++ b/pkg/kopia/cli/repository/repository_connect_server.go @@ -43,6 +43,7 @@ func ConnectServer(args ConnectServerArgs) (*safecli.Builder, error) { opts.Common(args.Common), cmdRepository, subcmdConnect, subcmdServer, opts.CheckForUpdates(false), + opts.GRPC(false), optReadOnly(args.ReadOnly), opts.Cache(args.Cache), optHostname(args.Hostname), diff --git a/pkg/kopia/cli/repository/repository_connect_server_test.go b/pkg/kopia/cli/repository/repository_connect_server_test.go index 25fdae08c8..b50a03b0f6 100644 --- a/pkg/kopia/cli/repository/repository_connect_server_test.go +++ b/pkg/kopia/cli/repository/repository_connect_server_test.go @@ -50,6 +50,7 @@ var _ = check.Suite(test.NewCommandSuite([]test.CommandTest{ "connect", "server", "--no-check-for-updates", + "--no-grpc", "--readonly", "--cache-directory=/tmp/cache.dir", "--content-cache-size-limit-mb=0", diff --git a/pkg/kopia/command/const.go b/pkg/kopia/command/const.go index f958a57e29..125e871975 100644 --- a/pkg/kopia/command/const.go +++ b/pkg/kopia/command/const.go @@ -39,10 +39,12 @@ const ( filterFlag = "--filter" globalFlag = "--global" jsonFlag = "--json" + legacyAPIFlag = "--legacy-api" logDirectoryFlag = "--log-dir" logLevelFlag = "--log-level" LogLevelError = "error" LogLevelInfo = "info" + noGrpcFlag = "--no-grpc" parallelFlag = "--parallel" passwordFlag = "--password" progressUpdateIntervalFlag = "--progress-update-interval" diff --git a/pkg/kopia/command/repository.go b/pkg/kopia/command/repository.go index c36b2611f8..8ce69f7dee 100644 --- a/pkg/kopia/command/repository.go +++ b/pkg/kopia/command/repository.go @@ -132,7 +132,7 @@ func RepositoryConnectServerCommand(cmdArgs RepositoryServerCommandArgs) []strin ConfigFilePath: cmdArgs.ConfigFilePath, LogDirectory: cmdArgs.LogDirectory, }) - args = args.AppendLoggable(repositorySubCommand, connectSubCommand, serverSubCommand, noCheckForUpdatesFlag) + args = args.AppendLoggable(repositorySubCommand, connectSubCommand, serverSubCommand, noCheckForUpdatesFlag, noGrpcFlag) if cmdArgs.ReadOnly { args = args.AppendLoggable(readOnlyFlag) diff --git a/pkg/kopia/command/repository_test.go b/pkg/kopia/command/repository_test.go index df8217fbe3..9166159db7 100644 --- a/pkg/kopia/command/repository_test.go +++ b/pkg/kopia/command/repository_test.go @@ -251,6 +251,7 @@ func (s *RepositoryUtilsSuite) TestRepositoryConnectServerUtil(c *check.C) { "connect", "server", "--no-check-for-updates", + "--no-grpc", "--readonly", "--cache-directory=/tmp/cache.dir", "--content-cache-size-limit-mb=0", diff --git a/pkg/kopia/command/server.go b/pkg/kopia/command/server.go index c328bc73e6..6beaabaf5f 100644 --- a/pkg/kopia/command/server.go +++ b/pkg/kopia/command/server.go @@ -45,6 +45,10 @@ func ServerStart(cmdArgs ServerStartCommandArgs) []string { args = args.AppendLoggableKV(serverControlUsernameFlag, cmdArgs.ServerUsername) args = args.AppendRedactedKV(serverControlPasswordFlag, cmdArgs.ServerPassword) + // TODO: Remove when GRPC support is added + args = args.AppendLoggable(noGrpcFlag) + args = args.AppendLoggable(legacyAPIFlag) + if cmdArgs.EnablePprof { args = args.AppendLoggable(enablePprof) } diff --git a/pkg/kopia/command/server_test.go b/pkg/kopia/command/server_test.go index 03f42d056c..b6881cae91 100644 --- a/pkg/kopia/command/server_test.go +++ b/pkg/kopia/command/server_test.go @@ -51,7 +51,7 @@ func (kServer *KopiaServerTestSuite) TestServerCommands(c *C) { } return ServerStart(args) }, - expectedLog: "bash -o errexit -c kopia --log-level=error --config-file=path/kopia.config --log-dir=cache/log server start --tls-generate-cert --address=a-server-address --tls-cert-file=/path/to/cert/tls.crt --tls-key-file=/path/to/key/tls.key --server-username=a-username@a-hostname --server-password=a-user-password --server-control-username=a-username@a-hostname --server-control-password=a-user-password --enable-pprof --metrics-listen-addr=a-server-address:51516 > /dev/null 2>&1 &", + expectedLog: "bash -o errexit -c kopia --log-level=error --config-file=path/kopia.config --log-dir=cache/log server start --tls-generate-cert --address=a-server-address --tls-cert-file=/path/to/cert/tls.crt --tls-key-file=/path/to/key/tls.key --server-username=a-username@a-hostname --server-password=a-user-password --server-control-username=a-username@a-hostname --server-control-password=a-user-password --no-grpc --legacy-api --enable-pprof --metrics-listen-addr=a-server-address:51516 > /dev/null 2>&1 &", }, { f: func() []string { @@ -67,7 +67,7 @@ func (kServer *KopiaServerTestSuite) TestServerCommands(c *C) { } return ServerStart(args) }, - expectedLog: "bash -o errexit -c kopia --log-level=error --config-file=path/kopia.config --log-dir=cache/log server start --tls-generate-cert --address=a-server-address --tls-cert-file=/path/to/cert/tls.crt --tls-key-file=/path/to/key/tls.key --server-username=a-username@a-hostname --server-password=a-user-password --server-control-username=a-username@a-hostname --server-control-password=a-user-password > /dev/null 2>&1 &", + expectedLog: "bash -o errexit -c kopia --log-level=error --config-file=path/kopia.config --log-dir=cache/log server start --tls-generate-cert --address=a-server-address --tls-cert-file=/path/to/cert/tls.crt --tls-key-file=/path/to/key/tls.key --server-username=a-username@a-hostname --server-password=a-user-password --server-control-username=a-username@a-hostname --server-control-password=a-user-password --no-grpc --legacy-api > /dev/null 2>&1 &", }, { f: func() []string { @@ -83,7 +83,7 @@ func (kServer *KopiaServerTestSuite) TestServerCommands(c *C) { } return ServerStart(args) }, - expectedLog: "bash -o errexit -c kopia --log-level=error --config-file=path/kopia.config --log-dir=cache/log server start --tls-generate-cert --address=a-server-address --tls-cert-file=/path/to/cert/tls.crt --tls-key-file=/path/to/key/tls.key --server-username=a-username@a-hostname --server-password=a-user-password --server-control-username=a-username@a-hostname --server-control-password=a-user-password", + expectedLog: "bash -o errexit -c kopia --log-level=error --config-file=path/kopia.config --log-dir=cache/log server start --tls-generate-cert --address=a-server-address --tls-cert-file=/path/to/cert/tls.crt --tls-key-file=/path/to/key/tls.key --server-username=a-username@a-hostname --server-password=a-user-password --server-control-username=a-username@a-hostname --server-control-password=a-user-password --no-grpc --legacy-api", }, { f: func() []string { @@ -99,7 +99,7 @@ func (kServer *KopiaServerTestSuite) TestServerCommands(c *C) { } return ServerStart(args) }, - expectedLog: "bash -o errexit -c kopia --log-level=error --config-file=path/kopia.config --log-dir=cache/log server start --address=a-server-address --tls-cert-file=/path/to/cert/tls.crt --tls-key-file=/path/to/key/tls.key --server-username=a-username@a-hostname --server-password=a-user-password --server-control-username=a-username@a-hostname --server-control-password=a-user-password > /dev/null 2>&1 &", + expectedLog: "bash -o errexit -c kopia --log-level=error --config-file=path/kopia.config --log-dir=cache/log server start --address=a-server-address --tls-cert-file=/path/to/cert/tls.crt --tls-key-file=/path/to/key/tls.key --server-username=a-username@a-hostname --server-password=a-user-password --server-control-username=a-username@a-hostname --server-control-password=a-user-password --no-grpc --legacy-api > /dev/null 2>&1 &", }, { f: func() []string {