summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/podman/early_init_linux.go2
-rw-r--r--cmd/podman/root.go38
-rw-r--r--cmd/podman/system/connection/add.go2
-rw-r--r--completions/bash/podman24
-rw-r--r--docs/source/markdown/podman-remote.1.md2
-rw-r--r--docs/source/markdown/podman.1.md3
6 files changed, 55 insertions, 16 deletions
diff --git a/cmd/podman/early_init_linux.go b/cmd/podman/early_init_linux.go
index b43450a7f..8e2f1bd21 100644
--- a/cmd/podman/early_init_linux.go
+++ b/cmd/podman/early_init_linux.go
@@ -32,7 +32,7 @@ func setUMask() {
func earlyInitHook() {
if err := setRLimits(); err != nil {
- fmt.Fprint(os.Stderr, "Failed to set rlimits: "+err.Error())
+ fmt.Fprintf(os.Stderr, "Failed to set rlimits: %s\n", err.Error())
}
setUMask()
diff --git a/cmd/podman/root.go b/cmd/podman/root.go
index 1165f1b84..44e014906 100644
--- a/cmd/podman/root.go
+++ b/cmd/podman/root.go
@@ -111,6 +111,30 @@ func persistentPreRunE(cmd *cobra.Command, args []string) error {
cfg := registry.PodmanConfig()
+ // --connection is not as "special" as --remote so we can wait and process it here
+ var connErr error
+ conn := cmd.Root().LocalFlags().Lookup("connection")
+ if conn != nil && conn.Changed {
+ cfg.Engine.ActiveService = conn.Value.String()
+
+ var err error
+ cfg.URI, cfg.Identity, err = cfg.ActiveDestination()
+ if err != nil {
+ connErr = errors.Wrap(err, "failed to resolve active destination")
+ }
+
+ if err := cmd.Root().LocalFlags().Set("url", cfg.URI); err != nil {
+ connErr = errors.Wrap(err, "failed to override --url flag")
+ }
+
+ if err := cmd.Root().LocalFlags().Set("identity", cfg.Identity); err != nil {
+ connErr = errors.Wrap(err, "failed to override --identity flag")
+ }
+ }
+ if connErr != nil {
+ return connErr
+ }
+
// Prep the engines
if _, err := registry.NewImageEngine(cmd, args); err != nil {
return err
@@ -211,10 +235,11 @@ func loggingHook() {
func rootFlags(cmd *cobra.Command, opts *entities.PodmanConfig) {
cfg := opts.Config
- uri, ident := resolveDestination()
+ srv, uri, ident := resolveDestination()
lFlags := cmd.Flags()
lFlags.BoolVarP(&opts.Remote, "remote", "r", false, "Access remote Podman service (default false)")
+ lFlags.StringVarP(&opts.Engine.ActiveService, "connection", "c", srv, "Connection to use for remote Podman service")
lFlags.StringVar(&opts.URI, "url", uri, "URL to access Podman service (CONTAINER_HOST)")
lFlags.StringVar(&opts.Identity, "identity", ident, "path to SSH identity file, (CONTAINER_SSHKEY)")
@@ -264,23 +289,24 @@ func rootFlags(cmd *cobra.Command, opts *entities.PodmanConfig) {
}
}
-func resolveDestination() (string, string) {
+func resolveDestination() (string, string, string) {
if uri, found := os.LookupEnv("CONTAINER_HOST"); found {
var ident string
if v, found := os.LookupEnv("CONTAINER_SSHKEY"); found {
ident = v
}
- return uri, ident
+ return "", uri, ident
}
cfg, err := config.ReadCustomConfig()
if err != nil {
- return registry.DefaultAPIAddress(), ""
+ logrus.Warning(errors.Wrap(err, "unable to read local containers.conf"))
+ return "", registry.DefaultAPIAddress(), ""
}
uri, ident, err := cfg.ActiveDestination()
if err != nil {
- return registry.DefaultAPIAddress(), ""
+ return "", registry.DefaultAPIAddress(), ""
}
- return uri, ident
+ return cfg.Engine.ActiveService, uri, ident
}
diff --git a/cmd/podman/system/connection/add.go b/cmd/podman/system/connection/add.go
index 7522eb190..77a2edf8a 100644
--- a/cmd/podman/system/connection/add.go
+++ b/cmd/podman/system/connection/add.go
@@ -95,7 +95,7 @@ func add(cmd *cobra.Command, args []string) error {
uri.Host = net.JoinHostPort(uri.Hostname(), cmd.Flag("port").DefValue)
}
- if uri.Path == "" {
+ if uri.Path == "" || uri.Path == "/" {
if uri.Path, err = getUDS(cmd, uri); err != nil {
return errors.Wrapf(err, "failed to connect to %q", uri.String())
}
diff --git a/completions/bash/podman b/completions/bash/podman
index abcf54416..bd72649bb 100644
--- a/completions/bash/podman
+++ b/completions/bash/podman
@@ -3546,22 +3546,32 @@ _podman_volume() {
_podman_podman() {
local options_with_args="
- --config -c
+ --cni-config-dir
+ --conmon
+ --connection -c
+ --events-backend
+ --hooks-dir
+ --identity
+ --log-level
+ --namespace
+ --network-cmd-path
--root
--runroot
--storage-driver
--storage-opt
- --log-level
- --namespace
- "
+ --tmpdir
+ --runtime
+ --url
+ "
local boolean_options="
--help
- -h
+ --syslog
--version
+ -h
+ -r, --remote
-v
- --syslog
"
- commands="
+ commands="
attach
auto-update
build
diff --git a/docs/source/markdown/podman-remote.1.md b/docs/source/markdown/podman-remote.1.md
index 0d7be1e5d..23ccaf0e6 100644
--- a/docs/source/markdown/podman-remote.1.md
+++ b/docs/source/markdown/podman-remote.1.md
@@ -23,7 +23,7 @@ Podman-remote provides a local client interacting with a Podman backend node thr
## GLOBAL OPTIONS
-**--connection**=*name*
+**--connection**=*name*, **-c**
Remote connection name
diff --git a/docs/source/markdown/podman.1.md b/docs/source/markdown/podman.1.md
index 01a054ff4..7839ce8fb 100644
--- a/docs/source/markdown/podman.1.md
+++ b/docs/source/markdown/podman.1.md
@@ -31,6 +31,9 @@ Note: CGroup manager is not supported in rootless mode when using CGroups Versio
**--cni-config-dir**
Path of the configuration directory for CNI networks. (Default: `/etc/cni/net.d`)
+**--connection**, **-c**
+Connection to use for remote podman (Default connection is configured in `containers.conf`)
+
**--conmon**
Path of the conmon binary (Default path is configured in `containers.conf`)