diff options
Diffstat (limited to 'cmd/podman/remoteclientconfig')
-rw-r--r-- | cmd/podman/remoteclientconfig/config.go | 24 | ||||
-rw-r--r-- | cmd/podman/remoteclientconfig/config_darwin.go | 12 | ||||
-rw-r--r-- | cmd/podman/remoteclientconfig/config_linux.go | 17 | ||||
-rw-r--r-- | cmd/podman/remoteclientconfig/config_windows.go | 12 | ||||
-rw-r--r-- | cmd/podman/remoteclientconfig/configfile.go | 64 | ||||
-rw-r--r-- | cmd/podman/remoteclientconfig/configfile_test.go | 212 | ||||
-rw-r--r-- | cmd/podman/remoteclientconfig/errors.go | 14 |
7 files changed, 0 insertions, 355 deletions
diff --git a/cmd/podman/remoteclientconfig/config.go b/cmd/podman/remoteclientconfig/config.go deleted file mode 100644 index 3faa7954a..000000000 --- a/cmd/podman/remoteclientconfig/config.go +++ /dev/null @@ -1,24 +0,0 @@ -package remoteclientconfig - -const remoteConfigFileName string = "podman-remote.conf" - -// RemoteConfig describes the podman remote configuration file -type RemoteConfig struct { - Connections map[string]RemoteConnection -} - -// 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"` - IdentityFile string `toml:"identity_file"` - IgnoreHosts bool `toml:"ignore_hosts"` -} - -// GetConfigFilePath is a simple helper to export the configuration file's -// path based on arch, etc -func GetConfigFilePath() string { - return getConfigFilePath() -} diff --git a/cmd/podman/remoteclientconfig/config_darwin.go b/cmd/podman/remoteclientconfig/config_darwin.go deleted file mode 100644 index dddb217ac..000000000 --- a/cmd/podman/remoteclientconfig/config_darwin.go +++ /dev/null @@ -1,12 +0,0 @@ -package remoteclientconfig - -import ( - "path/filepath" - - "github.com/containers/storage/pkg/homedir" -) - -func getConfigFilePath() string { - homeDir := homedir.Get() - return filepath.Join(homeDir, ".config", "containers", remoteConfigFileName) -} diff --git a/cmd/podman/remoteclientconfig/config_linux.go b/cmd/podman/remoteclientconfig/config_linux.go deleted file mode 100644 index afcf73e6d..000000000 --- a/cmd/podman/remoteclientconfig/config_linux.go +++ /dev/null @@ -1,17 +0,0 @@ -package remoteclientconfig - -import ( - "os" - "path/filepath" - - "github.com/containers/storage/pkg/homedir" -) - -func getConfigFilePath() string { - path := os.Getenv("XDG_CONFIG_HOME") - if path == "" { - homeDir := homedir.Get() - path = filepath.Join(homeDir, ".config") - } - return filepath.Join(path, "containers", remoteConfigFileName) -} diff --git a/cmd/podman/remoteclientconfig/config_windows.go b/cmd/podman/remoteclientconfig/config_windows.go deleted file mode 100644 index 3a8f3bc7a..000000000 --- a/cmd/podman/remoteclientconfig/config_windows.go +++ /dev/null @@ -1,12 +0,0 @@ -package remoteclientconfig - -import ( - "path/filepath" - - "github.com/containers/storage/pkg/homedir" -) - -func getConfigFilePath() string { - homeDir := homedir.Get() - return filepath.Join(homeDir, "AppData", "podman", remoteConfigFileName) -} diff --git a/cmd/podman/remoteclientconfig/configfile.go b/cmd/podman/remoteclientconfig/configfile.go deleted file mode 100644 index 56a868733..000000000 --- a/cmd/podman/remoteclientconfig/configfile.go +++ /dev/null @@ -1,64 +0,0 @@ -package remoteclientconfig - -import ( - "io" - - "github.com/BurntSushi/toml" - "github.com/pkg/errors" -) - -// ReadRemoteConfig takes an io.Reader representing the remote configuration -// file and returns a remoteconfig -func ReadRemoteConfig(reader io.Reader) (*RemoteConfig, error) { - var remoteConfig RemoteConfig - // the configuration file does not exist - if reader == nil { - return &remoteConfig, ErrNoConfigationFile - } - _, err := toml.DecodeReader(reader, &remoteConfig) - if err != nil { - return nil, err - } - // We need to validate each remote connection has fields filled out - for name, conn := range remoteConfig.Connections { - if len(conn.Destination) < 1 { - return nil, errors.Errorf("connection %q has no destination defined", name) - } - } - return &remoteConfig, err -} - -// GetDefault returns the default RemoteConnection. If there is only one -// connection, we assume it is the default as well -func (r *RemoteConfig) GetDefault() (*RemoteConnection, error) { - if len(r.Connections) == 0 { - return nil, ErrNoDefinedConnections - } - for _, v := range r.Connections { - v := v - if len(r.Connections) == 1 { - // if there is only one defined connection, we assume it is - // the default whether tagged as such or not - return &v, nil - } - if v.IsDefault { - return &v, nil - } - } - return nil, ErrNoDefaultConnection -} - -// GetRemoteConnection "looks up" a remote connection by name and returns it in the -// form of a RemoteConnection -func (r *RemoteConfig) GetRemoteConnection(name string) (*RemoteConnection, error) { - if len(r.Connections) == 0 { - return nil, ErrNoDefinedConnections - } - for k, v := range r.Connections { - v := v - if k == name { - return &v, nil - } - } - return nil, errors.Wrap(ErrConnectionNotFound, name) -} diff --git a/cmd/podman/remoteclientconfig/configfile_test.go b/cmd/podman/remoteclientconfig/configfile_test.go deleted file mode 100644 index 4ad2c2100..000000000 --- a/cmd/podman/remoteclientconfig/configfile_test.go +++ /dev/null @@ -1,212 +0,0 @@ -package remoteclientconfig - -import ( - "io" - "reflect" - "strings" - "testing" -) - -var goodConfig = ` -[connections] - -[connections.homer] -destination = "192.168.1.1" -username = "myuser" -port = 22 -default = true - -[connections.bart] -destination = "foobar.com" -username = "root" -port = 22 -` -var noDest = ` -[connections] - -[connections.homer] -destination = "192.168.1.1" -username = "myuser" -default = true -port = 22 - -[connections.bart] -username = "root" -port = 22 -` - -var noUser = ` -[connections] - -[connections.homer] -destination = "192.168.1.1" -port = 22 -` - -func makeGoodResult() *RemoteConfig { - var goodConnections = make(map[string]RemoteConnection) - goodConnections["homer"] = RemoteConnection{ - Destination: "192.168.1.1", - Username: "myuser", - IsDefault: true, - Port: 22, - } - goodConnections["bart"] = RemoteConnection{ - Destination: "foobar.com", - Username: "root", - Port: 22, - } - var goodResult = RemoteConfig{ - Connections: goodConnections, - } - return &goodResult -} - -func makeNoUserResult() *RemoteConfig { - var goodConnections = make(map[string]RemoteConnection) - goodConnections["homer"] = RemoteConnection{ - Destination: "192.168.1.1", - Port: 22, - } - var goodResult = RemoteConfig{ - Connections: goodConnections, - } - return &goodResult -} - -func TestReadRemoteConfig(t *testing.T) { - type args struct { - reader io.Reader - } - tests := []struct { - name string - args args - want *RemoteConfig - wantErr bool - }{ - // good test should pass - {"good", args{reader: strings.NewReader(goodConfig)}, makeGoodResult(), false}, - // a connection with no destination is an error - {"nodest", args{reader: strings.NewReader(noDest)}, nil, true}, - // a connection with no user is OK - {"nouser", args{reader: strings.NewReader(noUser)}, makeNoUserResult(), false}, - } - for _, tt := range tests { - test := tt - t.Run(tt.name, func(t *testing.T) { - got, err := ReadRemoteConfig(test.args.reader) - if (err != nil) != test.wantErr { - t.Errorf("ReadRemoteConfig() error = %v, wantErr %v", err, test.wantErr) - return - } - if !reflect.DeepEqual(got, test.want) { - t.Errorf("ReadRemoteConfig() = %v, want %v", got, test.want) - } - }) - } -} - -func TestRemoteConfig_GetDefault(t *testing.T) { - good := make(map[string]RemoteConnection) - good["homer"] = RemoteConnection{ - Username: "myuser", - Destination: "192.168.1.1", - IsDefault: true, - } - good["bart"] = RemoteConnection{ - Username: "root", - Destination: "foobar.com", - } - noDefault := make(map[string]RemoteConnection) - noDefault["homer"] = RemoteConnection{ - Username: "myuser", - Destination: "192.168.1.1", - } - noDefault["bart"] = RemoteConnection{ - Username: "root", - Destination: "foobar.com", - } - single := make(map[string]RemoteConnection) - single["homer"] = RemoteConnection{ - Username: "myuser", - Destination: "192.168.1.1", - } - - none := make(map[string]RemoteConnection) - - type fields struct { - Connections map[string]RemoteConnection - } - tests := []struct { - name string - fields fields - want *RemoteConnection - 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}, 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 - {"single", fields{Connections: none}, nil, true}, - } - for _, tt := range tests { - test := tt - t.Run(test.name, func(t *testing.T) { - r := &RemoteConfig{ - Connections: test.fields.Connections, - } - got, err := r.GetDefault() - if (err != nil) != test.wantErr { - t.Errorf("RemoteConfig.GetDefault() error = %v, wantErr %v", err, test.wantErr) - return - } - if !reflect.DeepEqual(got, test.want) { - t.Errorf("RemoteConfig.GetDefault() = %v, want %v", got, test.want) - } - }) - } -} - -func TestRemoteConfig_GetRemoteConnection(t *testing.T) { - type fields struct { - Connections map[string]RemoteConnection - } - type args struct { - name string - } - - blank := make(map[string]RemoteConnection) - tests := []struct { - name string - fields fields - args args - want *RemoteConnection - wantErr bool - }{ - // Good connection - {"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}, 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 - {"none", fields{Connections: blank}, args{name: "foobar"}, nil, true}, - } - for _, tt := range tests { - test := tt - t.Run(test.name, func(t *testing.T) { - r := &RemoteConfig{ - Connections: test.fields.Connections, - } - got, err := r.GetRemoteConnection(test.args.name) - if (err != nil) != test.wantErr { - t.Errorf("RemoteConfig.GetRemoteConnection() error = %v, wantErr %v", err, test.wantErr) - return - } - if !reflect.DeepEqual(got, test.want) { - t.Errorf("RemoteConfig.GetRemoteConnection() = %v, want %v", got, test.want) - } - }) - } -} diff --git a/cmd/podman/remoteclientconfig/errors.go b/cmd/podman/remoteclientconfig/errors.go deleted file mode 100644 index 2689d3b49..000000000 --- a/cmd/podman/remoteclientconfig/errors.go +++ /dev/null @@ -1,14 +0,0 @@ -package remoteclientconfig - -import "errors" - -var ( - // ErrNoDefaultConnection no default connection is defined in the podman-remote.conf file - ErrNoDefaultConnection = errors.New("no default connection is defined") - // ErrNoDefinedConnections no connections are defined in the podman-remote.conf file - ErrNoDefinedConnections = errors.New("no remote connections have been defined") - // ErrConnectionNotFound unable to lookup connection by name - ErrConnectionNotFound = errors.New("remote connection not found by name") - // ErrNoConfigationFile no config file found - ErrNoConfigationFile = errors.New("no configuration file found") -) |