summaryrefslogtreecommitdiff
path: root/cmd/podman/root.go
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2020-08-18 06:47:19 -0400
committerJhon Honce <jhonce@redhat.com>2020-08-19 08:37:44 -0700
commiteb9e8fc558baf314b6f244af748e5a3e87356a57 (patch)
treeed93b65552fe6d9a52608e20e59b629d37d0e660 /cmd/podman/root.go
parentdd4e0da4241ac0b6deac3f5e07ea4eeb5819379e (diff)
downloadpodman-eb9e8fc558baf314b6f244af748e5a3e87356a57.tar.gz
podman-eb9e8fc558baf314b6f244af748e5a3e87356a57.tar.bz2
podman-eb9e8fc558baf314b6f244af748e5a3e87356a57.zip
Add support for --connection
* override --url and/or --identity fields from containers.conf * --connection flag has higher precedence than ActiveService from containers.conf. Which is set via podman system connection default * Add newline to error message printed on stderr * Added --connection to bash completion and documentation * Updated bindings to query server in case of no path or / Closes #jira-991 Fixes #7276 Signed-off-by: Daniel J Walsh <dwalsh@redhat.com> Signed-off-by: Jhon Honce <jhonce@redhat.com> Squashed commits to work around CI issue
Diffstat (limited to 'cmd/podman/root.go')
-rw-r--r--cmd/podman/root.go37
1 files changed, 31 insertions, 6 deletions
diff --git a/cmd/podman/root.go b/cmd/podman/root.go
index dd9c75ece..8f77e5893 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
@@ -226,10 +250,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)")
@@ -279,24 +304,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 {
logrus.Warning(errors.Wrap(err, "unable to read local containers.conf"))
- return registry.DefaultAPIAddress(), ""
+ 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
}