summaryrefslogtreecommitdiff
path: root/cmd/podman/registry
diff options
context:
space:
mode:
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
}