From 32b2856e7a6d5a5e6c51b58a223be00828258981 Mon Sep 17 00:00:00 2001
From: Anders F Björklund <anders.f.bjorklund@gmail.com>
Date: Tue, 1 Oct 2019 19:38:58 +0200
Subject: Allow changing IdentityFile and to IgnoreHosts
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
---
 cmd/podman/cliconfig/config.go                   |  2 ++
 cmd/podman/main_remote.go                        |  2 ++
 cmd/podman/remoteclientconfig/config.go          | 10 ++++++----
 cmd/podman/remoteclientconfig/configfile_test.go |  6 +++---
 4 files changed, 13 insertions(+), 7 deletions(-)

(limited to 'cmd')

diff --git a/cmd/podman/cliconfig/config.go b/cmd/podman/cliconfig/config.go
index b8796f9b3..5b5225f02 100644
--- a/cmd/podman/cliconfig/config.go
+++ b/cmd/podman/cliconfig/config.go
@@ -42,6 +42,8 @@ type MainFlags struct {
 	ConnectionName       string
 	RemoteConfigFilePath string
 	Port                 int
+	IdentityFile         string
+	IgnoreHosts          bool
 }
 
 type AttachValues struct {
diff --git a/cmd/podman/main_remote.go b/cmd/podman/main_remote.go
index f617422e6..569a5c006 100644
--- a/cmd/podman/main_remote.go
+++ b/cmd/podman/main_remote.go
@@ -21,6 +21,8 @@ func init() {
 	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.RemoteUserName, "username", username, "username on the remote host")
 	rootCmd.PersistentFlags().IntVar(&MainGlobalOpts.Port, "port", 22, "port on remote host")
 	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.RemoteHost, "remote-host", "", "remote host")
+	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.IdentityFile, "identity-file", "", "identity-file")
+	rootCmd.PersistentFlags().BoolVar(&MainGlobalOpts.IgnoreHosts, "ignore-hosts", false, "ignore hosts")
 	// TODO maybe we allow the altering of this for bridge connections?
 	// rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.VarlinkAddress, "varlink-address", adapter.DefaultAddress, "address of the varlink socket")
 	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.LogLevel, "log-level", "error", "Log messages above specified level: debug, info, warn, error, fatal or panic. Logged to ~/.config/containers/podman.log")
