From 468e7c689b718229ed062b3daae9373f7459b6e2 Mon Sep 17 00:00:00 2001 From: Daniel J Walsh Date: Fri, 15 Oct 2021 11:33:30 -0400 Subject: Move CONTAINER_HOST and _CONNECTION to IsRemote Function Current code does not check early enough. Follow up to https://github.com/containers/podman/pull/11978 Signed-off-by: Daniel J Walsh --- cmd/podman/registry/remote.go | 8 +++++++- cmd/podman/root.go | 10 +--------- test/system/001-basic.bats | 15 +++++++++++++-- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/cmd/podman/registry/remote.go b/cmd/podman/registry/remote.go index b5da98bd4..c78930574 100644 --- a/cmd/podman/registry/remote.go +++ b/cmd/podman/registry/remote.go @@ -19,11 +19,17 @@ var remoteFromCLI = struct { // Use in init() functions as an initialization check func IsRemote() bool { remoteFromCLI.sync.Do(func() { + remote := false + if _, ok := os.LookupEnv("CONTAINER_HOST"); ok { + remote = true + } else if _, ok := os.LookupEnv("CONTAINER_CONNECTION"); ok { + remote = true + } fs := pflag.NewFlagSet("remote", pflag.ContinueOnError) fs.ParseErrorsWhitelist.UnknownFlags = true fs.Usage = func() {} fs.SetInterspersed(false) - fs.BoolVarP(&remoteFromCLI.Value, "remote", "r", false, "") + fs.BoolVarP(&remoteFromCLI.Value, "remote", "r", remote, "") // The shell completion logic will call a command called "__complete" or "__completeNoDesc" // This command will always be the second argument diff --git a/cmd/podman/root.go b/cmd/podman/root.go index 734636646..6da34050e 100644 --- a/cmd/podman/root.go +++ b/cmd/podman/root.go @@ -314,15 +314,7 @@ func rootFlags(cmd *cobra.Command, opts *entities.PodmanConfig) { lFlags.StringVar(&opts.Identity, identityFlagName, ident, "path to SSH identity file, (CONTAINER_SSHKEY)") _ = cmd.RegisterFlagCompletionFunc(identityFlagName, completion.AutocompleteDefault) - remote := false - if env, ok := os.LookupEnv("CONTAINER_HOST"); ok { - logrus.Infof("CONTAINER_HOST==%q, defaulting to '--remote=true'", env) - remote = true - } else if env, ok := os.LookupEnv("CONTAINER_CONNECTION"); ok { - logrus.Infof("CONTAINER_CONNECTION==%q, defaulting to '--remote=true'", env) - remote = true - } - lFlags.BoolVarP(&opts.Remote, "remote", "r", remote, "Access remote Podman service") + lFlags.BoolVarP(&opts.Remote, "remote", "r", registry.IsRemote(), "Access remote Podman service") pFlags := cmd.PersistentFlags() if registry.IsRemote() { if err := lFlags.MarkHidden("remote"); err != nil { diff --git a/test/system/001-basic.bats b/test/system/001-basic.bats index 2de96a01a..50735f576 100644 --- a/test/system/001-basic.bats +++ b/test/system/001-basic.bats @@ -98,8 +98,19 @@ function setup() { skip "only applicable on a local run" fi - CONTAINER_HOST=foobar run_podman --log-level=info --help - is "$output" ".*defaulting to '--remote=true'" "CONTAINER_HOST sets --remote true" + CONTAINER_HOST=foobar run_podman --help + # Should not have --remote flag + echo $output | grep -v -qw -- "--remote" + if [ $? -ne 0 ]; then + die "Should not have --remote flag" + fi + + CONTAINER_CONNECTION=foobar run_podman --help + # Should not have --remote flag + echo $output | grep -v -qw -- "--remote" + if [ $? -ne 0 ]; then + die "Should not have --remote flag" + fi } # Check that just calling "podman-remote" prints the usage message even -- cgit v1.2.3-54-g00ecf