summaryrefslogtreecommitdiff
path: root/cmd/podman/registry
diff options
context:
space:
mode:
authorJhon Honce <jhonce@redhat.com>2020-06-22 14:29:04 -0700
committerMatthew Heon <matthew.heon@pm.me>2020-07-06 14:14:53 -0400
commit8dd26289bf516dcfbd9aaad6d2dd65c9f84380c8 (patch)
treea60eae9ebbd9536d322a707bea2c760f9d94abf3 /cmd/podman/registry
parentde6a8609a81472b5be786c7404576905ebb981fb (diff)
downloadpodman-8dd26289bf516dcfbd9aaad6d2dd65c9f84380c8.tar.gz
podman-8dd26289bf516dcfbd9aaad6d2dd65c9f84380c8.tar.bz2
podman-8dd26289bf516dcfbd9aaad6d2dd65c9f84380c8.zip
Fixes --remote flag issues
* --remote, --url and --identity are now anchored to podman command. Subcommands should no longer have issues * TraverseChildren now set to V1 expectations * Latest flag now has helper function. Now has consistent usage. * IsRemote() uses cobra parser to determin if --remote is given * Moved validation functions from parser pkg to validate pkg * Fixes #6598 Fixes #6704 Signed-off-by: Jhon Honce <jhonce@redhat.com> <MH: Fixed import issues> Signed-off-by: Matt Heon <matthew.heon@pm.me>
Diffstat (limited to 'cmd/podman/registry')
-rw-r--r--cmd/podman/registry/config.go16
-rw-r--r--cmd/podman/registry/remote.go19
2 files changed, 19 insertions, 16 deletions
diff --git a/cmd/podman/registry/config.go b/cmd/podman/registry/config.go
index 85bf5f944..75e67b35d 100644
--- a/cmd/podman/registry/config.go
+++ b/cmd/podman/registry/config.go
@@ -5,7 +5,6 @@ import (
"os"
"path/filepath"
"runtime"
- "strings"
"sync"
"github.com/containers/common/pkg/config"
@@ -45,7 +44,7 @@ func newPodmanConfig() {
case "linux":
// Some linux clients might only be compiled without ABI
// support (e.g., podman-remote).
- if abiSupport {
+ if abiSupport && !remoteOverride {
mode = entities.ABIMode
} else {
mode = entities.TunnelMode
@@ -55,19 +54,6 @@ func newPodmanConfig() {
os.Exit(1)
}
- // Check if need to fallback to the tunnel mode if --remote is used.
- if abiSupport && mode == entities.ABIMode {
- // cobra.Execute() may not be called yet, so we peek at os.Args.
- for _, v := range os.Args {
- // Prefix checking works because of how default EngineMode's
- // have been defined.
- if strings.HasPrefix(v, "--remote") {
- mode = entities.TunnelMode
- break
- }
- }
- }
-
cfg, err := config.NewConfig("")
if err != nil {
fmt.Fprint(os.Stderr, "Failed to obtain podman configuration: "+err.Error())
diff --git a/cmd/podman/registry/remote.go b/cmd/podman/registry/remote.go
index 3040c4c2a..006a1b900 100644
--- a/cmd/podman/registry/remote.go
+++ b/cmd/podman/registry/remote.go
@@ -1,9 +1,26 @@
package registry
import (
+ "os"
+ "sync"
+
"github.com/containers/libpod/v2/pkg/domain/entities"
+ "github.com/spf13/cobra"
+)
+
+var (
+ // Was --remote given on command line
+ remoteOverride bool
+ remoteSync sync.Once
)
+// IsRemote returns true if podman was built to run remote
+// Use in init() functions as a initialization check
func IsRemote() bool {
- return podmanOptions.EngineMode == entities.TunnelMode
+ remoteSync.Do(func() {
+ remote := &cobra.Command{}
+ remote.Flags().BoolVarP(&remoteOverride, "remote", "r", false, "")
+ _ = remote.ParseFlags(os.Args)
+ })
+ return podmanOptions.EngineMode == entities.TunnelMode || remoteOverride
}