aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2022-07-14 13:32:55 -0400
committerDaniel J Walsh <dwalsh@redhat.com>2022-07-18 10:41:00 -0400
commit18c0c19aa91a0cb0c493c415d5b2b4c3627ad5e9 (patch)
tree006f1ef9d3a9aa1f45d8b9eeff10346b839ff6a1
parent5201ea8e4176dfc6cfd2816e5cf1c3fa0adf9587 (diff)
downloadpodman-18c0c19aa91a0cb0c493c415d5b2b4c3627ad5e9.tar.gz
podman-18c0c19aa91a0cb0c493c415d5b2b4c3627ad5e9.tar.bz2
podman-18c0c19aa91a0cb0c493c415d5b2b4c3627ad5e9.zip
Add --host and -H as equivalent options to --url
Docker supports -H and --host for specify the listening socket. Podman should support them also in order to match the CLI. These will not be documented since Podman defaults to using the --url option. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
-rw-r--r--cmd/podman/registry/remote.go10
-rw-r--r--cmd/podman/root.go2
-rw-r--r--test/system/250-systemd.bats19
3 files changed, 26 insertions, 5 deletions
diff --git a/cmd/podman/registry/remote.go b/cmd/podman/registry/remote.go
index 181ef6b4a..afe32e0b9 100644
--- a/cmd/podman/registry/remote.go
+++ b/cmd/podman/registry/remote.go
@@ -31,11 +31,11 @@ func IsRemote() bool {
fs.SetInterspersed(false)
fs.BoolVarP(&remoteFromCLI.Value, "remote", "r", remote, "")
connectionFlagName := "connection"
- ignoredConnection := ""
- fs.StringVarP(&ignoredConnection, connectionFlagName, "c", "", "")
+ fs.StringP(connectionFlagName, "c", "", "")
+ hostFlagName := "host"
+ fs.StringP(hostFlagName, "H", "", "")
urlFlagName := "url"
- ignoredURL := ""
- fs.StringVar(&ignoredURL, urlFlagName, "", "")
+ fs.String(urlFlagName, "", "")
// The shell completion logic will call a command called "__complete" or "__completeNoDesc"
// This command will always be the second argument
@@ -46,7 +46,7 @@ func IsRemote() bool {
}
_ = fs.Parse(os.Args[start:])
// --connection or --url implies --remote
- remoteFromCLI.Value = remoteFromCLI.Value || fs.Changed(connectionFlagName) || fs.Changed(urlFlagName)
+ remoteFromCLI.Value = remoteFromCLI.Value || fs.Changed(connectionFlagName) || fs.Changed(urlFlagName) || fs.Changed(hostFlagName)
})
return podmanOptions.EngineMode == entities.TunnelMode || remoteFromCLI.Value
}
diff --git a/cmd/podman/root.go b/cmd/podman/root.go
index 0520a0784..48f8470be 100644
--- a/cmd/podman/root.go
+++ b/cmd/podman/root.go
@@ -345,6 +345,8 @@ func rootFlags(cmd *cobra.Command, opts *entities.PodmanConfig) {
urlFlagName := "url"
lFlags.StringVar(&opts.URI, urlFlagName, uri, "URL to access Podman service (CONTAINER_HOST)")
_ = cmd.RegisterFlagCompletionFunc(urlFlagName, completion.AutocompleteDefault)
+ lFlags.StringVarP(&opts.URI, "host", "H", uri, "Used for Docker compatibility")
+ _ = lFlags.MarkHidden("host")
// Context option added just for compatibility with DockerCLI.
lFlags.String("context", "default", "Name of the context to use to connect to the daemon (This flag is a NOOP and provided solely for scripting compatibility.)")
diff --git a/test/system/250-systemd.bats b/test/system/250-systemd.bats
index fc3c33975..70ae76eb8 100644
--- a/test/system/250-systemd.bats
+++ b/test/system/250-systemd.bats
@@ -400,4 +400,23 @@ EOF
run_podman rm -f -t 0 $cname
}
+@test "podman-system-service containers --host" {
+ skip_if_remote "N/A under podman-remote"
+
+ SERVICE_NAME=podman-service-$(random_string)
+ port=$(random_free_port)
+ URL=tcp://127.0.0.1:$port
+
+ systemd-run --unit=$SERVICE_NAME $PODMAN system service $URL --time=0
+ wait_for_port 127.0.0.1 $port
+
+ run_podman --host $URL run --rm $IMAGE true
+ run_podman -H $URL run --rm $IMAGE true
+
+ systemctl stop $SERVICE_NAME
+
+ # Make sure the option is actually connecting
+ run_podman 125 --host $URL run --rm $IMAGE true
+ assert "$output" =~ "Cannot connect to Podman.*connection refused"
+}
# vim: filetype=sh