From 468e7c689b718229ed062b3daae9373f7459b6e2 Mon Sep 17 00:00:00 2001
From: Daniel J Walsh <dwalsh@redhat.com>
Date: Fri, 15 Oct 2021 11:33:30 -0400
Subject: [PATCH] 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 <dwalsh@redhat.com>
---
 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 b5da98bd47..c78930574d 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 734636646d..6da34050ed 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 2de96a01af..50735f5762 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