Skip to content

Commit

Permalink
podman compose: correctly accept --connection/--url
Browse files Browse the repository at this point in the history
Make the logic here much simpler, we already pass all the conection info
before so just use the parsed URL here.

Fixes #20943

Signed-off-by: Paul Holzinger <[email protected]>
  • Loading branch information
Luap99 committed Feb 27, 2024
1 parent 6d3571d commit 3cada04
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 15 deletions.
14 changes: 6 additions & 8 deletions cmd/podman/compose.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,8 @@ func composeDockerHost() (string, error) {
return registry.DefaultAPIAddress(), nil
}

// TODO need to add support for --connection and --url
connection, err := registry.PodmanConfig().ContainersConfDefaultsRO.GetConnection("", true)
if err != nil {
logrus.Info(err)
conf := registry.PodmanConfig()
if conf.URI == "" {
switch runtime.GOOS {
// If no default connection is set on Linux or FreeBSD,
// we just use the local socket by default - just as
Expand All @@ -126,20 +124,20 @@ func composeDockerHost() (string, error) {
}
}

parsedConnection, err := url.Parse(connection.URI)
parsedConnection, err := url.Parse(conf.URI)
if err != nil {
return "", fmt.Errorf("preparing connection to remote machine: %w", err)
}

// If the default connection does not point to a `podman
// machine`, we cannot use a local path and need to use SSH.
if !connection.IsMachine {
if !conf.MachineMode {
// Compose doesn't like paths, so we optimistically
// assume the presence of a Docker socket on the remote
// machine which is the case for podman machines.
return strings.TrimSuffix(connection.URI, parsedConnection.Path), nil
return strings.TrimSuffix(conf.URI, parsedConnection.Path), nil
}
uri, err := getMachineConn(connection, parsedConnection)
uri, err := getMachineConn(conf.URI, parsedConnection)
if err != nil {
return "", fmt.Errorf("get machine connection URI: %w", err)
}
Expand Down
6 changes: 2 additions & 4 deletions cmd/podman/compose_machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@ import (
"net/url"
"strconv"

"github.com/containers/common/pkg/config"
"github.com/containers/podman/v5/pkg/machine"
"github.com/containers/podman/v5/pkg/machine/define"
"github.com/containers/podman/v5/pkg/machine/provider"
"github.com/containers/podman/v5/pkg/machine/vmconfigs"
)

func getMachineConn(connection *config.Connection, parsedConnection *url.URL) (string, error) {
func getMachineConn(connectionURI string, parsedConnection *url.URL) (string, error) {
machineProvider, err := provider.Get()
if err != nil {
return "", fmt.Errorf("getting machine provider: %w", err)
Expand Down Expand Up @@ -64,6 +63,5 @@ func getMachineConn(connection *config.Connection, parsedConnection *url.URL) (s
// return "unix://" + info.ConnectionInfo.PodmanSocket.Path, nil
return "", nil
}

return "", fmt.Errorf("could not find a matching machine for connection %q", connection.URI)
return "", fmt.Errorf("could not find a matching machine for connection %q", connectionURI)
}
4 changes: 1 addition & 3 deletions cmd/podman/compose_machine_unsupported.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@ package main
import (
"errors"
"net/url"

"github.com/containers/common/pkg/config"
)

func getMachineConn(connection *config.Connection, parsedConnection *url.URL) (string, error) {
func getMachineConn(connection string, parsedConnection *url.URL) (string, error) {
return "", errors.New("podman machine not supported on this architecture")
}

0 comments on commit 3cada04

Please sign in to comment.