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>
This commit is contained in:
Daniel J Walsh
2021-10-15 11:33:30 -04:00
parent 171f7b8975
commit 468e7c689b
3 changed files with 21 additions and 12 deletions

View File

@ -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

View File

@ -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 {

View File

@ -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