diff --git a/cmd/podman/remoteclientconfig/config.go b/cmd/podman/remoteclientconfig/config.go
index 13880a868..3faa7954a 100644
--- a/cmd/podman/remoteclientconfig/config.go
+++ b/cmd/podman/remoteclientconfig/config.go
@@ -9,10 +9,12 @@ type RemoteConfig struct {
 
 // RemoteConnection describes the attributes of a podman-remote endpoint
 type RemoteConnection struct {
-	Destination string `toml:"destination"`
-	Username    string `toml:"username"`
-	IsDefault   bool   `toml:"default"`
-	Port        int    `toml:"port"`
+	Destination  string `toml:"destination"`
+	Username     string `toml:"username"`
+	IsDefault    bool   `toml:"default"`
+	Port         int    `toml:"port"`
+	IdentityFile string `toml:"identity_file"`
+	IgnoreHosts  bool   `toml:"ignore_hosts"`
 }
 
 // GetConfigFilePath is a simple helper to export the configuration file's
diff --git a/cmd/podman/remoteclientconfig/configfile_test.go b/cmd/podman/remoteclientconfig/configfile_test.go
index ea2224ea7..0bcac29a8 100644
--- a/cmd/podman/remoteclientconfig/configfile_test.go
+++ b/cmd/podman/remoteclientconfig/configfile_test.go
@@ -143,7 +143,7 @@ func TestRemoteConfig_GetDefault(t *testing.T) {
 		wantErr bool
 	}{
 		// A good toml should return the connection that is marked isDefault
-		{"good", fields{Connections: makeGoodResult().Connections}, &RemoteConnection{"192.168.1.1", "myuser", true, 22}, false},
+		{"good", fields{Connections: makeGoodResult().Connections}, &RemoteConnection{"192.168.1.1", "myuser", true, 22, "", false}, false},
 		// If nothing is marked as isDefault and there is more than one connection, error should occur
 		{"nodefault", fields{Connections: noDefault}, nil, true},
 		// if nothing is marked as isDefault but there is only one connection, the one connection is considered the default
@@ -183,9 +183,9 @@ func TestRemoteConfig_GetRemoteConnection(t *testing.T) {
 		wantErr bool
 	}{
 		// Good connection
-		{"goodhomer", fields{Connections: makeGoodResult().Connections}, args{name: "homer"}, &RemoteConnection{"192.168.1.1", "myuser", true, 22}, false},
+		{"goodhomer", fields{Connections: makeGoodResult().Connections}, args{name: "homer"}, &RemoteConnection{"192.168.1.1", "myuser", true, 22, "", false}, false},
 		// Good connection
-		{"goodbart", fields{Connections: makeGoodResult().Connections}, args{name: "bart"}, &RemoteConnection{"foobar.com", "root", false, 22}, false},
+		{"goodbart", fields{Connections: makeGoodResult().Connections}, args{name: "bart"}, &RemoteConnection{"foobar.com", "root", false, 22, "", false}, false},
 		// Getting an unknown connection should result in error
 		{"noexist", fields{Connections: makeGoodResult().Connections}, args{name: "foobar"}, nil, true},
 		// Getting a connection when there are none should result in an error
-- 
cgit v1.2.3-54-g00ecf


From 23ae7604c9301f8e1ab1dbc125db6b7b724a8db2 Mon Sep 17 00:00:00 2001
From: Anders F Björklund <anders.f.bjorklund@gmail.com>
Date: Tue, 1 Oct 2019 19:42:14 +0200
Subject: Allow setting default parameters with env vars
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
---
 cmd/podman/main_remote.go | 32 +++++++++++++++++++++++++-------
 1 file changed, 25 insertions(+), 7 deletions(-)

(limited to 'cmd')

diff --git a/cmd/podman/main_remote.go b/cmd/podman/main_remote.go
index 569a5c006..623f4098e 100644
--- a/cmd/podman/main_remote.go
+++ b/cmd/podman/main_remote.go
@@ -3,9 +3,11 @@
 package main
 
 import (
-	"github.com/pkg/errors"
+	"os"
 	"os/user"
+	"strconv"
 
+	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
 
@@ -13,16 +15,32 @@ const remote = true
 
 func init() {
 	var username string
-	if curruser, err := user.Current(); err == nil {
-		username = curruser.Username
+	if username = os.Getenv("PODMAN_USER"); username == "" {
+		if curruser, err := user.Current(); err == nil {
+			username = curruser.Username
+		}
+	}
+	host := os.Getenv("PODMAN_HOST")
+	port := 22
+	if portstr := os.Getenv("PODMAN_PORT"); portstr != "" {
+		if p, err := strconv.Atoi(portstr); err == nil {
+			port = p
+		}
+	}
+	key := os.Getenv("PODMAN_IDENTITY_FILE")
+	ignore := false
+	if ignorestr := os.Getenv("PODMAN_IGNORE_HOSTS"); ignorestr != "" {
+		if b, err := strconv.ParseBool(ignorestr); err == nil {
+			ignore = b
+		}
 	}
 	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.ConnectionName, "connection", "", "remote connection name")
 	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.RemoteConfigFilePath, "remote-config-path", "", "alternate path for configuration file")
 	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.RemoteUserName, "username", username, "username on the remote host")
-	rootCmd.PersistentFlags().IntVar(&MainGlobalOpts.Port, "port", 22, "port on remote host")
-	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.RemoteHost, "remote-host", "", "remote host")
-	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.IdentityFile, "identity-file", "", "identity-file")
-	rootCmd.PersistentFlags().BoolVar(&MainGlobalOpts.IgnoreHosts, "ignore-hosts", false, "ignore hosts")
+	rootCmd.PersistentFlags().IntVar(&MainGlobalOpts.Port, "port", port, "port on remote host")
+	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.RemoteHost, "remote-host", host, "remote host")
+	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.IdentityFile, "identity-file", key, "identity-file")
+	rootCmd.PersistentFlags().BoolVar(&MainGlobalOpts.IgnoreHosts, "ignore-hosts", ignore, "ignore hosts")
 	// TODO maybe we allow the altering of this for bridge connections?
 	// rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.VarlinkAddress, "varlink-address", adapter.DefaultAddress, "address of the varlink socket")
 	rootCmd.PersistentFlags().StringVar(&MainGlobalOpts.LogLevel, "log-level", "error", "Log messages above specified level: debug, info, warn, error, fatal or panic. Logged to ~/.config/containers/podman.log")
-- 
cgit v1.2.3-54-g00ecf